栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

Python抓包练习-Linux

Python 更新时间:发布时间: 百科书网 趣学号

需要获取网络中的报文,可以保存为pcap而后读取分析,但是总觉得来回读写数据过于麻烦,不如直接获取报文分析。面向Google编程后,并结合实际的使用,总结如下:

使用python抓包,需要利用scapy,安装直接使用pip指令安装即可:

pip install scapy
一、报文的抓取 1.sniff使用

sniff用来实际抓取报文,使用参考如下:

package = sniff(iface,prn=handlePackage,count,filter)

参数说明:

iface:需要抓取那个网卡上的流量,linux可以通过ifconfig查看(例如:“enp1s0”)

prn:报文的处理函数,抓取到符合条件的报文,即进入该回调函数处理

count:指定抓取的报文数量

filter:抓包过滤条件(例如“src host xx.xxx.xxx.xxx && src port xxxx”该条件用于过滤指定的IP与指定的端口)

2.关于scapy需要管理员权限问题的解决

需要说明的是:linux下获取报文需要root权限,所以运行可能会存在Permission Denied的报错,使用setcap指令设置使用权限即可。可以参考代码:

setcap 'cap_net_bind_service+eip cap_net_raw+eip'  $(readlink -f $(which python3))
二、报文分析

报文分析可以获取各层的数据,可以通过回调函数中调用show()来显示各层报文信息

def handlePackage(package):
    package.show()

但是这个方法也只是看个报文,并不能获取到值进行判断,通过如下参考代码可以实现抓取报文首包字节流数据:

from scapy.all import sniff,raw
package_res = sniff(piface,filter,count,prn)
res = raw(package_res[0])
print(res)

然后就可以获取到报文的字节流数据,之后,可以根据帧格式依次进行解析。

当然,scapy还为调包侠准备了现成的方法:

from scapy.all import sniff,Raw
data = package.getlayer(Raw).load
print(data)

以上代码即可以获取传输层以上的数据

如何获取传输层,网络层,物理层的相关数据:

layer = 'IP'#对应的物理层、传输层分别:Ethernet UDP/TCP
field = 'src'#对应参数如下:
"""
Ethernet :dst(目的Mac)       src(源Mac)       type   
IP :version len id ttl proto src(源IP) dst(目的IP)
UDP/TCP:sport(源端口) dport(目的端口) len chksum
"""
package = sniff(prn,iface,count,filter)
content = getattr(package[0].getlayer(layer),field)
print(content)#获取到报文的源IP

如何获取报文有几层数据:

package.layers()

获取的结果如下:

layers is [, , , , ]

之后获取各层数据时,便可以使用对应的名称作为Key值,比如获取vlan信息,可以使用方法:

vlan_id = getattr(package['Dot1Q'], 'vlan')

参考资料:

scapy的github链接:

scapy/scapy at master · secdev/scapy · GitHubScapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3. - scapy/scapy at master · secdev/scapyhttps://github.com/secdev/scapy/tree/master/scapy

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1033343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号