2012-07-18 2 views
0

Bittorrent 클라이언트를 쓰고 있습니다. 관련된 단계 중 하나는 프로그램이 토런트 파일의 일부 SHA1 해시가 포함 된 HTTP GET 요청을 추적 프로그램에 전송해야합니다. 필자는 Azureus가 추적자에게 보낸 요청을 가로 채기 위해 Fiddler2를 사용했습니다.바이트 문자열을 URL 인코딩 하시겠습니까?

Azureus가 보내는 해시는 URL 인코딩되며 다음과 같이 보입니다. % D9 % 0C % 3C % E3 % 94 % 18 % F0 % C5 % D9 % 83X % E03I % 26 % 2B % 60 % 8C % BFR

는 URL 인코딩되기 전에 해시는 다음과 같이한다

: 나는 그것이 '%'기호마다 두 개의 문자를 배치하는 것만 큼 간단하지 통지, 그래서이 바이트 문자열을 인코딩에 대해 어떻게 갈 것이라고

d90c3ce39418f0c5d98358e03349262b608cbf52 Azureus와 같은 것을 얻으려고.

미리 감사드립니다.

답변

1

문자열을 왼쪽에서 오른쪽으로 이동하십시오. %이 발생하면 다음 두 문자를 출력하여 대문자를 소문자로 변환하십시오. 다른 문자가 있으면 그 문자의 ASCII 코드를 소문자로 16 진수로 출력하십시오.

%D9 %0C %3C %E3 %94 %18 %F0 %C5 %D9 %83 X %E0 3 I %26 %2B %60 %8C %BF R 

X의 ASCII 코드는 58이됩니다. 3의 ASCII 코드는 0x33입니다.

은 (당신이 생각 부탁했다 왜 가지 의아해하고 있습니다. 귀하의 질문이 명확하게 인식하고 있음을 보여준다이 URL 인코딩 된.로)

+0

내가 질문을 디코딩하지, 인코딩에 대해 생각합니다. –

+0

차이가 없습니다. 이 과정은 분명히 되돌릴 수 있습니다. (그리고 ** ** 질문은 단지 URL 인코딩됨을 지적합니다!) –

+0

ASCII 문자가 바이트를 나타내는 데 사용될 수 있다는 것을 깨닫지 못했습니다.이를 해결해 주셔서 감사합니다! :) – brnby

2

실제로 두 문자마다 % 기호를 넣을 수 있습니다. 예를 들어 R은 URL의 안전 문자이며 52은 16 진수 표현 인 R이므로 Azureus는 퍼센트 인코딩하지 않아도됩니다. 대신 %52을 사용하는 것은 동일합니다.

관련 문제