国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python調用tcpdump抓包過濾的方法

2020-02-15 22:26:30
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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

運行效果:


其中值得注意tcpdump中'-B', '4096'這個參數,官方文檔貌似沒有明確提及,但是它是你解決丟包的關鍵地方之一,當然還有-s這個參數也得好好利用!其他的大家可以自由發揮!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌拉特前旗| 平乡县| 皋兰县| 梧州市| 伊春市| 宁强县| 东兰县| 青铜峡市| 太和县| 贵州省| 河间市| 绥芬河市| 雷州市| 莱阳市| 积石山| 九江市| 兴化市| 娱乐| 昌黎县| 玛多县| 师宗县| 宝应县| 象山县| 宣恩县| 客服| 章丘市| 肃北| 图片| 峨边| 平昌县| 革吉县| 台山市| 迁安市| 林芝县| 宝丰县| 兴义市| 永嘉县| 海丰县| 买车| 沧州市| 瑞金市|