用python scapy库分析pcap数据包错误TypeError、AttributeError

写了个python程序解析流量数据包,用的是scapy库。读取流量较少的pcap包文件时可以顺利运行,读取大点的pcap包就会报错。
错误信息如下:

        Traceback (most recent call last):
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__
        fld, v = self.getfield_and_val(attr)
            TypeError: 'NoneType' object is not iterable

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__
        fld, v = self.getfield_and_val(attr)
    TypeError: 'NoneType' object is not iterable

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "D:\Paper\sta\pcap\特征提取.py", line 22, in <module>
        bufLen.append(data.len)
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 237, in __getattr__
        return self.payload.__getattr__(attr)
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 237, in __getattr__
        return self.payload.__getattr__(attr)
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__
        fld, v = self.getfield_and_val(attr)
    File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 1291, in getfield_and_val
        raise AttributeError(attr)
    AttributeError: len

源代码部分:

    from scapy.all import *
    from scapy.utils import PcapReader

    rd = PcapReader('./a.pcap')                               
    while True:
        data = rd.read_packet()
            if data is None:
                break
            else:
                '''
                    分析处理过程

                    '''
    rd.close()

源代码处理过程应该没问题,毕竟可以运行处理小数据包,但数据量一大就会报错。
而且有时候不稳定,简单的同样的代码有时可以运行成功,有时也会报上面的错,我想是不是系统的问题,我用的是在windows10,内存16G应该足够大,为什么会报错呢,求大神解答!

2个回答

提取的pcap包里有其他协议类型的数据包,像ARP包就没有len属性,会报错。把打开的包里的协议类型过滤一下。

我来给你整理下错误信息:
init.py", line 877, in
IFACES.load_from_powershell()
init.py", line 767, in load_from_powershell
ifaces_ips = get_ips()
init.py", line 495, in get_ips
['Description', 'IPAddress']):
init.py", line 225, in exec_query_ps
__init
_.py", line 199, in query
self.process.stdin.flush()
OSError: [Errno 22] Invalid argument

仔细看看这些错误信息,也就估计能猜到是这个包的Bug,没有处理获取不到IP地址的情况,或者说兼容性没做好。在某些情况下,获取不到IP地址而抛出的异常。
具体的只有你自己调试看看了。。

qq_40939785
Eumenides-Z 我改了一下,这新的报错是为什么呢,同样是小文件可以运行,大文件报错
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用Scapy分析pcap数据包
网络上首先搜到的是如下用法: 看到 “for pktno in range(len(pkts))”,知道rdpcap是把整个数据包读入内存中。我担心数据包很大的情况下,性能影响很大。 于是继续搜,搜到了一篇这样使用的陷阱。解析如下: Scapy所在目录:C:\Python27\Lib\site-packages\scapy Rdpcap函数在utils.
python———scapy库(数据包发送)
Scapy的是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。它可以很容易地处理一些典型操作,比如端口扫描,tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)。最重要的他还有很多更优秀的...
scapy 分析http数据包报头
还有一个包,好像是叫scapy-http,不过我没用,我觉得scapy已经够用了。 当你用tcpdump抓到数据包后,以下为一部分代码: packet_list = rdpcap(pcap_file) for packet in packet_list: http_header = bytes.decode(packet['Raw'].load).split('\r\n') ...
ipv6 UDP pcap数据包 ipv6 pcap数据包
ipv6 UDP pcap数据包 ipv6 pcap数据包 共大家参考是什么样子的,另外可以看下 ipv6的地址如何配置的。
python分析pcap
利用Python快速分析数据包的完整性,提示数据包缺少步骤,按照源端口目的端口源ip和目的ip进行分流
scapy 修改pcap数据包再使用tomahawk发包的问题
scapy使用 rdpcap读取数据包 pcap = rdpcap(pcap_path) 然后修改源ip地址这样 pcap[x][&quot;IP&quot;].src = &quot;修改后的ip地址&quot; 很多使用的地方可以直接运行 scapy 测试 或者参考文档 def mod_pcap_src(pcap_path,ip): pcap = rdpcap(pcap_path) new_pcap = [] ...
python scapy 捕获与解析数据包的源码解析
scapy 是一个python编写的功能强大的网络数据包操作库,可以仿造,捕获和解析大量不同协议类型的数据包。1 scapy 安装与交互使用可参考 http://scapy.readthedocs.io/en/latest/usage.html注意事项:安装 graphviz 和 ImageMagick >>> yum install graphviz >>> pip install graphvi
解析pcap数据包
解析pcap数据包,提取出其中内容,http协议,https,icmp.dns
pcap数据包如何解析
请问pcap数据包应如何解析。
dpkt和scapy对处理大pcap包分析对比
对于scapy对pcap包的处理在我之前的一篇博客中有写: https://blog.csdn.net/qq_38231051/article/details/81460427 这里对用scapy包对大pcap文件处理做出了简单的解决方法,但scapy包处理这种大文件有一个没法忍的缺点就是: 太慢了!!! 没错,特别慢,基本一个1G的文件要15分钟+,每跑一次数据我就得去看一集数码宝贝.....
tcp ipv6 pcap 数据包
tcp ipv6 pcap 数据包
pcap数据包 DNS解析
对pcap包进行解析 获取DNS内容 C语言编写 可以对数据流进行处理
远程登陆测试数据包pcap
远程登陆数据包 包含远程登陆数据报,数据包为pcap,属于数据流量分析系统
pcap数据包转换成netflow
使用命令: nprobe -i 文件路径 -P ./ -D t 命令执行后nprobe会解析pcap包以netflow的格式存储在本地 netflow样本:
python3使用scapy分析修改pcap大文件(1G)
    对pcap文件分析比较常用的是C语言进行分析。这里由于常用python3,所以在网上寻找使用python3来处理这种大pcap包。不过现在网上有的对应教程非常少,而一大部分是用rdpcap来打开文件的,这个方法在打开大文件是完全行不通的,内存完全不够大,而且运行太慢。最后我找到了使用PcapReader读文件返回一个迭代器来解决大文件占用太多内存的问题。在pcap中数据结构里处理中也遇到了...
python scapy
scapy compatibility.py 177行出错。用这个包可以解决。删除C:\Python27\Lib\site-packages\scapy目录下所有文件。解压zip包中文件,运行命令 python setup.py install
用Python解析pcap数据包中的五元组信息
用Python解析pcap数据包中的五元组信息 #!/usr/bin/env python # -*- coding: UTF-8 -*- try: import scapy.all as scapy except ImportError: import scapy try: # This import works from the project directory ...
python 网络工具安装方法及技巧;scapy;pypcap;pcap;dpkg;
内容预览: ====================== ★Linux安装python库★ ●安装和卸载: 安装时:python setup.py install --record filelist.log 卸载时:将filelist.log里面显示的所有项目rm掉就可以,linux中:cat filelist.log | xargs rm -rf pip install xxx pip uninstall xxx 指定版本: pip install scapy==2.3.2
利用Python库Scapy解析pcap文件
每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢?pip安装scapy,然后解析pcap:import scapy from scapy.all import * from scapy.utils import PcapReader packets=rdpcap(&quot;./test.pcap&quot;) for data in pack...
win64 安装pcapy的依赖包 pcap,dnet,scapy
scapy在linux环境中对pcap文件进行操作非常方便,但在windows下,特别是在python2.7环境下却会碰到各种各样的依赖包无法使用的问题,最明显的可能就属dnet和pcap的python依赖包了。 在网上找了很多依赖包都是win32的,终于找到了win64 的,成功安装了。 包括文件 d net-1.12.win-amd64-py2.7.exe pcap-1.1.win-amd64-py2.7.exe scapy-2.2.0.win-amd64.exe
Python出现属性错误(Attributeerror)的原因之一
检查类中构造函数__init__()是否写正确,左右两边各两条下划线
python AttributeError: _exit_ 这是什么错误
python AttributeError: _exit_ 这是什么错误
用scapy解析出pcap文件的http报文
p.show函数可以分层次打印pcap文件的内容 例程序1:#encoding=utf-8 import scapy.all as scapy ''' try: # This import works from the project directory import scapy_http.http except ImportError: # If you installe
分析数据包分析数据包
分析数据包分析数据包分析数据包分析数据包
python 的 scapy库,实现网卡收发包
问题: 测试时 收发流采用TestCenter、SmartBit等仪表来进行。如果仍采用其进行自动化冒烟,则会带来效率低、成本高的问题。 解决方案: 采用网卡来收发流,虽然有性能统计上的缺陷,但可以验证一些基本功能,且经济。 采用scapy模块, 1-获取计算机网卡的iface,并预先设计好用哪些iface进行收发流; 2-conf.L2listen对各个iface进行监听 3-su
Libpcap库编程指南--分析数据包
现在,我们可以捕捉并过滤网络流量了,那就让我们学以致用,来做一个简单使用的程序吧。 在本讲中,我们将会利用上一讲的一些代码,来建立一个更实用的程序。 本程序的主要目标是展示如何解析所捕获的数据包的协议首部。这个程序可以称为UDPdump,打印一些网络上传输的UDP数据的信息。我们选择分析和现实UDP协议而不是TCP等其它协议,是因为它比其它的协议更简单,作为一个入门程序范例,是很不错的选择。让我们
Python中的AttributeError错误的常见原因
常见的原因如下: 类构造函数出了问题,本来是init()函数,但有几个类的构造函数成了_init,少了一个’_’符号 缩进不正确,把空格当做tab。
pcap数据包解析及数据特征提取
pcap数据包解析及数据特征提取 #include #include #include #include #include #pragma pack(1) #define BUFSIZE 1526 #define STRSIZE 1024 typedef int bpf_int32; typedef unsigned int bpf_u_int32; typedef unsigned sh
Python AttributeError异常
遇到一个很奇怪的问题,本人刚学习Python ,在学类与对象的方法时,在调用方法时,我的对象名取名为k ,然而死活就是报AttributeError异常; 在反复检查代码无误后,然后我试着改一下名字,奇迹出现了,名字一改就好了,我以为不能使用单个字母,抱着试一试的心态,我将对象名改为a ,奇迹再次出现,成功了!!!规则不是很懂,还请大神指教nn```n class Person:n population=0n def __init__(self,name):n self.name=namen print '(Initializing %s)'%self.namen Person.population+=1n def __del__(self):n print'%s says bye.'%self.namen Person.population-=1n if Person.population==0:n print 'I am the last one.'n else:n print 'There are still %d people left.'% Person.populationn def sayHi(self):n print 'Hi,my name is %s.' % self.namen def howMany(self):n if Person.population==1:n print 'I am the only person here.'n else :n print 'We have %d persons here.' % Person.populationnswaroop=Person('swaroop')nswaroop.sayHi()nswaroop.howMany()nn# 此处有问题 na=Person('Abdul Kalam')na.sayHi()na.howMany()nnswaroop.sayHi()nswaroop.howMany()n```nn
pcap开源库使用
pcap开源库使用导出的dll,包含一些crc校验
使用python中的scapy库抓取并解析pcap包(五元组信息)
1. 安装好scapy库 2. 使用scapy库抓包 pkts = sniff(iface="eth0",count=3) 简单的抓取数据包 wrpcap("demo.pcap", pkts) 保存为demo.pcap 3. 解析包 参考:https://github.com/HatBoy/Pcap-Analyzer #coding:UTF-8 from scapy.all import * ...
关于pcap库调用
在WINDOWS中调用PCAP库的pcap_open_live时,第一个参数dev,我该怎么传递呀,是否可以根据本主机某IP得到对应的dev参数了,怎么得到呀?谢谢!
Java之Pcap文件解析(一:Pcap格式分析)
前言 需求 本系列文章主要完成以下功能: 1. 对Pcap文件进行解析,并从中提取TCP和UDP会话 2. 从TCP会话中提取出其数据负载信息 软件最终结果 [主界面] [File 菜单] [Help 的 About 菜单项,版权声明] [选择Pcap文件] [选择输出目录] [正在解析] [解析测试1:对pcap1.pcap进行解析] ...
Pyshark分析pcap文件
Filtering packets:Filtering packets can be done with any capture object, like so:filtered_cap = pyshark.FileCapture(path_to_file, display_filter='http') filtered_cap2 = pyshark.LiveCapture('eth0', bpf_
使用libpcap库过滤pcap文件中的数据包
工作需要,要对pcap文件中的数据包进行过滤,只保留普通端口的TCP、UDP数据包。结果如下图代码如下:#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;time.h&amp;gt; #include &amp;lt;pcap/pcap.h&amp;gt; #include &amp;lt;arpa/inet.h&amp;gt; #define ETHER...
Wireshark的Pcap文件格式分析
pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包 下面对这种格式的文件简单分析一下:    pcap文件的格式为:   文件头    24字节   数据报头 + 数据报  数据包头为16字节,后面紧跟数据报   数据报头 + 数据报  ...... pcap.h里定义了文件头的格式 struct pcap_file_head
AttributeError
Traceback (most recent call last):rn File "model_test.py", line 20, in rn import commonrn File "/home/tl/deeplab/common.py", line 45, in rn flags.DEFINE_enum('model_variant', 'xception_65', ['xception_65'],rnAttributeError: module 'tensorflow.python.platform.flags' has no attribute 'DEFINE_enum'rnrncommom.py,line45:rnflags.DEFINE_enum('model_variant', 'xception_65', ['xception_65'],rn 'DeepLab model variants.')rnrn
wireshark pcap分析
wireshark pcap文件详解 wireshark shi pcap文件 格式分解分析进行协议还原
pcap文件格式分析
pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包 下面对这种格式的文件简单分析一下:            pcap文件的格式为:                    文件头 24字节                    数据报头 + 数据报 数据包头为16字节,后面紧跟数据报                    数据
pcap格式文件分析-源码
支持网络分析仪的抓包数据格式pcap格式文件解析,并可以实现根据源目标不同进行选择性分析。
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表