trytodecrypt.com — easy (1-6)
tryptodecrypt.com
字符集
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.,;:?!(71
个字符)。
easy 都是简单替换密码。
网站给一个加密工具,输入明文返回密文。脚本就利用这个 oracle 做 Chosen-Plaintext Attack。
1 | import subprocess, re, sys |
Text 1
131017171A48221A1D170F
偏移 2。
1 | C = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.,;:?! " |
Text 2
4A3E374A4973483F3D3E4A
偏移 42(ASCII 表偏移)。
1 | C = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.,;:?! " |
Text 3
0A0B1339150B1139070A0B13390510
偏移 -13(58 mod 71)。hex 值小于 13 时直接减会负索引,需要
% 71。
1 | C = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.,;:?! " |
Text 4
0C02D8010D0C02D8010606D8101402FCD80F0603D8FC0600DA
enc = (30 - charset_pos) % 256
1 | $ python script.py 4 2 |
Text 5
90DE633F425148DE51546CDE725466DE3F2A6936DE4263CCDEAB362A3372DE39545DDE633F36DE51366F63DE545136D8
enc = charset_pos * 3 + 12
1 | $ python script.py 5 2 |
Text 6
4D586CFC2DB449D47B0CF99C3BC46CFC7B0C
固定 4-hex 替换表。
1 | $ python script.py 6 4 |