사용자가 네트워크 패킷을 보내고, 스니핑하고, 해부하고 단조 할 수있게 해주는 도구 인 scapy
을 살펴 보시기 바랍니다. sniffing 단락은 아마 당신이 찾고있는 것입니다.
$ scapy
Welcome to Scapy (2.3.2)
>>> pkts = sniff(filter='ip', count=10)
>>> print len(pkts)
10
>>> pkts.nsummary()
0000 Ether/IP/TCP 31.13.90.2:https > 192.168.1.14:63748 PA/Raw
0001 Ether/IP/TCP 192.168.1.14:63748 > 31.13.90.2:https A
0002 Ether/IP/TCP 192.168.1.14:63748 > 31.13.90.2:https PA/Raw
0003 Ether/IP/TCP 31.13.90.2:https > 192.168.1.14:63748 PA/Raw
0004 Ether/IP/TCP 192.168.1.14:63748 > 31.13.90.2:https A
0005 Ether/IP/UDP 192.168.1.21:48007 > 192.168.1.255:32412/Raw
0006 Ether/IP/UDP 192.168.1.21:49808 > 192.168.1.255:32414/Raw
0007 Ether/IP/UDP 192.168.1.11:64817 > 192.168.1.255:32412/Raw
0008 Ether/IP/UDP 192.168.1.11:64819 > 192.168.1.255:32414/Raw
0009 Ether/IP/UDP 192.168.1.11:49670 > 239.255.255.250:ssdp/Raw
>>> wrpcap("temp.cap",pkts)
>>>
에서 [이더넷 프레임 포맷] (https://en.wikipedia.org/wiki/ : 여기 다음, 자신의 정보의 요약을 보여, 10 개 IP 패킷을 캡처 PCAP 파일로 저장하는 예이다 이더넷 프레임 (https://en.wikipedia.org/wiki/Ethernet_frame)을 가지고 있다면 페이로드 (IP 패킷)를 쉽게 얻을 수 있습니다. –
감사합니다. 하지만 이더넷 패킷을 가져온 후 다른 프로세스를 사용하는 대신 원시 IP 패킷을 직접 가져 오는 방법이 있습니까? –