python調(diào)用tcpdump抓包過(guò)濾的方法
本文實(shí)例為大家分享了python調(diào)用tcpdump抓包過(guò)濾的具體代碼,供大家參考,具體內(nèi)容如下
之前在linux用python腳本寫(xiě)一個(gè)抓包分析小工具,實(shí)在不想用什么libpcap、pypcap所以,簡(jiǎn)單來(lái)了個(gè)tcpdump加grep搞定?;舅悸肥欠謩e起tcpdump和grep兩個(gè)進(jìn)程,進(jìn)程直接通過(guò)pipe交換數(shù)據(jù),簡(jiǎn)單代碼如下:
#! /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
運(yùn)行效果:
其中值得注意tcpdump中'-B', '4096'這個(gè)參數(shù),官方文檔貌似沒(méi)有明確提及,但是它是你解決丟包的關(guān)鍵地方之一,當(dāng)然還有-s這個(gè)參數(shù)也得好好利用!其他的大家可以自由發(fā)揮!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)兩個(gè)list求交集,并集,差集的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)兩個(gè)list求交集,并集,差集的方法,結(jié)合實(shí)例形式分析了Python使用intersection、union及difference方法實(shí)現(xiàn)兩個(gè)集合list的交集、并集與差集操作技巧,需要的朋友可以參考下2018-08-08python的django寫(xiě)頁(yè)面上傳文件及遇到的問(wèn)題小結(jié)
這篇文章主要介紹了python的django寫(xiě)頁(yè)面上傳文件以及遇到的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08python判斷、獲取一張圖片主色調(diào)的2個(gè)實(shí)例
一幅圖片,想通過(guò)程序判斷獲得其主要色調(diào),應(yīng)該怎么樣處理?本文通過(guò)python實(shí)現(xiàn)判斷、獲取一張圖片的主色調(diào)方法,需要的朋友可以參考下2014-04-04Python中OpenCV?Tutorials?20??高動(dòng)態(tài)范圍成像的實(shí)現(xiàn)步驟
這篇文章主要介紹了OpenCV?Tutorials?20?-?高動(dòng)態(tài)范圍成像,本文還給大家展示了一種稱為曝光融合的替代方法,它可以產(chǎn)生低動(dòng)態(tài)范圍的圖像,需要的朋友可以參考下2022-06-06使用Python實(shí)現(xiàn)在Windows下安裝Django
今天小編就為大家分享一篇關(guān)于使用Python實(shí)現(xiàn)在Windows下安裝Django,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10python實(shí)現(xiàn)flappy bird游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)flappy bird游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法
本文介紹基于Python語(yǔ)言,將一個(gè)Excel表格文件中的數(shù)據(jù)導(dǎo)入到Python中,并將其通過(guò)字典格式來(lái)存儲(chǔ)的方法,感興趣的朋友一起看看吧2023-01-01