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

#! /usr/bin/pythondef 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 p2def poll_tcpdump(proc):#print 'poll_tcpdump....'import selecttxt = Nonewhile True:# wait 1/10 second readReady, _, _ = select.select([proc.stdout.fileno()], [], [], 0.1)if not len(readReady):breaktry:for line in iter(proc.stdout.readline, ""):if txt is None:txt = ''txt += lineexcept IOError:print 'data empty...'passbreakreturn txtproc = tcpdump()
while True:text = poll_tcpdump(proc)if text:print '>>>> ' + text

执行效果:

当中值得注意tcpdump中'-B', '4096'这个參数。官方文档貌似没有明白提及,可是它是你解决丢包的关键地方之中的一个。当然还有-s这个參数也得好好利用!

其它的大家能够自由发挥。

转载请注明:http://blog.csdn.net/wangqiuyun/article/details/46966839

python调用tcpdump抓包过滤相关推荐

  1. Python调用Tushare抓取上证指数并作初步分析示例

    1.关于Tusahre Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析 ...

  2. html 调用tcpdump,抓包工具:tcpdump抓包命令详解

    简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的"头& ...

  3. python解包dump,tcpdump抓包及tshark解包方法介绍

    tshark是wireshark的命令行工具,经过shell命令抓取.解析报文.tcpdump是Linux系统下的抓包工具.wireshark和tcpdump都共同使用 libpcap做为其底层抓包的 ...

  4. 使用Python调用Flickr API抓取图片数据

    Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...

  5. 在 Linux 命令行中使用 tcpdump 抓包

    tcpdump抓包时,如果-i选项指定为一个网卡地址,那么抓取的数据包数据链路层是以太网头部:如果指定any,则以太网头部将被替换为linux cooked capture头部 # tcpdump - ...

  6. tcpdump 抓包

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  7. tcpdump抓包使用小结

    前言 tcpdump 是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包.tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 ...

  8. tcpdump抓包笔记

    1. 概述 tcpdump 是一个命令行实用工具,允许你抓取和分析经过系统的流量数据包.它通常被用作于网络故障分析工具以及安全工具. 并且支持多种选项和过滤规则,适用场景十分广泛. 由于它是命令行工具 ...

  9. Linux tcpdump抓包

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

最新文章

  1. python queue 模块教程
  2. iframe 覆盖父页面_一次iframe子页面与父页面的通信
  3. 在无头单链表的一个非头节点前插入一个节点(C语言)
  4. ubuntu16.04下FSA-Net环境安装和训练
  5. 生物信息学初学——山大公开课笔记
  6. 线性代数(同济) 第六版 复习
  7. 完成类似百度贴吧客户端tableview滑动效果
  8. thinkpad e480安装win7
  9. AngularJS知识概括
  10. centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...
  11. python有架构师吗_运维架构师-Python 自动化运维开发-021
  12. 小学生计算机校本课程教材,二年级校本课程教材
  13. Retinanet网络结构简介
  14. 机顶盒ttl无法输入_哪位大神帮帮忙,B860 AV1.1 TTL 无法输入命令
  15. kafka如何扩容分区Partition、并重新分区
  16. 利用 Travis CI 把 Android 项目部署到 github
  17. 写一个各向异性/各向同性高斯滤波器
  18. 去除js代码混淆的方法,亲测有效
  19. Qt实践3: 图片浏览器
  20. 墨刀--在线原型设计工具

热门文章

  1. CTreeCtrl标签的编辑
  2. LINQ to SQL 在 Visual Studio 2008 中的简单应用
  3. String比较 运用String.equals
  4. vue.js 多图上传,并可预览
  5. Python黑帽编程 3.1 ARP欺骗
  6. 甲骨文推出全新Oracle Cloud at Customer
  7. 2015年十佳IDC评选结果:50强名单揭晓
  8. 关于CLR、CIL、CTS、CLS、CLI、BCL和FCL
  9. ubuntu的SSH的安装和免密码登陆
  10. Windows开发环境搭建(安装 VS2010, VS2013, VS2015 Community, Windows Server 2008 R2)