Frage

Ich bin relativ neu in Python und Probleme mit scapy Programmierung habe, Werkzeug Python-Netzwerkes Manipulation. Allerdings kann ich nicht sagen, ob es so viel ein scapy Problem ist, als es ein Wesen-a-Python-Neuling Problem. Auf dem scapy Website , geben sie ein Beispielprogramm, das ich nicht in der Lage bin zu laufen auf meinem eigenen Rechner:

#! /usr/bin/env python

import sys
from scapy import sr1,IP,ICMP

p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
    p.show()

Um die ich bekommen:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    from scapy import sr1,IP,ICMP
ImportError: cannot import name sr1

Also meine Frage ist dann: wenn Python-Bibliotheken installieren, brauche ich ähnlich meinen Weg oder etwas zu ändern? Außerdem gibt es etwas, was ich in dem Interpreter ausführen kann mir den Inhalt des scapy Pakets zu erzählen? Ich kann from scapy import * ganz gut laufen, aber da ich keine Ahnung, was drin ist, ist es schwer, es zu benutzen.

War es hilfreich?

Lösung

Mit dem Vorbehalt von Federico Ramponi „Sie sollten scapy als Dolmetscher durch seine eigenen, nicht als Bibliothek verwenden“, ich die Nicht-scapy spezifische Teile der Frage beantworten will.

F: , wenn Python-Bibliotheken installieren, muss ich meinen Weg oder etwas ähnliches ändern

?

A: Ich glaube, Sie sprechen über das Ändern PYTHONPATH systemweit. Dies ist in der Regel nicht erforderlich ist oder eine gute Idee.

Third Party Python-Bibliotheken sollten entweder in Systemverzeichnisse installiert werden, wie /usr/lib/python2.5/site-packages oder lokal installiert ist, in dem Fall, dass Sie vielleicht PYTHONPATH in Ihrem Makefile oder ein im Fahrer Shell-Skript festlegen möchten.

F: Auch ist es etwas, was ich in dem Interpreter ausführen kann mir den Inhalt des scapy Pakets zu sagen,

?

A: Sie können etwas tun:

>>> import scapy
>>> dir(scapy)

Oder noch besser:

>>> import scapy
>>> help(scapy)

Bonus Frage in einem Kommentar gefragt.

F: Ist 'Import scapy' das gleiche wie 'aus scapy import *'

A: import scapy bindet den scapy Namen in der lokalen Namensraum zum scapy Modulobjekt. OTOH, from scapy import * bindet nicht den Namen des Moduls, aber alle öffentlichen Namen im scapy Modul definiert sind, in den lokalen Namensraum gebunden ist.

Siehe Ziffern 6 und 7 des Handbuchs Python Reference, 6.12 import-Anweisung .

Andere Tipps

Ich hatte das gleiche Problem, in der scapy v2.x Verwendung

 from scapy.all import * 

anstelle der v1.x

 from scapy import *

geschrieben hier

Genießen Sie es =)

Es sagt Ihnen, dass es nicht SR1 in scapy finden. Nicht sicher, wie newbite Sie sind, aber der Interpret ist immer dein Freund. Starten Sie den Interpreter (nur Typ „Python“ auf der Kommandozeile) und an der Eingabeaufforderung (>>>) geben (aber geben Sie nicht die> 's, sie selbst auftauchen werden):

>>> import scapy
>>> from pprint import pformat
>>> pformat(dir(scapy))

Die letzte Zeile sollte eine Menge Sachen drucken. Haben Sie es überall ‚sr1‘, ‚IP‘ und ‚ICMP‘ sehen? Wenn nicht, ist das Beispiel Verschulden trifft.

Versuchen Sie helfen auch (scapy)

Das ist, wie viel ich Dir scapy und Blick auf Ihrem tatsächlichen ohne Installation Source-Datei selbst helfen kann.

Das scapy Paket ist ein Tool für Netzwerk-Manipulation und Überwachung. Ich bin neugierig, was Sie versuchen, mit ihm zu tun. Es ist unhöflich auf Ihre Freunde auszuspionieren. : -)

coventry@metta:~/src$ wget -q http://www.secdev.org/projects/scapy/files/scapy-latest.zip
coventry@metta:~/src$ unzip -qq scapy-latest.zip 
warning [scapy-latest.zip]:  61 extra bytes at beginning or within zipfile
  (attempting to process anyway)
coventry@metta:~/src$ find scapy-2.0.0.10 -name \*.py | xargs grep sr1
scapy-2.0.0.10/scapy/layers/dns.py:    r=sr1(IP(dst=nameserver)/UDP()/DNS(opcode=5,
scapy-2.0.0.10/scapy/layers/dns.py:    r=sr1(IP(dst=nameserver)/UDP()/DNS(opcode=5,
scapy-2.0.0.10/scapy/layers/inet6.py:from scapy.sendrecv import sr,sr1,srp1
scapy-2.0.0.10/scapy/layers/snmp.py:            r = sr1(IP(dst=dst)/UDP(sport=RandShort())/SNMP(community=community, PDU=SNMPnext(varbindlist=[SNMPvarbind(oid=oid)])),timeout=2, chainCC=1, verbose=0, retry=2)
scapy-2.0.0.10/scapy/layers/inet.py:from scapy.sendrecv import sr,sr1,srp1
scapy-2.0.0.10/scapy/layers/inet.py:            p = sr1(IP(dst=target, options="\x00"*40, proto=200)/"XXXXYYYYYYYYYYYY",timeout=timeout,verbose=0)
scapy-2.0.0.10/scapy/sendrecv.py:def sr1(x,filter=None,iface=None, nofilter=0, *args,**kargs):

Nach der letzten Zeile sr1 ist eine Funktion in scapy.sendrecv definiert. Jemand sollte eine Dokumentation Fehler beim Autor Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top