I'm relatively new to Python and am having problems programming with Scapy, the Python network manipulation tool. However, I can't tell if it's as much a Scapy problem as it is a being-a-Python-newbie problem. On the scapy site, they give a sample program which I'm not able to run on my own machine:
#! /usr/bin/env python
import sys
from scapy import sr1,IP,ICMP
p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
p.show()
To which I get:
Traceback (most recent call last):
File "test.py", line 4, in <module>
from scapy import sr1,IP,ICMP
ImportError: cannot import name sr1
So my question then is: when installing Python libraries, do I need to change my path or anything similar? Also, is there something I can run in the interpreter to tell me the contents of the scapy package? I can run from scapy import *
just fine, but since I have no idea what's inside it, it's hard to use it.
With the caveat from Federico Ramponi "You should use scapy as an interpreter by its own, not as a library", I want to answer the non-scapy-specific parts of the question.
Q: when installing Python libraries, do I need to change my path or anything similar?
A: I think you are talking about changing PYTHONPATH
system-wide. This is usually not required or a good idea.
Third party Python libraries should either be installed in system directories, such as /usr/lib/python2.5/site-packages
, or installed locally, in which case you might want to set PYTHONPATH
in your Makefile or a in driver shell script.
Q: Also, is there something I can run in the interpreter to tell me the contents of the scapy package?
A: You can do something like this:
>>> import scapy
>>> dir(scapy)
Or even better:
>>> import scapy
>>> help(scapy)
Bonus question asked in a comment.
Q: Is 'import scapy' the same as 'from scapy import *'?
A: import scapy
binds the scapy name in the local namespace to the scapy module object. OTOH, from scapy import *
does not bind the module name, but all public names defined in the scapy module are bound in the local namespace.
See paragraphs 6 and 7 of the Python Reference Manual, 6.12 The import statement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With