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 相关文章推荐
使用IPython来操作Docker容器的入门指引
Apr 08 Python
Python中atexit模块的基本使用示例
Jul 08 Python
Python中的浮点数原理与运算分析
Oct 12 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
python模块smtplib学习
May 22 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
python实现简单http服务器功能
Sep 17 Python
Python rstrip()方法实例详解
Nov 11 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
基于python历史天气采集的分析
Feb 14 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jQuery设计思想
2017/03/07 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python collections模块使用方法详解
2019/08/28 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
如何验证python安装成功
2020/07/06 Python
python re的findall和finditer的区别详解
2020/11/15 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
2014春晚主持词
2014/03/25 职场文书
劳资协议书范本
2014/04/23 职场文书
环保口号大全
2014/06/12 职场文书
2014年中秋寄语
2014/08/11 职场文书
承诺书样本
2014/08/30 职场文书
民主评议党员总结
2014/10/20 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python