2016-06-19 8 views
0

私は、Ubuntuのネットワーク上のすべてのIPパケットを取得するためにPythonを使いたいと思っています。以下のコードを使用すると、イーサネットヘッダーを持つすべてのパケットが得られます。どのようにしてイーサネットヘッダーを取り除き、IPパケットだけを直接取得できますか?UbuntuでRaw IPパケットをキャプチャするにはどうしたらいいですか?

s = socket.socket(socket.AF_PACKET , socket.SOCK_RAW , socket.ntohs(0x0003)) 
while True: 
    packet = s.recvfrom(65565) 
+0

[イーサネットフレームフォーマット](https://en.wikipedia.org/wiki/:ここで私は、その後、その情報の概要を示し、10個のIPパケットをキャプチャするのpcapファイルに保存する例を示しますEthernet_frame)はよく知られており、[Ethernet frame](https://en.wikipedia.org/wiki/Ethernet_frame)を持っていれば、ペイロード(IPパケット)を簡単に取得できます。 –

+0

ありがとうございます。しかし、私は、イーサネットパケットを取得した後に、他のプロセスを持つよりも、生のIPパケットを直接取得する方法があることを意味しますか? –

答えて

0

socket (AF_INET, SOCK_RAW, IPPROTO_RAW)(Cで)例hereがあり、あなたにレイヤ2生socket`

を取得しますあなたの

socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL))をIPレイヤrawソケットを取得します。

+0

これは私の最後では機能しません。多分それはCのためだけに働くでしょうか? –

+0

rawソケットは、言語に関してOSによって提供されます。どちらのCもまったく同じシステムコールを作成しているはずです。高い権限でアプリケーションを実行していますか? – Malt

+0

私のプログラムで、同じ行を使用しています:s = socket.socket(socket.AF_PACKET、socket.SOCK_RAW、socket.ntohs(0x0003))、そしてエラーを取得しています.. _sock = _realsocket(family、type、proto) ソケット。エラー:[Errno 1]操作が許可されていません。これらのパラメータの代わりに何を使用しますか? –

2

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) 
>>> 
+0

それは働いた。ありがとう! –

+0

うれしかったです! – kardaj

関連する問題