keyword : AES암호, CBC 블록 암호
Crypto is cool! Decrypt the secret message encrypted using cipher-block chaining (CBC) with the following parameters:
- Secret message: 9126c855e6195778bd521862485d86c267304f7d33cea48221e0b369fde7a103 (hex encoded)
- Block cipher encryption: AES
- Initialization vector: 931d82119ad8a299b2271db1fc6d2287 (hex encoded)
- Key: 49a24c2a9eab18be256bbdeaeec1c0ab (hex encoded)
AES알고리즘으로 암호화 되어 있는 암호문을 해독하면 된다. 블록 암호 방식은 CBC암호 블록이다.
[ CIpher Block Chaining mode ]
문제 지문에 친철하게 key, 초기화 벡터값, 알고리즘등을 알려주었기 때문에 그대로 사용하면 된다. 소스는 다음 주소에서 참고하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from Crypto.Cipher import AES def hex_decode(message): try: result = "" for i in range(len(message)): if i%2 == 0: result += chr(eval("0x"+message[i:i+2])) except: print "error corrupt" return "false" return result message = hex_decode("9126c855e6195778bd521862485d86c267304f7d33cea48221e0b369fde7a103") IV = hex_decode("931d82119ad8a299b2271db1fc6d2287") key = hex_decode("49a24c2a9eab18be256bbdeaeec1c0ab") aes = AES.new(key, AES.MODE_CBC, IV) print aes.decrypt(message) ### {key: 9495d8912885c961 } ### | cs |
간단하다. 지문에 주어진 값들을 초기화 시켜주고 AES 디코딩을 해주면 된다.
'CTF | wargame' 카테고리의 다른 글
hackcenter / Broken Encryption 1 (CTR블록 암호, Crime Attack - 암호문 압축 길이에 따른 공격 기법) (0) | 2017.03.07 |
---|---|
hackcenter / Broken Encryption 0 (ECB 블록 암호, 평문 변경 공격......) (0) | 2017.03.07 |
hackcenter / Two Time Pad (동일한 key를 사용한 이미지 OTP) (0) | 2017.03.07 |
3DS CTF - Crypto Master? (socket 통신 형태의 crypto) (0) | 2017.03.06 |
kisa - 해킹 공격 흔적 찾기 (0) | 2016.12.29 |