2017-10-23 18 views
0

우리는 tcpdump 명령을 통해 생성 된 pcap 파일을 구문 분석하고 있습니다. 이 pcap 파일 안에 Raw 필드의 GET 요청 정보를 추출하여 읽을 수있는 형식으로 인쇄하려고합니다.Scapy 패킷에서 GET 요청 내용을 추출하십시오.

pkts = rdpcap(filename) 
for pkt in pkts: 
    if Raw in pkt: 
     raw_test = pkt[Raw].load 
     if "GET" in raw_test: 
      #do stuff 

raw_test의 결과 텍스트 아웃이처럼 보이는 온다 : ▒פ▒▒▒▒▒▒2▒nk▒N▒▒bEr▒▒(|▒▒▒▒Ǫ=▒▒Ih▒H+%▒2.▒L[▒▒▒sl▒E▒▒▒k6▒]=މf▒d▒O▒hB{6s▒▒▒7O2!PCG&▒A.4I▒耓▒X▒▒▒W]▒▒[email protected]▒▒▒vK▒#Ċ▒ ▒▒▒m]Zb_▒8▒▒▒nb~ ]▒h▒6▒.̠▒49ؾG?▒▒▒4▒Ӹ▒▒G▒▒́G▒:Y▒▒▒▒.▒8▒▒d▒i4▒JAC)▒▒AO▒k▒z-▒▒S30▒X?▒▒W5B▒yW▒m▒▒▒/ƈ:G▒▒▒E▒▒<▒▒▒m▒]▒▒▒▒t▒:▒▒▒Ŕ▒W▒▒D▒E▒▒▒▒▒࿄▒▒zZ▒▒x▒]▒▒{{▒▒u▒){▒▒o▒▒G▒F▒▒▒▒▒v ▒▒▒b.

우리는 또한 pkt.sprintf(“{Raw:%Raw.load%}\n”) 통해 서식을하지만이 같은 출력을

P.S. 나왔고 시도 우리가 다른 많은 스택/질문에 링크하지 않도록하십시오. 우리가 이미 그 중 많은 것을 보았으므로 그 중 아무 것도 우리의 문제를 해결하지 못하는 것 같습니다.

감사합니다. 어떤 도움을 주셔서 감사합니다.

+1

* 포트를 대상으로 가정 "우리는 이미 많은 건너대로, 그리고 그들 중 누구도 우리의 문제를 해결하기 위해 보이지 않는다", 이것을 시도하십시오 * - 이것은 아무것도 말하지 않는다 당신이 실제로 시도한 것에 대해서만 말입니다. 그러나 당신은 불특정 한 방법으로 불특정하고 실패한 것을 시도했습니다. 즉,이 정보는 사실상 쓸모가 없습니다. –

+1

코드가 추가되었습니다 (일부'print raw_test'가 추가되었습니다) 완벽하게 작동합니다. 나는 네가 무엇을하고 있는지 전혀 모른다. 어쩌면 당신은 어딘가에 'GET'을 포함하지만 HTTP가 아닌 입력 데이터를 가지고 있을까요? 처리하려는 입력을 제공하는 것이 도움이 될 수 있습니다. –

+0

불행히도 우리가 raw_test를 인쇄하기 전에 혼란스러워하는 것이고 패킷 정보는 get 요청 정보와 함께 완전히 읽을 수 있습니다. 우리는 변경 사항을 추적하려고 시도했으나 변경 사항을 파악할 수 없었습니다. 같은 결과가 나오는 pkt.getlayer(TCP)도 시도했습니다. –

답변

0

내가 HTTP 80

if TCP in pkt and pkt[TCP].dport == 80 \ 
      and pkt[TCP].load.startswith("GET") : 
     print pkt[TCP].load 
+0

제안한 코드를 시도했지만 TCP 레이어 내부의로드에 대한 속성 오류가 발생했습니다. 우리는 전체 내용을 검사하기 위해 pkt.show를 사용했고 TCP 내부에 중첩 된로드가 없었습니다. Raw 만있었습니다. 이것이 왜 있는지. –

+0

wireshark와 같은 도구를 사용하여 패킷 캡처를 분석 했습니까? – rabhis