krypton

Posted by rk700 on July 10, 2014
  • krypton0
    base64解码 <pre class="lang:sh decode:true " >$ echo “…” | base64 -d -</pre>

  • krypton1
    rot13解码

import codecs
s='...'
print(codecs.encode(s,'rot13'))
  • krypton2
    凯撒密码。可以通过他给的程序得到密码表。注意keyfile和ciphertext文件都认为在当前目录下
  • krypton3
    frequency analysis。之前用的网站是http://www.richkni.co.uk/php/crypta/freq.php,还有一个http://www.quipqiup.com/index.php。英语的频率是ETAOINSHRDLUCMWFYGPBVKXJQZ。但直接从得到的词频对应还是不对,需要再调整。比如开始的词估计是well done。最后在网上搜到的答案……
 
$ echo -n "KSVVW BGSJD SVSIS VXBMN YQUUK BNWCU ANMJS" | tr '[A-Z]' '[BOIHPKNQVTWGURXZAJEYSLDFPU]'
  • krypton4
    Vigenere,还是在之前那个网站,注意两个文件要分开。从found1推出key是FREKEY,从found2推出key是FRTKEY。试了第一个key

  • krypton5
    还是vigenere,但key的长度不知道。在http://smurfoncrack.com/pygenere/index.php试了第一个文件,感觉plaintext似乎是it was…第二个文件的plaintext是when the…。由于密码的长度只有6,所以到这里我就试着从前两个文件得到key的前几个字符是KEYLEN。 到此我们就可以试着解密了

  • krypton6
    stream cipher,试着加密一堆A,发现每30个字符循环。后来看反汇编,加密是取plaintext,key,random之和,算mod26之类的。key的长度是10,而密码长15,那么估计random是以15为周期的。 试了发现15个A被加密成EICTDGYIYZKTHNS,现在密文是PNUKLYLWRQKGKBE,由此可反推出明文:

oldc='EICTDGYIYZKTHNS'
oldp='AAAAAAAAAAAAAAA'
newc='PNUKLYLWRQKGKBE'
newp=[]
for i in range(len(newc)):
    code = (26+ord(newc[i])-ord(oric[i]))%26
    newp.append(chr(65+code))

print(''.join(newp))