我有一个名为 handshake.py 的文件。哪里有函数send_data(argument)。我想将该函数导入另一个名为 siptest.py 的文件。我遇到两个问题。我在 64 位 Windows 7 上使用 microsoft Visual Studio。1)我无法导入功能。我试过使用,
from handshake import*
handshkae.send_data(argument)
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误。
NameError: global name 'handshake' is not defined
Run Code Online (Sandbox Code Playgroud)
我尝试过的另一个选择是使用
import handshake
handshake.send_data(argument)
Run Code Online (Sandbox Code Playgroud)
这给了我一个属性错误。
AttributeError: 'module' object has no attribute 'send_data'
Run Code Online (Sandbox Code Playgroud)
如果我以其他方式使用它,例如
from handshake import send_data
Run Code Online (Sandbox Code Playgroud)
2) MS Visual Studio 说。没有发现测试,请检查配置设置,但我仍然可以以某种方式运行测试。它说由于导入错误而导致测试失败。
ImportError: cannot import name send_data
Run Code Online (Sandbox Code Playgroud)
这两个文件都在同一目录中。此外,该函数是在handshake.py 中的“TCPhandshake”类中定义的
我对 python、linux RPI 和 scapy 完全陌生。我正在尝试使用 scapy 发送一些数据包。
在命令行上(仅当授予 scapy 超级用户权限时)
send(IP(dst="1.2.3.4")/ICMP())
Run Code Online (Sandbox Code Playgroud)
这在 python 脚本上运行时非常有效。
from scapy.all import *
p=send(IP(dst="1.2.3.4")/ICMP())
Run Code Online (Sandbox Code Playgroud)
抛出错误
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
send(IP(dst="1.2.3.4")/ICMP())
File "/usr/local/lib/python3.4/dist-packages/scapy/sendrecv.py",line 255, in send
__gen_send(conf.L3socket(*args, **kargs), x, inter=inter, loop=loop, count=count,verbose=verbose, realtime=realtime)
File "/usr/local/lib/python3.4/dist-packages/scapy/arch/linux.py", line 326, in __init__
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
File "/usr/lib/python3.4/socket.py", line 123, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
PermissionError: [Errno 1] Operation not permitted<br>
Run Code Online (Sandbox Code Playgroud)
我正在尝试解决它,但不能,我对环境不熟悉,因此了解不多。就我的搜索而言,这个问题与套接字有关。但我仍然需要一些简单的解释才能理解。
有没有办法测量通过 scapy 发送的传出数据包的时间戳?如何以规范化值呈现这些时间戳,例如wireshark 中的时间戳。
我可以通过发送一个简单的数据包流
packet=IP(src="192.168.0.254", dst="192.168.0.2")/TCP(sport=35021, dport=35021)
pkt=sniff(filter="host 192.168.0.254")
Run Code Online (Sandbox Code Playgroud)
当我从另一个终端嗅探时,
pkt=sniff(filter="host 192.168.0.254")
for p in pkt:
print p[TCP].time
Run Code Online (Sandbox Code Playgroud)
给我以下时间值
1505733059.335
1505733059.336
1505733059.336
1505733059.336
1505733059.337
1505733059.337
1505733059.338
1505733059.338
1505733059.338
1505733059.339
Run Code Online (Sandbox Code Playgroud)
据我所知,这些是发送数据包时的值,对吗?如何将这些值更改为规范化值,例如在wireshark 中?