2013-11-20 2 views
4

PCAP 파일에서 모든 IP 주소를 빠르고 영리하게 얻을 수 있습니까? (대상 주소, 원본 주소) 튜플 만 있으면됩니다. 현재scapy에서 PCAP 파일의 IP 주소 받기

나는이 같은 Scapy의 rdpcap 기능을 사용하고 있습니다 ...

from scapy.all import * 
pcap = rdpcap('file.pcap') 

ips = set([(p[IP].fields['src'], p[IP].fields['dst']) for p in pcap if p.haslayer(IP) == 1]) 

를하지만 370 개 독특한 추출 항목과 70메가바이트의 PCAP 파일을 구문 분석하는 내 컴퓨터에서 약 2 분 정도 소요

+0

IP 패키지는 IP 패킷을 의미합니까? – RyPeck

+0

@RyPeck 예, 질문에서 수정했습니다 – reox

+0

커플 (발신지 주소, 수신자 주소)을 의미하지 않습니까? 그것이 당신이하는 일이기 때문입니다. 또는 IP * 주소 * 일 수 있습니까? – Pierre

답변

3

내가 생각한대로 (IP 패킷이 아닌 IP 소스 주소, IP 대상 주소) 커플을 원한다고 가정 할 때 "내가 제시 한 코드를 기반으로"최선의 방법은 다음과 같습니다.

>>> set((p[IP].src, p[IP].dst) for p in PcapReader('file.pcap') if IP in p) 

전체 PCAP 파일로 메모리를 낭비하지 않고 set 개체는 패킷 단위로 작성됩니다.

>>> IP.payload_guess = [] 

그리고 이전의 명령을 실행합니다 : 그것은 빠른 충분하지 않으면

, 당신은 당신이 IP 페이로드를 사용하지 않기 때문에 IP 계층 후 패킷을 해부하지 Scapy를 지시 할 수 있습니다.