【问题标题】:File Name Too long error while reading a pcap file using subprocess.call使用 subprocess.call 读取 pcap 文件时出现文件名太长错误
【发布时间】:2016-10-05 13:30:48
【问题描述】:

我不熟悉使用子进程调用。请帮助我找出以下脚本中的问题..

我正在尝试编写一个新的 PCAP 文件 (filter1.pcap),该文件将仅包含来自特定 IP 地址 (ipadd) 的数据包,这些数据包来自来自较大 PCAP 文件 (superset.pcap) 中包含的各种 IP 地址的大量数据包)

错误是:OSError: [Errno 36] File name too long

代码如下:

from subprocess import *
pcapfile = rdpcap("superset.pcap") 
ipadd = "192.168.1.1"              
fileout = "filter1.pcap"           
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd)
subprocess.call( [command] )

顺便说一句,Linux 中的以下命令运行良好:

sudo tcpdump -w filter1.pcap -r superset.pcap src 192.168.1.1

任何帮助都会很棒!

谢谢, CK

【问题讨论】:

  • 尝试将 pcapfile = rdpcap("superset.pcap") 更改为 pcap = "superset.pcap" 看起来你是先用 scapy 打开文件,然后将输出提供给 tcpdump,它会失败。
  • 谢谢杰夫。是的,这就是问题!

标签: subprocess pcap tcpdump


【解决方案1】:

这已解决。这里有一个逻辑错误。我正在使用 rdpcap 读取完整的 PCAP 文件并将值传递给 tcpdump。所以 tcpdump 正在读取完整的文件本身作为文件名。

我将代码更改如下,现在可以使用了!

import os.path
pcapfile = "superset.pcap"
ipadd = "192.168.1.1"         
fileout = "filter1.pcap"           
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd)
os.system(command)

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多