需要获取网络中的报文,可以保存为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 [<class 'scapy.layers.l2.Ether'>, <class 'scapy.layers.l2.Dot1Q'>, <class 'scapy.layers.inet.IP'>, <class 'scapy.layers.inet.UDP'>, <class 'scapy.packet.Raw'>]

之后获取各层数据时,便可以使用对应的名称作为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

Python抓包练习-Linux相关推荐

  1. python抓包代码_Python抓包并解析json爬虫的完整实例代码

    Python抓包并解析json爬虫FwA免费资源网 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫:FwA免费资源网 Fw ...

  2. LiveGBS流媒体服务平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包

    LiveGBS流媒体服务平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包 1.第一步:抓包工具准备 1.1.Linux 1.2.windows 2.第二步:找到级联的上级i ...

  3. python 抓包解析数据_Python抓包并解析json爬虫的完整实例代码

    Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...

  4. Python抓包并解析json爬虫

    Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...

  5. python拦截数据包_httphttps,python抓包知多少

    原标题:http&https,python抓包知多少 在有些情景下,需要拦截所有的http包和https数据包,http包很好抓,但是https包相对比较复杂,在此文章中,主要介绍http和h ...

  6. 使用python抓包并分析后存入数据库,或直接分析tcpdump和wireshark抓到的包,并存入数据库

    准备工作 抓包首先要用到scapy包 安装scapy包 pip install scapy 在python代码中引用scapy包 from scapy.all import * #为了省事,直接imp ...

  7. 【Python】Python抓包

    Python抓包并分析获取请求头 依赖的包 抓包代码 分析代码 scapy中rdpcap分析 dpkt分析 全部代码 使用Python进行数据爬取时,很多情况下需要登录或需要某些Cookie,如果直接 ...

  8. python抓包库_python 网络抓包

    Python下的网络抓包库pylibpcap.pypcap.pycap这些库其实这些都是libpcap的Python绑定实现,libpcap才是真正的核心. pypcap 目前pypcap和pylib ...

  9. python 抓包 scapy udp,python+scapy 抓包與解析

    最近一直在使用做流量分析,今天把 scapy 部分做一個總結. python 的 scapy 庫可以方便的抓包與解析包,無奈資料很少,官方例子有限,大神博客很少提及, 經過一番嘗試后,總結以下幾點用法 ...

最新文章

  1. matlab怎么调用DeepLearn,使用DeepLearnToolbox-master中DBN工具箱做数据分类出现问题,求......
  2. 替换某个目录下的文本文件内容字符串
  3. python之路-SQLAlchemy
  4. “约见”面试官系列之常见面试题之第八十一篇之webpack(建议收藏)
  5. 判断深度学习模型的稳定性_问题引领构建数学模型,讲练结合促进深度学习
  6. 超经典,百度最爱考的安卓Android百题
  7. Please, commit your changes or stash them before you can merge.
  8. 我的《野蛮生长》书摘
  9. OpenCV—积分图像
  10. python滤波器的截面图_Python OpenCV学习笔记之:图像滤波处理
  11. 构建根文件系统_Linux之构建文件系统
  12. 《老罗Android开发视频教程-安卓巴士》(Android 开发)
  13. java爬虫技术之Selenium爬虫
  14. 数值分析原理课程实验——四阶龙格-库塔(Runge-Kutta)方法
  15. 天正双击墙体不能编辑_20个天正CAD常备技巧,助你神速绘图!
  16. fseek(f,0,SEEK_SET);
  17. 梯度、散度、旋度、拉普拉斯算子
  18. Backtrader策略实现(一) | 简单双均线
  19. 召回率(Recall)
  20. mysql 查询dual报错_MYSQL基础02(查询)

热门文章

  1. edge浏览器使用ie兼容模式以及不安全的TLS设置
  2. 解析“extern”
  3. 环信 头像 昵称处理
  4. C语言:用指针实现 矩阵转置
  5. 怎样将 excel 里的日期保留到年月
  6. centos7 安装 apollo
  7. openerp js调用Python类方法
  8. Java小程序:分别计算1-100内的奇数和偶数的和
  9. 在计算机中程序主要存放在什么中,在计算机中.指令主要存放在( )中.A.存储器 B.键盘 C.鼠标 D.运算器——青夏教育精英家教网——...
  10. mysql总是显示无法连接服务器,Navicat出现无法远程连接MySql服务器问题的解决办法...