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 random模块常用方法
Nov 03 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
Python过滤列表用法实例分析
Apr 29 Python
Python变量访问权限控制详解
Jun 29 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python字典排序的方法
Oct 12 Python
Python selenium的基本使用方法分析
Dec 21 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
python多维数组分位数的求取方式
Mar 03 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP内置加密函数详解
2016/11/20 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
python保存文件方法小结
2018/07/27 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
数控个人求职信范文
2014/02/03 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
个人安全承诺书
2014/05/22 职场文书
签约仪式策划方案
2014/06/02 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
JavaScript的function函数详细介绍
2021/11/20 Javascript
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python