2015-01-24 3 views
0

실험의 트래픽 추적을 바이너리 형식으로 포함하고있는 pcap 파일이 있습니다. 내가하려는 것은 서로 다른 호스트가 서로 교환하고있는 데이터의 양을 알아내는 것이지만, 나는 pcap을 사용하는 것에 익숙하지 않고 검색하지 않고 성공하지 않고 다른 것을 시도해왔다.pcap 데이터에서 얼마나 많은 데이터가 전송되었는지 찾기

여기 tcpdump를 유용하게 사용할 수 있습니까? 나는 그것으로 원시 파일을 처리 같은 것을 가지고있다 :

2009-12-17 17:26:04.398500 IP 41.177.117.184.1618 > 41.177.3.224.51332: Flags [P.], seq 354231048:354231386, ack 3814681859, win 65535, length 338 
2009-12-17 17:26:04.398601 IP 90.218.72.95.10749 > 244.3.160.239.80: Flags [P.], seq 1479609190:1479610159, ack 3766710729, win 17520, length 969 
2009-12-17 17:26:04.398810 IP 244.3.160.239.80 > 90.218.72.95.10749: Flags [.], ack 969, win 24820, length 0 
2009-12-17 17:26:04.398879 IP 41.177.3.224.51332 > 41.177.117.184.1618: Flags [P.], seq 1:611, ack 338, win 65535, length 610 

두 호스트가 서로 전송 한 데이터 양의 좋은 지표가 각 라인의 끝에 "길이"값인가를?

문제는 Wireshark로 원시 파일을 보면이 길이가 실제로 TCP 헤더 길이 인 것처럼 보이지만 데이터/페이로드 크기는 Wireshark에서 따로 지정됩니다 (이 4 개의 패킷 중 첫 번째 바이트는 38 바이트입니다.) 나를 혼란스럽게합니다. (첫 번째 패킷에 대해) : 1) "396 바이트의 유선", 2) "96 바이트 캡처", 3) "len : 338", 4) "데이터 (38 바이트) ".

TCPDUMP는 말한다 : "길이 338"

가 어떻게 페이로드 크기를 찾을 수 있습니까? 가능한 한 파이썬을 사용하려고합니다. 거대한 캡처 파일로 작업하게 될 것입니다.

답변

2

여기 tcpdump를 유용 할 수 있습니까?

예.

두 줄의 호스트가 서로 전송 한 데이터의 양을 각 줄 끝의 "길이"값으로 파악합니까?

예. 이것이 전송 된 바이트의 양입니다.

페이로드 크기를 어떻게 찾습니까? 가능한 한 파이썬을 사용하고자합니다> 거대한 캡처 파일로 작업 할 것입니다.

프로토콜을 지정하지 않았으므로 "페이로드 크기"로 "IP 헤더 뒤의 모든 것을"가정합니다. 이것은 파이썬과 dpkt으로하기 쉽습니다. 옵션없이 IP 패킷을 가정 Jon's tutorial 당, 당신이 원하는 아마 않는 일부 코드는 다음과 같습니다

#!/usr/bin/env python 

import dpkt 
from socket import inet_ntoa 

with open("sample.pcap") as f: 
    pcap = dpkt.pcap.Reader(f) 
    for ts, buf in pcap: 
     ip = dpkt.ethernet.Ethernet(buf).data 
     print "{} --> {} {}".format(inet_ntoa(ip.src), inet_ntoa(ip.dst), ip.len) 
+0

감사 회신 시간을내어 많이. "페이로드"를 사용하면 소스, 대상, 프로토콜 등에 관한 정보를 제외하고 전송 된 모든 "실제"데이터를 의미했습니다. 기본적으로 tcpdump 출력의 "길이"가 의미하는 바를 알아 냈습니다. dpkt를 사용하여 데이터의 일부를 검색하면 전체 대화 중에 얼마나 많은 바이트가 IP1에서 IP2로 전송되었는지를 나타내는 크기를 찾습니다. (IP1과 IP2가 서로 이야기하는 모든 패킷을 합친 것). 이 튜토리얼을 살펴 보겠습니다. – Onedot618

관련 문제