python DreamUnweaver:从Adobe Dreamweaver * .ste导出中提取和解密密码和FTP信息。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python DreamUnweaver:从Adobe Dreamweaver * .ste导出中提取和解密密码和FTP信息。相关的知识,希望对你有一定的参考价值。

#!/usr/bin/python

"""
DreamUnweaver: Extracts and decrypts password and
FTP info from Adobe Dreamweaver *.ste export.

Author: Daniel Smith (https://github.com/ifnull/)

Usage:
    dreamunweaver.py decrypt --ste <argument>

Options:
    -h --help       Show this screen.
    --version       Show version.
    --ste=<ste>     Specify the full ste path.

"""

from docopt import docopt
import xml.etree.ElementTree as ET
import pprint


def main():
    arguments = docopt(__doc__, version='DreamUnweaver 0.1')

    if arguments['decrypt'] is True:
        ste = arguments['--ste']
        extract(ste)


def extract(ste):
    """
    Parses STE file and grabs server data.
    """
    data = []
    tree = ET.parse(ste)
    site = tree.getroot()
    pp = pprint.PrettyPrinter(indent=4)

    for server in site.findall('serverlist/server'):
        info = {
            'host': server.attrib['host'],
            'accesstype': server.attrib['accesstype'],
            'user': server.attrib['user'],
            'pw': decrypt(server.attrib['pw']),
            'usepasv': server.attrib['usepasv'],
            'useSFTP': server.attrib['useSFTP'],
            'useFTPS': server.attrib['useFTPS'],
            'useImplicitFTPS': server.attrib['useImplicitFTPS'],
            'remoteroot': server.attrib['remoteroot'],
            'weburl': server.attrib['weburl']
        }

        pp.pprint(info)
        data.append(info)

    return data


def decrypt(pw):
    """
    Decrypts password.
    """
    pw_length = len(pw)
    password = []

    if pw_length is 0:
        return ""

    for i in range(0, pw_length / 2):
        chex = int(pw[(i * 2):(i * 2) + 2], 16)
        if chex <= 0xFFFF:
            password.append(chr(chex - i))
        elif chex <= 0x10FFFF:
            chex = chex - 0x10000
            password.append(chr(0xD800 | (chex >> 10)) + chr(0xDC00 |
                            (chex & 0x3FF) - i))
        else:
            raise Exception("Something failed.")
    return "".join(password)

if __name__ == "__main__":
    main()

以上是关于python DreamUnweaver:从Adobe Dreamweaver * .ste导出中提取和解密密码和FTP信息。的主要内容,如果未能解决你的问题,请参考以下文章

ADO 简介

如何将代码从DAO重写为ADO?

无法通过 api 从 ADO 下载 zip 文件

使用 ADO 和 SQL 加速从表中查询

如何使用 ADO.NET 从数据库中获取对象?

从 android 2.1 使用 ado.net 数据服务