标签: scapy

scapy获取数据包的到达时间

有没有办法使用scapy来获取数据包的到达时间?使用scapy读取pcap文件,我想知道所有数据包的到达时间,因为我们知道wireshark可以看到它.所以我想必须有办法.谁知道?

python scapy packet-sniffers

14
推荐指数
1
解决办法
9712
查看次数

PlanetLab上的Scapy

有没有人成功在PlanetLab节点上使用Scapy(运行Fedora 12)?

我知道安全的原始套接字限制,但似乎我可以通过设置发送数据包通过Scapy conf.L3socket=L3RawSocket.至于数据包的接收,我无法让Scapy工作,所以我只使用tcpdump.

TCPICMP似乎有效:

  • ICMP echo-r​​equests获得echo-r​​eply回复
  • 具有低TTL的ICMP回应请求获得超时消息
  • TCP SYN数据包返回TCP RST数据包
  • 具有低TTL的TCP数据包获得超时消息

UDP没有:

  • 到封闭端口的UDP数据包会触发ICMP端口不可达消息,但此消息不会使其返回到我的条子.Tcpdump只能看到UDP数据包.
  • UDP数据包沿路径到期的情况也是如此.

是否需要设置任何其他参数才能接收这些ICMP数据包?

python sockets fedora raw-sockets scapy

14
推荐指数
1
解决办法
802
查看次数

Scapy安装问题.似乎没有安装任何东西?

我有一台苹果电脑运行Leopard与python 2.6.我下载了最新版本的scapy并运行了" python setup.py install".一切按计划进行.现在,当我尝试通过输入"scapy"以交互模式运行它时,它会抛出一堆错误.是什么赋予了!

以防万一,这是完整的错误消息..

INFO: Can't import python gnuplot wrapper . Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
ERROR: Unable to import pcap module: No module named pcap/No module named pcapy
ERROR: Unable to import dnet module: No module named dnet
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File …
Run Code Online (Sandbox Code Playgroud)

python installation scapy

13
推荐指数
2
解决办法
4万
查看次数

原始套接字和python中的sendto

我正在努力将scapy与扭曲整合,但我遇到了OSX上这个非常奇怪的错误,我似乎无法弄明白.

基本上我无法通过原始套接字发送有效的TCP数据包(包括IP头).这就是我在做的事情:

import socket
from scapy.all import IP, TCP
pkt = IP(src='0.0.0.0', dst='127.0.0.1')/TCP()
spkt1 = str(pkt)
outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
outs.sendto(spkt1, ('127.0.0.1', 0))
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到以下错误:

outs.sendto(spkt1, ('127.0.0.1', 0)) socket.error: [Errno 22] Invalid argument

如果您没有scapy on不想使用它,这是数据包base64编码:

import base64
spkt1 = base64.b64decode("RQAAKAABAABABvvOAAAAAH8AAAEAFABQAAAAAAAAAABQAiAAEH4AAA==")
Run Code Online (Sandbox Code Playgroud)

非常奇怪的是,几乎相同的数据包似乎正确发送:

spkt2 = base64.b64decode("RQBAAAWwAAACBgAAAAAAAH8AAAEAyAOEAAAAAAAAAACwAgDIAHsAAAIEBbQBAwMBAQEICk3PUjMAAAAABAIAAA==")
Run Code Online (Sandbox Code Playgroud)

这是两个数据包的样子:

SPKT1
0000   45 00 00 28 00 01 00 00  40 06 FB CE 00 00 00 00   E..(....@.......
0010   7F 00 00 01 00 14 00 50  00 00 00 00 …
Run Code Online (Sandbox Code Playgroud)

python ip networking tcp scapy

13
推荐指数
1
解决办法
7317
查看次数

导入模块时禁止scapy警告消息

我正在编写一个小脚本,使用scapy收集一些信息,然后返回一些xml代码,我将传递给metasploit的xmlrpc接口.我希望我的脚本只返回xml,没有其他警告等.

我可以通过在verbose=0sr1命令中添加选项来抑制大多数scapy输出.我在每个输出之前仍然得到的,并且我假设它在我加载模块时返回此警告,是:

警告:找不到IPv6目标的路由::(没有默认路由?)

通过调用我的脚本,我可以轻松地重定向该输出:

 ./myscript 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但我想将其纳入脚本中.为此,我找到了一个提示,一个可以有一个NullDevice类,它不会写任何东西,然后设置sys.stderr为该NullDevice类的实例化.

这只在我已经加载模块后不幸地工作,所以我仍然有警告,它只重定向发送到stderr的任何后续消息.

如何禁止显示在屏幕上的警告消息?

python scapy hide stderr output

13
推荐指数
1
解决办法
2万
查看次数

如何修复Scapy"警告pcapy API不允许获取capure文件描述符"?

我试图通过使用Scapy捕获功能捕获传出的数据包(即,来自我的localhost)sniff,然后在捕获它们时解析它们但我不断收到以下警告:

WARNING: fileno: pcapy API does not permit to get capure file descriptor. Bugs ahead! Press  
Enter to trigger packet reading
Run Code Online (Sandbox Code Playgroud)

这个问题有解决方法吗?我需要在没有用户交互的情况下完全自动化该过程.

任何帮助是极大的赞赏.

ps我的系统设置是:

OS: Mac OS X 10.7.5
python: 2.7.1
scapy: 2.2.0
Run Code Online (Sandbox Code Playgroud)

谢谢

packet-capture scapy python-2.7

13
推荐指数
1
解决办法
4253
查看次数

Scapy错误:没有模块名称pcapy

下面给出的代码用于从提供的IP地址嗅探数据包.

from scapy.all import *

sniff(filter="tcp and host 192.168.0.90", count=10)
Run Code Online (Sandbox Code Playgroud)

在运行此代码时,我得到的错误是:

Traceback (most recent call last):   File ".\sample.py", line 1, in <module>
    from scapy.all import *   File "C:\Python27\lib\site-packages\scapy\all.py", line 16, in <module>
    from arch import *   File "C:\Python27\lib\site-packages\scapy\arch\__init__.py", line 79, in <module>
    from windows import *   File "C:\Python27\lib\site-packages\scapy\arch\windows\__init__.py", line 23, in <module>
    from scapy.arch import pcapdnet   File "C:\Python27\lib\site-packages\scapy\arch\pcapdnet.py", line 30, in <module>
    import pcapy as pcap ImportError: No module named pcapy
Run Code Online (Sandbox Code Playgroud)

我哪里错了?我正在使用Windows 7.

python scapy

13
推荐指数
1
解决办法
2万
查看次数

尝试运行在OS X上利用scapy的脚本时,'ImportError:没有名为dumbnet的模块'

因此,我试图了解Python中的scapy库并尝试运行使用scapy的脚本.该脚本使用以下命令导入模块:

from scapy.all import *

我看到了这个,当然安装scapy:

pip install scapy

接下来,我收到以下导入错误:

ImportError: No module named pcapy

那么,我决定安装pcapy pip install pcapy.它安装正常,但现在我得到导入错误:

ImportError: No module named dumbnet

我找不到一个名为dumbnet的模块.有谁知道这里发生了什么?

这是我第一次搞乱scapy并且在激活的虚拟环境中使用安装了Python 2.7的Mac.

EDIT1:

这是完整的错误:

Traceback (most recent call last):
  File "syn_test.py", line 4, in <module>
    from scapy.all import * # The One and Only Scapy
  File "/Users/dasComputer/venv_mac/lib/python2.7/site-packages/scapy/all.py", line 16, in <module>
    from scapy.arch import *
  File "/Users/dasComputer/venv_mac/lib/python2.7/site-packages/scapy/arch/__init__.py", line 79, in <module>
    from scapy.arch.pcapdnet import *
  File "/Users/dasComputer/venv_mac/lib/python2.7/site-packages/scapy/arch/pcapdnet.py", line 471, in <module>
    import dumbnet as …
Run Code Online (Sandbox Code Playgroud)

python macos scapy

13
推荐指数
1
解决办法
7963
查看次数

如何检查scapy数据包中是否存在图层?

如何检查scapy数据包中是否存在特定图层?例如,我需要检查IP头的src/dst字段,我怎么知道特定的数据包实际上有一个IP头(例如与IPv6相反).

我的问题是,当我去检查IP头字段时,我得到一个错误,说IP层不存在.这个特定的数据包不是IP头,而是IPv6.

pkt = Ether(packet_string)
if pkt[IP].dst == something:
  # do this
Run Code Online (Sandbox Code Playgroud)

我尝试引用IP层时发生错误.在尝试操作之前,如何检查图层是否存在?

谢谢!

python scapy

12
推荐指数
2
解决办法
2万
查看次数

Scapy如何获得ping时间?

我正在尝试编写一个scapy脚本,它可以在ping时间上取平均值,因此我需要在发送的ICMP echo/reply数据包和收到的回复数据包之间得到时间.现在,我有这个:

#! /usr/bin/env python
from scapy.all import *
from time import *

def QoS_ping(host, count=3):
  packet = Ether()/IP(dst=host)/ICMP()
  t=0.0
  for x in range(count):
      t1=time()
      ans=srp(packet,iface="eth0", verbose=0)
      t2=time()
      t+=t2-t1
  return (t/count)*1000
Run Code Online (Sandbox Code Playgroud)

问题是使用time()函数不会产生好的结果.例如,我在一个域上发现134毫秒,并且在同一个域上使用ping系统功能,我发现30毫秒(当然是平均值).

我的问题是:有没有办法通过scapy获得发送的数据包和收到的数据包之间的确切时间?我不想使用popen()函数或其他系统调用,因为我需要scapy来进行未来数据包管理.

python time networking ping scapy

12
推荐指数
1
解决办法
6711
查看次数