2016-07-21 6 views
1

Ich arbeite mit scapy und ich habe angefangen zu lernen, wie man Pakete baut (wenn jemand ein gutes Beispiel im Internet hat, um daraus zu lernen - Es wird großartig! Danke.).Scapy - Wie kann ich den Bericht von sendp sr1 verstecken und bekomme nur das letzte?

Ich habe den nächsten Befehl in scapy:

srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2) 

, die in Schicht 2 ein ARP-Paket senden Wenn ich diesen Befehl zu tun, seine mir die nächste Antwort zu geben:

ACHTUNG: Keine Route für IPv6-Ziel gefunden: (keine Standardroute?) Beginn der Emission: * Abschluss zum Senden von 1 Paketen.

Received 1 Pakete, bekam 1 Antworten, Rest 0 Pakete

00: 50: 56: e9: b8: b1

für den nächsten Code:

def Arp_Req(ip): 
     packet = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2) 
     try: 
       packet[0][0] 
       return packet[0][0][1].hwsrc 
     except IndexError: 
       return "(E2)CANT FIND AN ANSWER FOR "+ip+"." 

Ich möchte um den gesamten Bericht auszublenden und nur die Antwort auszudrucken. Wie kann ich es tun?

Antwort

2

Ein Teil der Produktion hier von einer Warnung kommen, aufgrund IPv6, die Sie durch das Deaktivieren IPv6-Unterstützung (von scapy) vermeiden kann, aber Sie auch die Ausgabe durch die Funktion srp() selbst erzeugt haben, und dafür müssen Sie Setzen Sie das verbose Argument:

from scapy.config import conf 
conf.ipv6_enabled = False 
from scapy.all import * 

def Arp_Req(ip): 
    packet = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2, verbose=0) 
    try: 
     packet[0][0] 
     return packet[0][0][1].hwsrc 
    except IndexError: 
     return "(E2)CANT FIND AN ANSWER FOR "+ip+"." 

# example 
print Arp_Req("192.168.0.254")