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