【问题标题】:Writing to a pcap with scapy用 scapy 写入 pcap
【发布时间】:2016-02-17 20:36:21
【问题描述】:

过滤掉所有 NBNS 流量后,我正在尝试写入 pcap 文件。这给了我一个语法错误。

from scapy.all import *

Capture = raw_input("Enter file path of pcap file: " )
pcap = rdpcap(Capture)

ports=137

filtered = (pkt for pkt in Capture if
    (UDP in pkt and 
    (pkt[UDP].sport in str(ports)))

wrpcap("filtered.pcap",filtered)

我发现语法错误的答案只是...str(ports)))) 末尾缺少括号,但现在我有一个不同的错误。

  File "receiver2.py", line 18, in <module>
    wrpcap("filtered.pcap",filtered)
  File "/usr/lib/python2.7/dist-packages/scapy/utils.py", 
    line 470, in wrpcap
  PcapWriter(filename, *args, **kargs).write(pkt)
  File "/usr/lib/python2.7/dist-packages/scapy/utils.py", line 652, in write
    for p in pkt:
  File "receiver2.py", line 13, in <genexpr>
    (UDP in pkt and 
  TypeError: 'in <string>' requires string as left operand, not Packet_metaclass

【问题讨论】:

    标签: python pcap scapy


    【解决方案1】:

    pkt[UDP].sport 通常应该是整数而不是字符串。 str(ports) 应仅替换为 ports

    我正在使用 scapy v3.x。如果您仍然遇到问题,请尝试使用 scapy 3.x (pip install scapy-python3),我将能够与您一起完成。我在此代码示例中看到的从 python2 到 python3 的唯一需要更改是将 raw_input 替换为 input。

    【讨论】:

      【解决方案2】:

      我正在试用您的脚本,但无法按原样进行。我对其进行了一些更改,我认为它可以满足您的需求。希望这会有所帮助。

      from scapy.all import *
      
      capture = raw_input("Enter file path of pcap file: " )
      pcap = rdpcap(capture)
      
      ports=137
      
      def write(pkt):
          wrpcap('filtered.pcap', pkt, append=True)  #appends packet to output file
      
      for pkt in pcap:
          if pkt.haslayer(UDP) and pkt.getlayer(UDP).sport == ports:  #checks for UDP layer and sport 137
              write(pkt)  #sends the packet to be written if it meets criteria
          else:
              pass
      

      【讨论】:

      • 谢谢!这有助于我将自定义数据包写入 pcap,如下所示:packet = Ether()/IP(src=src, dst=dst)/TCP(sport=sport, dport=dport, flags='A')/payload (newline) wrpcap(out_fname, packet, append=True)
      猜你喜欢
      • 2020-12-07
      • 2017-08-15
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多