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 数据服务