python调用tcpdump抓包过滤的方法


Posted in Python onJuly 18, 2018

本文实例为大家分享了python调用tcpdump抓包过滤的具体代码,供大家参考,具体内容如下

之前在linux用python脚本写一个抓包分析小工具,实在不想用什么libpcap、pypcap所以,简单来了个tcpdump加grep搞定。基本思路是分别起tcpdump和grep两个进程,进程直接通过pipe交换数据,简单代码如下:

#! /usr/bin/python
 
def tcpdump():
 import subprocess, fcntl, os
 # sudo tcpdump -i eth0 -n -s 0 -w - | grep -a -o -E "Host: .*|GET /.*"
 cmd1 = ['tcpdump', '-i', 'eth0', '-n','-B', '4096','-s', '0', '-w', '-']
 cmd2 = ['grep', '--line-buffered', '-a', '-o', '-E', 'Host: .*|GET /.*']
 p1 = subprocess.Popen(cmd1, stdout=subprocess.PIPE)
 p2 = subprocess.Popen(cmd2, stdout=subprocess.PIPE, stdin=p1.stdout)
 
 flags = fcntl.fcntl(p2.stdout.fileno(), fcntl.F_GETFL)
 fcntl.fcntl(p2.stdout.fileno(), fcntl.F_SETFL, (flags | os.O_NDELAY | os.O_NONBLOCK))
 return p2
 
 
def poll_tcpdump(proc):
 #print 'poll_tcpdump....'
 import select
 txt = None
 while True:
 # wait 1/10 second 
 readReady, _, _ = select.select([proc.stdout.fileno()], [], [], 0.1)
 if not len(readReady):
  break
 try:
  for line in iter(proc.stdout.readline, ""):
  if txt is None:
   txt = ''
  txt += line
 except IOError:
  print 'data empty...'
  pass
 break
 return txt
 
 
proc = tcpdump()
while True:
 text = poll_tcpdump(proc)
 if text:
 print '>>>> ' + text

运行效果:

python调用tcpdump抓包过滤的方法

其中值得注意tcpdump中'-B', '4096'这个参数,官方文档貌似没有明确提及,但是它是你解决丢包的关键地方之一,当然还有-s这个参数也得好好利用!其他的大家可以自由发挥!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
Python中turtle作图示例
Nov 15 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
python 提取文件指定列的方法示例
Aug 07 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
使用npy转image图像并保存的实例
Jul 01 Python
python else语句在循环中的运用详解
Jul 06 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
python如何随机生成高强度密码
Aug 19 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
Django框架模板用法详解
Jun 10 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 #Python
解决Python3中的中文字符编码的问题
Jul 18 #Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 #Python
python 将print输出的内容保存到txt文件中
Jul 17 #Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 #Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 #Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 #Python
You might like
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python操作json数据的一个简单例子
2014/04/17 Python
python动态参数用法实例分析
2015/05/25 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python如何实现内容写在图片上
2018/03/23 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
写给老婆的检讨书
2014/02/21 职场文书
门前三包责任书
2014/04/15 职场文书
室内设计专业自荐信
2014/05/31 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
政府个人对照检查材料
2014/08/28 职场文书
升学宴演讲稿
2014/09/01 职场文书
客服专员岗位职责
2015/02/10 职场文书
教你用python控制安卓手机
2021/05/13 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
Python学习之os包使用教程详解
2022/03/21 Python
Python自动化实战之接口请求的实现
2022/05/30 Python