2017-03-03 6 views
0
from scapy.all import * 

pkts = rdpcap("/home/anadikrsna/Desktop/lalalao2.pcap") 

somaMin = pkts[0].time + 600 


valores=[] 
for p in pkts: 

    if p<=somaMin: 
     #armazenando os valores que estiverem dentro do intervalo de tempo 
     valores.append(p) 

    else: 


     print "os valores",valores 

     valores=[] 
     valores.append(p) 
     somaMin=p.time+ 600 

ネットワークダンプ(PCAP)ファイル内の送信元IPと宛先IPを「キャッチ」しようとしています。アイデアは、ファイルを10分スライスすることによってすべてのソースIPとすべての宛先IPを保存することです(「タイムスライス」)。Pythonを使用したネットワークダンプのパケットで「タイムスライス」を実行する方法は?

パケットを10分ごとに「分割」し、送信元IPと宛先IPを保存する方法。

答えて

3

10分は600秒です。

最初の時刻から現在のパケット時刻を差し引くだけで、10分が経過したかどうかを確認できます(タイムスタンプは秒単位であるため)。

これは、pcap内の10分ごとのパケットごとに行います。

次のコードは、リストのリストを作成します。すべてのサブリストは、10分のパケットを表します。

packets = [] 
temp = [] 
t1 = pkts[0].time 
t2 = 0 
for p in pkts: 
    t2 = p.time 
    if (t2 - t1) > 600: 
     t1 = p.time 
     packets.append(temp) 
     temp = [] 
     temp.append(p) 
    else: 
     temp.append(p) 

その後、サブリストのそれぞれに対処するために:

for pkt_list in packets: 
    print pkt_list # OR do other stuff with it. Each pkt_list is 10 minutes of packets 

を使用すると、各パケットのsrcとdest IPを取得したい場合は、私はあなたがすべてのパケット上で動作する最初のループでそれを行う示唆しています。最初のループ(for p in pkts)内部のIPアドレスを解決し、あなたがそれをやりたいために、これを使用します。

if IP in p: #if packet has IP layer 
    src_ip = p[IP].src 
    dest_ip = p[IP].dst 

EDIT -上記のコードは、forループのループごとに実行されます。見つかったすべてのsrc_ipを印刷する場合は、コードの最初にリストsrc_ip_addresses = []を作成してください。

src_ip_addresses.append(src_ip) 

をし、コードの末尾に、そのリスト内の各要素を印刷:次に、あなたはパケット内のIP層を見つけるたびに、行います。

+0

しかし、1488498263.14はタイムスタンプではありませんか?わかりません! –

+0

@AnadiKrsnadasです!すべてタイムスタンプです。コードを表示すると、それらの間の時間差を秒単位で得ることができます。 –

+0

ありがとう!私はプログラミングの初心者です。 –

関連する問題