picoCTFにチャレンジ_no1

PicoCTFとは:

米国カーネギーメロン大学が開発したセキュリティ人材を主眼に置いたオンラインで参加可能なCTF形式の教育コンテンツ。Web/ソフトウェア/フォレンジック/暗号/脆弱性を中心にコンテンツが準備されている。

 

XORの問題: Pythonを利用して暗号化されているデータの複合を行う問題

-----------------------------------------------------

from collections import Counter   ; 

frequency = Counter( )

with open('encrypted', 'r') as f:

    data = f.read()                                ;encrypted ファイルをすべて読み込み、dataに格納

    for ch in data:

        frequency[ch] += 1

c = frequency.most_common(10)[0][0]      ;most_commonメソッドを用いて、多い要素10個を取り出し

m = ' '

print (repr(c) + ' decrypts to ' + repr(m))     ; 特に本行は必要なし

def xor(input_data, key):        

    result = ""

    for ch in input_data:

        result += chr(ord(ch) ^ ord(key))        ;  "^" : 排他的論理和を示す

    return result

k = xor(c, m)

print (xor(data, k))

-----------------------------------------------------

 

[参考URL]

http://www.lifewithpython.com/2014/05/python-count-elements-in-lists.html