2010-01-25 6 views
0

C로 Pcap 캡처를 분석 중이며 HTTP 응답의 Gzipped 본문의 압축을 풀어야합니다. Wireshark를 수동으로 사용하여이를 수행 할 수 있음을 알고 있지만 프로그램 내에서 즉시 수행해야합니다.압축 해제 된 gzip 된 HTTP 메시지

제 생각에는 zlib와 RFC를 살펴 봐야한다는 것입니다. 그러나 약간의 분석 프로그램이므로 빠른 해결책을 찾을 수있는 곳을 아십니까?

감사

답변

0

당신이 이미 알고있는 것과 추가 RFC를 읽을해야처럼 소리하지 않습니다. 압축 알고리즘을 이해할 필요가 없습니다.

zlib 사용은 매우 쉽습니다.
몇 줄의 코드에서 수축을시킬 수 있습니다 : Here is an example.

+0

답장을 보내 주셔서 감사합니다. Zlib에 대한 예제 코드를 시도해 보았습니다.이 코드는 Zpipe라고합니다. stdin에서 압축 된 스트림을 가져와 압축되지 않은 프로그램을 생성하는 간단한 프로그램입니다. 그러나 샘플 프로그램은 데이터가 유효한 형식이 아니라고 불평하는 gzipped 페이지를 디코딩하지 못합니다. gzipped 페이지는 항상 1F8b (gzipped 파일의 매직 번호) 바이트로 시작합니다. 스트림을 얻으면 파일에 복사하여 붙여 넣고 gzip (프로그램)에 압축을 풀라고 요청하면 문제가되지 않습니다. 그러나 Zpipe는 여전히 불평하고 압축을 풀지 않습니다. – Dan

0

아마, 분석 프로그램을 작성하는 언어가 무엇이든, gzip 압축 스트림을 디코딩하는 데 사용할 라이브러리가 이미 있어야합니다. Google 또는 Bing "your-language-of-choice gzip 구현"또는 이와 비슷한 방법으로 문제를 해결할 수 있습니다.

최후의 수단으로 데이터를 입력하고 gzip의 압축 해제 된 출력을 사용하여 프로그램에서 GNU gzip을 사용할 수 있습니다 (선택한 시스템에 맞는 빌드가 있어야 함).

0

해결! minigzip이라는 gzip에 대한 구현을 발견했습니다. 이 트릭을 수행하는 조금 좋은 프로그램입니다. 참조 구현으로 사용하겠습니다.

-1

인코딩을 수락하도록 수락 - 인코딩 cleint 헤더를 다시 쓰는 프록시 rhough 실행하는 것이 더 간단하지 않을까요 : 압축을, Q = 0, GZIP, Q = 0

?

+0

나는 단지 pcaps에 액세스 할 수 있기 때문에 불가능합니다. 그러나 문제는 해결되었습니다. 그것은 단지 10 줄의 코드와 zlib에서 gzuncompress에 대한 호출을 필요로했습니다. – Dan

관련 문제