2016-06-29 5 views
0

tcpdump을 사용하여 네트워크 트래픽을 캡처합니다. 필자는 실제 TCP 페이로드 데이터, 즉 특정 경우에 HTTP 트래픽을 추출하는 데 관심이 있습니다.pcap 파일에서 TCP 페이로드 추출

나는 scapy을 사용하여이를 달성하려했지만 기능은 remove_payload()입니다. 상응하는 부분이 있습니까? 또는 그러한 기능을 제공하는 다른 도구에 대해 알고 있습니까?

불행히도, 나는 만족스러운 scapy 문서를 찾지 못했습니다.

답변

1

경우 다른 사용자가 유사한있을 수 있습니다 질문 : 다음 스크립트를 사용하여 끝났습니다.

infile=infile.pcap 
outfile=outfile 
ext=txt 

rm -f ${outfile}_all.${ext} 

for stream in $(tshark -nlr $infile -Y tcp.flags.syn==1 -T fields -e tcp.stream | sort -n | uniq | sed 's/\r//') 
do 
    echo "Processing stream $stream: ${outfile}_${stream}.${ext}" 
    tshark -nlr $infile -qz "follow,tcp,raw,$stream" | tail -n +7 | sed 's/^\s\+//g' | xxd -r -p | tee ${outfile}_${stream}.${ext} >> ${outfile}_all.${ext} 
done 
1

당신은 다음 HTTP 콘텐츠와 재생하려면 패킷의 Raw (오른쪽 TCP 위) 레이어를 사용하여 쉽게 rdpcap와 Scapy와 PCAP를 읽을 수 있습니다

from scapy.all import * 

pcap = rdpcap("my_file.pcap") 

for pkt in pcap: 
    if Raw in pkt: 
     print pkt[Raw] 
+0

어떻게 이러한 바이트를 콘솔이 아닌 파일에 쓸 수 있습니까? 또한 추가 줄 바꿈을 출력하고 싶지 않습니다. – Florian

+0

파이썬'open()'과'write()'는 I/O를 다루고 있습니다. 파이썬의'print' 함수는 라인 피드를 덧붙입니다. 그래서 당신이 그것을 사용하지 않고 파일에 바이트를 쓰면 더 이상 존재하지 않아야합니다. –

+0

필자는 분명히해야한다.'write'는'f.write (pkt [Raw])'(TypeError : Raw가 아닌 ​​버퍼로 변환 가능해야 함) 호출을 허용하지 않는다. 이 문제에 대한 해결책을 찾지 못했습니다. – Florian

관련 문제