2011-02-27 3 views
2

파이썬을 사용하여 서버에 요청을 보내고 있습니다. 나는 서버에서 쿠키를 얻는다. 서버에서 사용하는 인코딩 체계를 디코딩하려고합니다. utf-8 또는 base64로 의심됩니다. 그래서 헤더와 연결 개체를 만듭니다.HTTP 스트림에서 추출한 쿠키 변수 디코드 -

resp, content = httpobj.request(server, 'POST', headers=HTTPheader, body=HTTPbody) 

그리고는 내가 str.decode()unicode()을 시도

cookie= resp['set-cookie'] 

는 HTTP 스트림에서 쿠키를 추출하지만 쿠키의 압축을 푼 내용을 얻을 수 없습니다입니다.

쿠키는 가정

MjAyMTNiZWE4ZmYxYTMwOVPJ7Jh0B % 2BMUcE4si5oDcH7nKo4kAI8CMYgKqn6yXpgtXOSGs8J9gm20bgSlYMUJC5rmiQ1Ch5nUUlQEQNmrsy5LDgAuuidQaZJE5z % 2BFqAJPnlJaAqG2Fvvk5ishG % 2FsH % 2FA의 %의 3D % 내가 기대하고 출력은

20213bea8ff1a309SÉì~t LQÁ8².hÁûœª8<Æ *©úÉz μS입니다 3D

'öö¶Ñ¸ ƒ $ .kš $ 5gQIPf®Ì¹, 8 ºA|IœÖZ € $ ùå % * ao¾Nb²¶ÁöÃ

답변

3

는 다음과 같이하십시오 :

import urllib 
import base64 

cookie_val = """MjAyMTNiZWE4ZmYxYTMwOVPJ7Jh0B%2BMUcE4si5oDcH7nKo4kAI8CMYgKqn6yXpgtXOSGs8J9gm20bgSlYMUJC5rmiQ1Ch5nUUlQEQNmrsy5LDgAuuidQaZJE5z%2BFqAJPnlJaAqG2Fvvk5ishG%2FsH%2FA%3D%3D""" 

res = base64.b64decode(urllib.unquote(cookie_val)) 

print repr(res) 

출력 : 당신이 얻을 그것을 해독 할 수 있도록

물론
"20213bea8ff1a309S\xc9\xec\x98t\x07\xe3\x14pN,\x8b\x9a\x03p~\xe7*\x8e$\x00\x8f\x021\x88\n\xaa~\xb2^\x98-\\\xe4\x86\xb3\xc2}\x82m\xb4n\x04\xa5`\xc5\t\x0b\x9a\xe6\x89\rB\x87\x99\xd4RT\[email protected]\xd9\xab\xb3.K\x0e\x00.\xba'Pi\x92D\xe7?\x85\xa8\x02O\x9eRZ\x02\xa1\xb6\x16\xfb\xe4\xe6+!\x1b\xfb\x07\xfc" 

여기에 결과가 8 비트 문자열입니다 당신이 원하는 문자열, 나는 어떤 인코딩을 사용할 지 모르겠다. 그러나 유니 코드 - 이스케이프 (유니 코드 리터럴)를 사용하는 디코딩 결과가있다 :

글쎄, 희망이 도움이 될 수 있습니다.

+0

도움 주셔서 감사합니다. 알아 내야 할 것은 정수를 16 진수 값으로 함수에 전달하는 것입니다. 나는 [패딩 오라클] (http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/) 알고리즘을 구현하려고합니다. – Shivver