Neio Notes Share knowledge and experience with you

11Oct/094

Password Reader for CuteFTP Pro 8【含工具下载】

平时都直接用CuteFTP来管理各个服务器,竟然把密码都忘记掉了。痛定思痛,确定从CuteFTP中把密码挖出来。

CuteFTP Pro中,密码显示都是*号,即使用里面的站点管理器(Site Manager)导出,用的也是星号。用Spy++查看密码框,是空的,也就是说那个框只能用来输入。

那么,要找出密码,可以有三种方法:

一、抓包

用Wireshark(即Ethereal)等工具,可以简单地根据FTP协议分析出来。这个方法以前用过,但似乎对于SSL等连接,这种方法变得不切实际。

二、分析内存

用OllyDbg等工具,调试分析之,然后从内存中找出来。此方法费时费力,每次找都要花一番功夫。

三、读取CuteFTP Pro的文件

我们知道CuteFTP Pro的密码都保存在sm.dat文件中。那么只要分析出sm.dat的结构和密码存储的方法,就可以读出来了。

分析过程不多说,只说结果:

在sm.dat文件中,对于每个站点,都用相同的结构。每个站点前是 0B 00 00 00,接下去是“记录名”,然后是几条类型数据,再下去就是站点,用户名,密码等。(其他不累赘了)密码当然不是用明文,而是加密过的。加密后的密码和原文长度一致,是一一对应的。下面是我分析出其规则后写的解密算法:

uint L = code & 0xF;
L = L > 7 ? L - 8 : L + 8;
uint H = ((code & (byte)0xF0)) - 0x80;
H = H > 0x30 ? H - 0x40 : H + 0x40;
byte PCode = (byte)(L + H);

随手写了个CuteFTP Pro 的密码读取器,用MPL协议发布
CuteFTP Pro Password Reader
上面是编译后的文件下载地址。

注意:运行这个程序需要.NET Framework 2.0 或以上版本

想对其扩展的朋友,可以联系我拿源码。