python 抓包保存为pcap文件并解析的实例


Posted in Python onJuly 23, 2019

首先是抓包,使用scapy模块,

sniff()函数 在其中参数为本地文件路径时,操作为打开本地文件

若参数为BPF过滤规则和回调函数,则进行Sniff,回调函数用于对Sniff到的数据包进行处理

import os
from scapy.all import *
 
pkts=[]
count=0
pcapnum=0
filename=''
 
def test_dump_file(dump_file):
  print "Testing the dump file..."
  
  if os.path.exists(dump_file):
    print "dump fie %s found." %dump_file
    pkts=sniff(offline=dump_file)
    count = 0
    while (count<=2):                   
      print "----Dumping pkt:%s----" %dump_file
      print hexdump(pkts[count])
      count +=1
  else:
    print "dump fie %s not found." %dump_file
 
def write_cap(x):
  global pkts
  global count
  global pcapnum
  global filename
  pkts.append(x)
  count +=1
  if count ==3:             <span style="font-family: Arial, Helvetica, sans-serif;">#每3个TCP操作封为一个包(为了检测正确性,使用时尽量增多)</span>
 
  
  pcapnum +=1
  pname="pcap%d.pcap"%pcapnum
  wrpcap(pname,pkts)
  filename ="./pcap%d.pcap"%pcapnum
  test_dump_file(filename)
  pkts=[]
  count=0
    
 
 
 
if __name__=='__main__':
  print "Start packet capturing and dumping ..."
  sniff(filter="dst net 127.0.0.1 and tcp",prn=write_cap)   #BPF过滤规则

下面是对pcap文件的解析,会自动查找下一个pcap文件,按照src.ip和dst.ip进行划分

# -*- coding: cp936 -*-
import re
import zlib
import os
 
from scapy.all import *
num=1
a=rdpcap("pcap1.pcap")               #循环打开文件
while True:
  try:
    num+=1
    file_name="pcap%d.pcap" % num
    b=rdpcap(file_name)
    a=a+b
  except:
    break
    print "[*] Read pcap file ok"
  
 
 
print "[*] Begin to parse pcapfile..."
print a
try:
  #print "[*] OPen new pcap_file %s" % pcap_file
  sessions=a.sessions()
  for session in sessions:
    print "[*]New session %s" % session
    data_payload=""
    for packet in sessions[session]:
      try:
        data_payload +=str(packet[TCP].payload)
        print "[**] Data:%s" % data_payload
      except:
        pass
except:
  print "[*]no pcapfile..."

以上这篇python 抓包保存为pcap文件并解析的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 文件与目录操作
Dec 24 Python
Python爬取读者并制作成PDF
Mar 10 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
书单|人生苦短,你还不用python!
Dec 29 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
python实现合并两个排序的链表
Mar 03 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
用python写测试数据文件过程解析
Sep 25 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
Django ModelForm组件使用方法详解
Jul 23 #Python
Pandas之groupby( )用法笔记小结
Jul 23 #Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 #Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 #Python
Django 静态文件配置过程详解
Jul 23 #Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 #Python
pandas通过字典生成dataframe的方法步骤
Jul 23 #Python
You might like
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
函授毕业生自我鉴定
2013/11/06 职场文书
建筑个人求职信范文
2014/01/25 职场文书
学生会离职感言
2014/02/11 职场文书
党员组织关系介绍信
2014/02/13 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书