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中下划线的使用方法
Mar 27 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
python简单判断序列是否为空的方法
Jun 30 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Django框架实现的简单分页功能示例
Dec 04 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 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
第三节--定义一个类
2006/11/16 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
php实例化一个类的具体方法
2019/09/19 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript+xml技术实现分页浏览
2008/07/27 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
快速查找Python安装路径方法
2020/02/06 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
后备干部培训方案
2014/05/22 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
2014年德育工作总结
2014/11/20 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
优秀创业计划书分享
2019/07/19 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
Python实现视频自动打码的示例代码
2022/04/08 Python