2012-05-29 5 views
5

PCAP 파일을 읽으려면 Scapy의 rdpcap 함수를 사용하고 있습니다. 모든 HTTP 요청과 응답 및 관련 패킷을 검색해야하므로 내 경우에는 link to HTTP support in Scapy에 설명 된 모듈을 사용해야합니다.Scapy 및 rdpcap 함수

큰 PCAP 파일을 구문 분석하면 rdpcap 함수를 읽는 데 너무 많은 시간이 걸리는 것으로 나타났습니다.

pcap 파일을 더 빨리 읽을 수있는 해결책이 있습니까?

+0

pcap 파일의 크기는 어느 정도입니까? 그것을 읽는데 얼마나 걸리나요? 정말 너무 길습니까 (한 번만로드하는 경우에도)? 몇 번이나 읽고 싶습니까 (수사적 질문)? –

+0

내 파일이 300MB보다 크면 Python 스크립트를 두 번 이상 실행해야합니다. – auino

+0

@auino, 특히 읽기 시간에 문제가 있습니까? 변경을 할 때마다 300MB 파일을 파싱 할 때 스크립트를 개발하는 데 너무 오래 걸리거나 실시간 프로세싱 요구 사항이 있습니까? 또한 받아 들일 수있는 구문 분석 시간이 무엇인지에 대해 알려주십시오. –

답변

4

로드 시간이 예상보다 길다는 것에 동의하지만 파일이 구문 분석되어 잘 구성된 오브젝트 배열을 생성 할 가능성이 높습니다. 내가 한 일은 editcap을 사용하여 패킷 캡처를 쪼개서 조금 더 쉽게 읽을 수있게하는 것이었다. 예를 들어 :

$ editcap -B 2013-05-2810:05:55 -i 5 -F libpcap inputcapture.pcap outputcapture.pcap 

는 참고 :이 명령의 스위치에 대한 자세한 설명은 here 사용할 수 있습니다.

또한 -F libpcap 부분은 scapy의 pcap 기능을 사용하여 파일을 구문 분석 할 수 있어야합니다. (이것은 기본 pcap 파일 출력 형식으로되어 있지만, 이유는 무엇이든간에. capinfos으로 입력 및 출력 파일의 파일 형식을 확인할 수 있습니다 (예 : capinfos your_capture.pcap).

모두 capinfoseditcap은 WireShark로 배포와 함께 사용할 수있는

2

Scapy는 다른 방법 당신이 PCAP를 읽는 데 사용할 수 있습니다 sniff을 가지고 너무 파일 :. 메모리에

def method_filter_HTTP(pkt): 
    #Your processing 

sniff(offline="your_file.pcap",prn=method_filter_HTTP,store=0) 

rdpcap 부하 전체 PCAP 파일을. H 그것은 많은 기억을 사용하고 느린 말처럼. sniff은 한 번에 하나의 패킷을 읽고 제공된 prn 기능으로 전달합니다. 해당 store=0 매개 변수는 패킷이 처리되는 즉시 메모리에서 삭제되도록합니다.