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编辑器WingIDE的使用经验总结
Aug 31 Python
python GUI实例学习
Nov 21 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
Python实现的质因式分解算法示例
May 03 Python
python实现简单flappy bird
Dec 24 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
Three.js基础学习教程
2017/11/16 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
在Python中使用模块的教程
2015/04/27 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
python3对接mysql数据库实例详解
2019/04/30 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
经济学人订阅:The Economist
2018/07/19 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
《夏夜多美》教学反思
2014/02/17 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
感恩节活动策划方案
2014/05/16 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
初中政治教师教学反思
2016/02/23 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
HTML中的表单元素介绍
2022/02/28 HTML / CSS
Nginx跨域问题解析与解决
2022/08/05 Servers