破解flashFXP密码全过程

2008年12月4日 xmxoxo

flashFXP是一个FTP客户端,无意中看了一下密码的保存方式,是存在一个INI格式中,
突发奇想来破解一下:

先改几个密码保存一下,把密文记下来
'------------------------------------------------------------------

明码 密码
a 968E
a 73AD
a A671
a A57E
a 3EE6
a 4BD5

b 1902
c 23FF
d 9D78

aa 0F092B
aa BE59FB
aa 9C84A4

aaa DC47E978
1 410B

'------------------------------------------------------------------
规则猜想:
FTP的密码在发送的时候是需要用明码的,所以
flashFXP软件在保存密码的时候肯定用的是可逆的算法;

猜想:
密文(P)为明码字串(S)长度+1,再乘2
猜想是这样加密的:
先随机生成一个byte数R,然后用这个字节
数作为key对明码进行加密,因为要还原,
肯定要用到xor运算,得到的结果称为T
将K和T都转为字节表示,最终结果连接为:RT
假设加密方法为F,则加密方式为:
F(S,R) = T
P=RT

以下假设密码的头2个字母为随机数K
a 968E
可猜想得到:
a的ascii为61,则
F(61,96) = 8E
其它几组为:
F(61,73) = AD
F(61,A6) = 71
F(61,A5) = 7E
F(61,3E) = E6
F(61,4B) = D5

以下几组
b 1902
c 23FF
d 9D78
推出:
F(62,19) = 02
F(63,23) = FF
F(64,9D) = 78

汇总:
'------------------------------------------------------------------
F(61,96) = 8E
F(61,73) = AD
F(61,A6) = 71
F(61,A5) = 7E
F(61,3E) = E6
F(61,4B) = D5
F(62,19) = 02
F(63,23) = FF
F(64,9D) = 78

'------------------------------------------------------------------

第二点:
以下几组对照:
aa 0F092B
aa BE59FB
aa 9C84A4
aaa DC47E978

根据这三组可以猜想,加密的方式也可能是:
逐字节循环加密,因为字母相同时,不
同位置上的密码是不同的,但是随机数只有一个,
很可能是前一位算出来的密文,来做为下一位计算的随机码;
T(0)=K
F(S(i),T(i-1))=T(i)

当然,也可能是:
使用一个固定的密码序列K,然后
像RC4那样逐位移动,循环加密,密文的第
一个字符则加入到函数F中,这种方式相对于循环加密
来说更简单些,只要找出固定的密码序列就可以了;

先来处理这种简单的方式,如果使用的是循环加密的方式,
对于一位的密码,也是没有循环的,相当于是简单方式了;

因为加入了固定密码序列K,
假设密码序列第一位为K1,
对应上面单个字母a的明文和密文,
则函数变成:

F(61,96,K1) = 8E
F(61,73,K1) = AD
F(61,A6,K1) = 71
F(61,A5,K1) = 7E
F(61,3E,K1) = E6
F(61,4B,K1) = D5

上面猜想算法中肯定用到了异或,所以先XOR一下:

61 xor 8E = EF
61 xor AD = CC
61 xor 71 = 10
61 xor 7E = 1F
61 xor E6 = 87
61 xor D5 = B4

加入随机码进行比较关系:

EF 96
CC 73
10 A6
1F A5
87 3E
B4 4B

这两列数据之间应该得出一个共同的定值,这个定值就是K1

先进行加法试算,
EF + 96 = 85
CC + 73 = 3F
10 + A6 = BD
1F + A5 = C4
87 + 3E = C5
B4 + 4B = FF

结果不对,换成减法:

EF - 96 = 59
CC - 73 = 59
10 - A6 = 6A
1F - A5 = 7A
87 - 3E = 49
B4 - 4B = 69

咦,有两个数相同,后面几个不同,
第三个式子跟上面两个有个区别,
被减数小于减数,将10向高位借1来试试:

EF - 96 = 59
CC - 73 = 59
10 - A6 = 69
1F - A5 = 79
87 - 3E = 49
B4 - 4B = 69

得到的结果高位不同但是低位已经相同,
'------------------------------------------------------------------

整理一下刚才用到的函数:
F(S,R,K1) = T
S:明文,R:随机码,K1:密码第一位,T:密文
假设加密函数为:
F(S,R,K1) = (S xor K1 ) - R = T
上面将
F(61,96,K1) = 8E
计算:61 xor 8E = EF
是将S xor T

换一下,由结果倒推回去,
假设FN是F的逆函数
FN(T,R,K1) = (T + R)  xor K1 = S

多设几种可能
J=T+R
N= J xor S

M=T-R
Q=M xor s

Z=S xor T

X=S+R
X1=X xor T

Y=S-R
Y1 = Y xor T

凡是大于FF的都减去FF

S R T K1 Z  J  N  M  Q  X  X1  Y Y1
61 96 8E ? EF  25  44  F7  96  F7  79  CA 44
61 73 AD ? CC  20  41  3A  5B  D4  79  ED 40
61 A6 71 ? 10  18  79  ff  ff  8  79
61 A5 7E ? 1F  24  45      7  79
61 3E E6 ? 87          9F  79
61 4B D5 ? B4          AC  79

计算了三个后发现了X,X1这两列,后面只计算这两列
得出:
验证函数是:
(S+R) xor T=K
即加密函数是:
F(S,R,K) = (S+R) xor K = T

密码第一位是79,即:"y"

'------------------------------------------------------------------
找二位数的明文来查第二位密码:
aa 0F092B
aa BE59FB
aa 9C84A4

先验证一下第一位有没错:

X=S+R
X1=X xor T

S R T K1 X X1
61 0F 09 79 70 79
61 BE 59 79 20 79
61 9C 84 79 FD 79

OK,第一位正确了,按道理第二位应该是:
K2=(S+R) xor T2
或者是循环加密,即R用的是上一位的密文T1:
K*=(S+T1) xor T2
两种同时算一下:
S R T1 T2 K2 K*
61 0F 09 2B 5B 41
61 BE 59 FB DB 41
61 9C 84 A4 59 41

OK,K*的值全部相同,第二位密码是:41,即"A"

剩下密码的可以写一个程序来求了,
先去软件里设置一个超级长的密码,
不知道密码有多长,搞一个100个a的密码:
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

得到的密文是:
948CAC3DA87090C51FE4030C0B1E090D0620D35286D05A8EBA709580D24DEF62F52DCF055EDB78B175A470B67096A560F461AA39CF5DFA2AB86385D5011838AD37FC1B14130611151E38CB4A9E37F0679D92B76FE33CDC0D58C364F16BA84FD85CCF47CF59
长度是202,正好是100*2+2

得到密文后,用上面的公式求:
K(n)=(S+T(n-1)) xor T(n)
其中S=61
简单用VB写一段程序来求吧:

Public Sub Main()
    Const T = "948CAC3DA87090C51FE4030C0B1E090D0620D35286D05A8EBA709580D24DEF62F52DCF055EDB78B175A470B67096A560F461AA39CF5DFA2AB86385D5011838AD37FC1B14130611151E38CB4A9E37F0679D92B76FE33CDC0D58C364F16BA84FD85CCF47CF59"
    Dim Key As String
   
    Dim Tn As String
    Dim Tp As String
    Dim S As Integer
    Dim R As Integer
   
    Dim i As Integer
    Dim X As Integer
   
    S = &H61
    Tp = Left(T, 2)
   
    For i = 1 To 100
        Tn = Mid(T, i * 2 + 1, 2)
        X = S + CInt("&H" & Tp)
        If X > 255 Then X = X - 255
       
        Key = Key & Chr(X Xor CInt("&H" & Tn))
        Tp = Tn
    Next
   
    Debug.Print Key
End Sub
'------------------------------------------------------------------
运行后得到以下结果:
yA36zA48dEhfrvghGRg57h5UlDv3yA36zA48dEhfrvghGRg57h5UlDv3yA36zA48dEhfrvghGRg5 h5UlDv3yA36zA48dEhfrvgh

寻找一下最开始的5个字母,即可得到密码重复出现的位置,
最后得到密码:
yA36zA48dEhfrvghGRg57h5UlDv3

剩下的工作就是还原出加密和解密的函数和程序了,
上网找了一下,靠,原来网上早就有了!
对照了一下,是一样的,那就不写了.

破解flashFXP密码全过程相关推荐

  1. 【转】利用kali破解wifi密码全过程

    原文地址:http://www.secbox.cn/hacker/wireless/4877.html?utm_source=tuicool&utm_medium=referral 作者:黑色 ...

  2. kali系统破解WPA密码实战

    上次发布过一篇在OSX系统破解WIFI密码的教程, 这次发布一篇使用kali破解wifi的教程 WEP和WPA/PSK的区别 WPA/PSK的加密方式相对于WEP的加密方式更加安全,WEP是一种老式的 ...

  3. Freebsd 下用 sshguard 防止暴力破解 ssh 密码

    2019独角兽企业重金招聘Python工程师标准>>> 在 Freebsd 控制台或用 dmesg -a 查看系统消息的时候会发现类似于下面的大量信息,这是因为有人在尝试暴力破解 S ...

  4. centos7之破解root密码

    1.开机后在内核上敲击"e" 2.在UTF-8的后面添加rd.break,然后敲击ctrl+x 3.这时候就进入到了系统的紧急救援模式,依次输入以下命令 #mount -o rem ...

  5. 使用Rainbow tables和Ophcrack的组合工具破解Windows密码

    本文为寻找人生的起点 (http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 . 从前面的两篇文章(得到WindowsXP管理员权限的有效方法 ,John/bkhiv ...

  6. 元计算:《元计算破解生命密码》听课笔记

    元计算:<元计算破解生命密码>听课笔记 目录 元计算背景 元计算技术 元计算系统 <元计算破解生命密码>听课笔记 问题提出 元计算理论引入 元计算意义 元计算背景 元计算技术 ...

  7. Mac系统安装Aircrack-ng破解wifi密码(2)

    我们上一篇文章说过如何通过Aircrack-ng, 破解使用WPA/PSK加密方式的路由密码, 这一篇介绍的是使用Aircrack-ng破解使用WEP加密方式的路由密码: WEP和WPA/PSK的区别 ...

  8. 20220208--CTF MISC-- BUUCTF--二维码 1--binwalk-john-(工具的使用:分析文件/暴力破解压缩包密码)

    MISC-- BUUCTF–二维码 1 这题首先下载文件,解压: 微信扫描了一下这个二维码,得到: secret is here 打开kali ,首先用binwalk分析该文件 命令: binkwal ...

  9. 攻击 | 破解windows7密码(利用PE系统破解XP密码)

    攻击 | 破解windows7密码(利用PE系统破解XP密码) 引子-破解win7密码 背景-虚拟环境 原理 实现过程 引子-破解win7密码 在学校安排的网络空间安全实训过程中,了解到破解windo ...

最新文章

  1. 线段树 ---- 牛客多校2021多校第6场 H Hopping Rabbit 扫描线
  2. js事件详解二:鼠标和滚轮事件
  3. redis desktop manager download
  4. 【AI初识境】深度学习模型中的Normalization,你懂了多少?
  5. 如何看透借款人的隐形负债?
  6. 并行程序设计模式--Master-Worker模式
  7. java list转数组_java list 转数组
  8. 192.168.8.1手机登陆_192.168.8.1登录入口
  9. NLP学习—7.CNN与TextCNN
  10. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)
  11. 在word、ppt中输入矩阵转置符号
  12. 北京大学计算机语言学,北京大学计算语言学教育部重点实验室
  13. 通信专业顶刊_通信类权威SCI期刊(部分)
  14. 教你如何弹好吉他-合理的安排你的练习时间
  15. java鬼吹灯搬山法杖_倒斗四大门派卸岭、搬山、摸金、发丘,《鬼吹灯》为何不讲发丘...
  16. 今日头条引流脚本,微商引流工具
  17. Unity3D资源管理架构
  18. AD将原理图转换成彩色或者黑白PDF,主要是依据页面设计中的色彩设置黑白或者彩色打印。打印机中的高级设置或者属性设置中的色彩黑白或者彩色不起作用(亲自测试)
  19. ToDolist简述
  20. 浅谈动态内存分配的意义

热门文章

  1. Xshell连接不上虚拟机
  2. flac转换成mp3,4种方法教会你
  3. 关于前端页面在IE浏览器下无法显示的问题
  4. 万能遥控程序c语言,单片机解码万能红外遥控器的C51程序
  5. FastDFS分布式文件服务器部署与运用
  6. mediaDevices-getUserMedia-getDisplayMedia
  7. 大数据—Hive(一)_ 基本概念
  8. 二维码生成器在线制作带logo二维码
  9. 【论文阅读】Structured Knowledge Distillation for Semantic Segmentation
  10. VMWare 虚拟网络连接设置与主机设置不一致导致虚拟机无法连接网络的解决办法