2014-02-22 2 views
2

나는 항상 RC4로 암호화 된 객체의 해독에 실패한다. 내 키는이 16 진수 문자열의 MD5 해시 수있다 : 내가 뭘하려파이썬에서 16 진수의 MD5 계산하기

00 00 00 01 3e 2a 5b 71 00 00 03 a0 

이 ASCII 및 이후 그것의 MD5 해시를 계산하는 16 진수 문자열로 변환했지만, 내 키는 항상 잘못된 것처럼 보인다 . 16 진수 값 중 일부는 제어 문자이기 때문에 문제가 있다고 생각하지만이 16 진수 문자열의 MD5를 계산하는 올바른 방법은 무엇입니까? 내가 뭘 생각하는 것은이 같은했다 : 파이썬 표준 lib 디렉토리에서

from Crypto.Cipher import ARC4 
from Crypto.Hash import MD5 


def hexToAscii(hex_string): 
    return ''.join([chr(int(''.join(c), 16)) for c in zip(hex_string[0::2],hex_string[1::2])]) 

def main(): 
    hex_string = '000000013e2a5b71000003a0' 

    # Key for Decryption 
    myKey = MD5.new(hexToAscii(hex_string)).hexdigest() 

    print 'hexToAscii(hex_string): %s' % hexToAscii(hex_string) 

    #open('myfile','wb').write(ARC4.new(hexToAscii(myKey)).decrypt(hexToAscii(CIPHER_TEXT))) 

if __name__ == '__main__': 
    main() 

답변

1

main 기능 인쇄 대신 myKeyhexToAscii(hex_string).

참고로 hexToAscii 대신 binascii.unhexlify을 사용하는 것이 좋습니다. 그리고 hashlib module을 사용하여 md5를 계산할 수 있습니다. 내가 그것을 제어 문자가 "???"로 변환됩니다 아스키의 MD5를 계산하는 문제가 될 수 있다고 생각했기 때문에

>>> import hashlib 
>>> import binascii 
>>> hex_string = '000000013e2a5b71000003a0' 
>>> hashlib.md5(binascii.unhexlify(hex_string)).hexdigest() 
'6afebf522c531575e96d6814be816c7c' 
+0

예 내가 의도적 주에서 hexToAscii (hex_string)을 인쇄하고 싶었다. 이 hex_string의 ascii 결과가 무엇인지보고 싶었습니다. 왜냐하면 내가 hex_string을 변환 할 때 "> * [q "를 얻고 md5를 계산하여 내 RC4 객체의 암호를 해독하는 데 키를 사용하여 여전히 손상된 출력을 제공합니다. 하지만 열쇠가 ​​맞아야하고 암호 해독 문제가 어딘가에있을 수도 있다고 생각합니다. –

+0

@ 카페인, 어떤 결과가 파일에 기록됩니까? (그리고 'CIPHER_TEXT'값은 무엇입니까?) – falsetru

+0

ARC4 암호문을 해독 한 결과입니다. 그래서 이것은 하나의 : open ('output.dll', 'wb'). write (ARC4.new (key) .decrypt (binascii.unhexlify (Cipher_Text))) 키는 위에서 계산 한 md5이어야합니다. 나는 그렇게하지만 항상 손상된 dll 파일을 가져다가 "> * [q "의 md5를 계산한다고 생각하는 이유가 무엇일까? –

0

사용 hashlibbinascii, 변환이 포함 된 ASCII 없습니다 :

import binascii 
import hashlib 

base = binascii.unhexlify("000000013e2a5b71000003a0") 
key = hashlib.md5(base).digest() 
관련 문제