标签: scapy

C/Python套接字性能?

我的问题只涉及C语言和Python中的套接字之间的性能差异.由于我的Python构建是CPython,我认为它是相似的,但我很好奇是否有人实际上有"真正的"基准,或者至少是一个基于证据的观点.

我的逻辑是这样的:

  • C socket快得多?然后写一个C扩展名.
  • 不是/差别不大?继续用Python编写并弄清楚如何获取数据包级别控制(scapy?dpkt?)

我敢肯定有人会想知道上下文或好奇心.我计划为自己构建一种代理(不用于互联网浏览,匿名等),并将我想要使用的应用程序绑定到特定端口.然后,所述端口上的所有数据包将排队,修改地址头,然后发送等等.

提前致谢.

c python sockets scapy

10
推荐指数
1
解决办法
3185
查看次数

scapy中的sniff函数过滤器无法正常工作

看来,filtersniff功能不能正常工作.

我用以下过滤器执行嗅探

a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
Run Code Online (Sandbox Code Playgroud)

但是sniff有时候抓住这样的UDP包:

>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:0 UDP:1 ICMP:0 Other:0>
Run Code Online (Sandbox Code Playgroud)

有时候sniff捕获带有错误端口的TCP数据包:

>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:1 UDP:0 ICMP:0 Other:0>
>>> a[0]
<Ether  dst=00:26:55:cb:3b:10 src=00:22:64:55:c8:89 type=0x800 |<IP  version=4L ihl=5L tos=0x10 len=92 id=8683 flags=DF frag=0L ttl=64 proto=tcp chksum=0x9484 src=192.168.1.71 dst=192.168.1.133 options=[] |<TCP  sport=ssh dport=1874 seq=350107599 ack=2484345720 dataofs=5L reserved=0L flags=PA window=254 …
Run Code Online (Sandbox Code Playgroud)

python linux networking tcp scapy

10
推荐指数
1
解决办法
7665
查看次数

使用 scapy 读取 PCAP 文件

我有大约 10GB 的 pcap 数据和 IPv6 流量来分析存储在 IPv6 标头和其他扩展标头中的信息。为此,我决定使用 Scapy 框架。我试过rdpcap函数,但对于这么大的文件,不推荐使用。它试图将所有文件加载到内存中并在我的情况下卡住。我在网上发现在这种情况下建议使用嗅探,我的代码如下:

def main():
   sniff(offline='traffic.pcap', prn=my_method,store=0)


def my_method(packet):
   packet.show()
Run Code Online (Sandbox Code Playgroud)

在名为my_method 的函数中,我分别接收每个数据包,我可以解析它们,但是....当我使用内置框架方法调用show函数时,我得到了这样的东西: 结果

在wireshark中打开时,我得到了正确的数据包: 结果2

你能告诉我如何在 scapy 中解析这个数据包以获得正确的结果吗?

编辑:根据评论中的讨论,我找到了一种用 Python 解析 PCAP 文件的方法。在我看来,最简单的方法是使用 pyshark 框架:

import pyshark
pcap = pyshark.FileCapture(pcap_path) ### for reading PCAP file
Run Code Online (Sandbox Code Playgroud)

可以使用 for 循环轻松迭代读取文件

for pkt in pcap:
    #do what you want
Run Code Online (Sandbox Code Playgroud)

对于解析 IPv6 标头,以下方法可能有用:

pkt['ipv6'].tclass            #Traffic class field
pkt['ipv6'].tclass_dscp       #Traffic class DSCP field
pkt['ipv6'].tclass_ecn        #Traffic class ECN field
pkt['ipv6'].flow              #Flow label …
Run Code Online (Sandbox Code Playgroud)

python scapy

10
推荐指数
1
解决办法
3万
查看次数

Scapy:获取/设置数据包的频率或通道

我一直在尝试使用 Linux 捕获 WIFI 数据包,并查看捕获数据包的频率/频道。我尝试了 Wireshark,但没有运气也没有帮助。虽然使用来自 Wireshark的示例数据包,但我可以看到频率/频道。

所以现在我正在试验 Scapy。我想弄清楚嗅探数据包的频率/频道,但仍然没有运气。有没有办法用 Scapy 做到这一点。

PS 如果有比 Scapy 或 Python 更好的工具,我感谢评论

python scapy wireshark python-3.x

10
推荐指数
1
解决办法
1538
查看次数

如何重放Wireshark捕获的数据包?

我在 Wireshark 中捕获了一些数据包,需要以任何方式再次重放这些数据包。

packet-capture scapy wireshark packet-sniffers

10
推荐指数
1
解决办法
3万
查看次数

在包中添加有效载荷

我可以使用scapy将图像或文档(以MB为单位)作为数据插入数据包吗?

这就是我发送数据的方法.

data = "University of texas at San Antonio"
a = IP(dst="129.132.2.21")/TCP()/data
send(a)
Run Code Online (Sandbox Code Playgroud)

python packet-capture scapy packet

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

在scapy/python中获取数据包大小

在Scapy(或者甚至只是Python,为此),如何获得给定数据包的字节大小?我很想使用这个功能,len但我不确定它在数据包的情况下究竟会返回什么.

>>> len(IP(dst="www.google.com"))
20

>>> len(IP(dst="www.google.com")/TCP(dport=80))
40
Run Code Online (Sandbox Code Playgroud)

python size scapy packet

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

Scapy BPF过滤器无法正常工作

我正在使用Scapy,并希望根据目标mac地址进行过滤.

但是,我收到的数据包显示目标MAC地址不是过滤器中指定的地址.

这是一个代码snippit:

from scapy.all import *

sniff(iface="eth1", filter="ether dst host 91:e0:f0:01:00:00", 
      count=3, prn=lambda x: x.show())
Run Code Online (Sandbox Code Playgroud)

我正在运行Scapy 2.2.0

关于这个问题的任何想法吗?

python scapy

9
推荐指数
1
解决办法
2807
查看次数

Scapy.all import*不起作用

所以,我在Ubuntu中为scapy编写了一个小脚本.

#!/usr/bin/env python
import sys
#from scapy.all import *
try 
   import scapy
   except ImportError:
     del scapy
     from scapy import all as scapy
i= IP()
t= TCP()
i.dst='192.168.56.100'
t.dport=22
pakket=i/t
answered,unanswered=sr(pakket)
answered.nsummary()
Run Code Online (Sandbox Code Playgroud)

我写了'尝试',因为这里有另一个主题(尝试它作为解决方案).我使用此代码的当前输出如下

Traceback (most recent call last):
File "./scapy.py", line 5, in <module>
import scapy
File "/home/nicholas/scapy.py", line 9, in <module>
i=IP()
NameError: name 'IP' is not defined
Run Code Online (Sandbox Code Playgroud)

当尝试从scapy.all导入*没有'尝试'时.

Traceback (most recent call last):
File "./scapy.py", line 3, in <module>
from scapy.all import *
File "/home/nicholas/scapy.py", line 3, in <module> …
Run Code Online (Sandbox Code Playgroud)

python ubuntu scapy

9
推荐指数
1
解决办法
3万
查看次数

为什么AP不显示?为什么我的MAC不匿名?

在此示例中,是用于为Proberequests创建应答机的代码。结果是 AP正在设备上显示。以下是我的代码。为了使它正常工作,我不得不进行一些更改。

import sys
import os
import time
from scapy.all import *
os.sys.path.append('/usr/lib/python2.7/dist-packages')

conf.iface = "wlan0mon" 

class ProbeRequest_am(AnsweringMachine):
    function_name = "pram"
        mac = "00:11:22:33:44:55"
    def is_request(self, pkt):
        return Dot11ProbeReq in pkt
    def make_reply(self, req):
        rep = RadioTap()
        rep /= Dot11(addr1=req.addr2, addr2=self.mac, addr3=self.mac, ID = RandShort(), SC= RandShort())
        rep /= Dot11ProbeResp(cap="ESS", timestamp=int(time.time()))
        rep /= Dot11Elt(ID="SSID",info ="Scapy !")
        rep /= Dot11Elt(ID="Rates", info=b'\x82\x84\x0b\x16\x96')
        rep /= Dot11Elt(ID="DSset", info=chr(10))
        return rep

ProbeRequest_am()()
Run Code Online (Sandbox Code Playgroud)

首先,AP在我拥有的任何设备上都不可见。但是输出与我的设备在家里寻找我的AP有关。AFAIK我的智能手机(iOS 12.2)不会将其实际的MAC用于Proberequest,并且该程序仅应对Proberequest作出反应。但这是运行脚本的输出(我的iPhone的实际MAC,但已更改为发布= d0:c5:f3:00:00:00):

RadioTap / 802.11 Management 4 d0:c5:f3:00:00:00 > ff:ff:ff:ff:ff:ff …
Run Code Online (Sandbox Code Playgroud)

python scapy wifi 802.11

9
推荐指数
0
解决办法
151
查看次数