异或密码分析工具

xortool的Python项目详细描述


xor tool.py
==xor分析工具:


-猜测密钥长度(基于相等字符数)
-猜测密钥(基于最常用字符的知识)


异或分析:
-猜测密钥长度(基于相等字符数)
-猜测密钥(基于最常用字符的知识)


用法:
xortool[-x][-m max-len][-f][-t charset][file]
xortool[-x][-l len][-c char-b-o][-f][-t charset][file]
xortool[-x][-m max-len-l len][-c char-b-o][-f][-t charset][file]
xortool[-h--help]
xortool--version

--max key len=max-len要探测的最大密钥长度[默认值:65]
-c char,--char=char最常用字符(一个字符或十六进制代码)
-b——brute chars brute强制所有可能最常用的字符
-o——brute可打印,与-b相同,但只检查可打印字符
-f——基于筛选输出筛选输出在字符集
-t charset--text charset=charset目标文本字符集[默认值:可打印]
-h--帮助显示此帮助

注意:
文本字符集:
*预定义集:可打印,base32,base64
*自定义集:
-a:小写字符
-a:大写字符
-1:数字
-!:特殊字符
-*:可打印字符

xortool/xortool xor
测试$xor-f/bin/ls-s"密钥">;二进制代码


测试$xortool二进制代码
最可能的密钥长度:
2:5.0%
5:8.7%
8:4.9%
10:15.4%
12:4.8%
15:8.5%
18:4.8%
20:15.1%
25:8.4%
30:14.9%
密钥长度可以是5*n
可能需要char来猜测密钥!

00是二进制文件中最常见的字节
测试$xortool binary-xored-l 10-c 00

1个长度为10的可能密钥:
secret-key


(没有更好的主意)
测试$md5sum xortool_out/0_secret_key/bin/ls
29942e290876703169e1b614d0b4340a xortool_out/0_secret_key
29942e290876703169e1b614d0b4340a/bin/ls
```

最常用的方法是只传递加密文件和最常用的字符(二进制文件通常为00,文本文件为20)-将自动选择长度:

`` bash
测试$xortool tool\uxored-c 20
最可能的密钥长度:
2:5.6%
5:7.8%
8:6.0%
10:11.7%
12:5.6%
15:7.6%
20:19.8%
25:7.8%
28:5.7%
30:11.4%
密钥长度可以是5*n
1个长度为20的可能密钥:
另一个s3cret\xdd密钥
````

密钥比默认的32个限制长:

`` bash
测试$xortool ls-xored-c 00-m 64
最可能的密钥长度:
3:3.3%
6:3.3%
9:3.3%
11:7.0%
22:6.9%
24:3.3%
27:3.2%
33:18.4%
44:6.8%
55:6.7%
密钥长度可以是3*n
1个长度为33的可能密钥:
真正长的s3cr3t k3y…填充
```

因此,如果自动解密失败,您可以校准:

-(`-m`)max length以尝试更长的密钥
-(`-l`)selected length以查看一些有趣的密钥
-(`-c`)最常见的字符以生成正确的明文

示例2
——————————————————————————————————————14:7.1%
16:7.8%
23:10.4%
46:8.7%
密钥长度可以是4*n
猜测密钥需要使用最可能的字符!
```

在尝试了一些长度之后,我们找到了正确的长度,它只给出了1个纯文本,有效字符百分比高于默认阈值95%。

``bash
$xortool message.enc-b-f-l 23-t base64
256个长度为23的可能键:
\x01=\x121"0\x17\x13\t\x7f,&;/\ x12s\x114u\x170
\x00<;\x130"1\x16\x12\x08~!-\'.\x13r\x105t\x161"
\x03?\x103!2\x15\x11\x0b}"。$-\x10q\x136w\x152!
\x02>;\x112!3\x14\x10\x10\n//,\x11p\x127v\x143\x143
\x059\x165\x14\x13\x17\r{$("+\x16w\x150q\x154\x134\'

发现1个明文中有95.0%+有效字符
见文件filename-key.csv,filename-char\u used-perc\u valid.csv
``




通过过滤输出字符集上的字符集上的字符集上的输出值为base64,过滤输出值为64,,是的我们直接保留唯一的解决方案。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修改打印板?   java Spring批处理JdbcCursorItemReader还是RepositoryItemReader?   java如何在JTable Swing中增加标题列的字体?   java在数组方面遇到问题,导致表达式非法启动   java如何为maven pom的某些部分关闭Eclipse代码格式化程序。xml   java Dropwizard登录代码   java Jersey 2.22:客户端的默认连接超时是多少?   java无法自动连接字段:javax。sql。数据来源   如何从java中的行列表中获取单词列表?   java JDBC批量更新和处理异常?   计算大根:bigdecimal/java   java如何在JavaCC语法中提到trycatch块   javasocket。getInetAddress()不返回任何内容   oracle SQL开发人员错误无法找到Java虚拟机   java我如何计算和显示未来5年每一年的投资价值   java如何关闭浏览器选项卡?   java如何在showMessageDialog中打印双2D数组?   java从站点抓取播放列表URL?   selenium中的java点击css按钮