使用tcpdump抓包需要使用子程序進行操作比較好,不影響其他主**邏輯,主要思路總結如下:
import sys
import time
import datetime
class
tcpdumputils()
:def
__init__
(self, dumpname =
'./log/'
, arguments=
none):
self.dumpfilepath = dumpname
self.filename =
'test'
if arguments is
notnone
:for argob in arguments:
if arguments[argob]
istrue
: self.filename +=
str(argob)
+'_'
####隨機產生乙個時間戳
starttime = datetime.datetime.now(
).strftime(
'%y_%m_%d_%h_%m_%s'
) self.filename += starttime +
".pcag"
####開啟抓包
defstarttcpdumpwithfile
(self)
:import subprocess
#p = subprocess.popen('tcpdump -i any -s 0 tcp -w ./ding.pcapng', shell=true)
cmd1 =
['tcpdump'
,'-i'
,'any'
,'-s'
,'0'
,'tcp'
,'-w'
, self.dumpfilepath + self.filename]
self.tcpprocess = subprocess.popen(cmd1)
return self.tcpprocess
####停止抓包
defstoptcpdumpwithfile
(self)
: time.sleep(2)
self.tcpprocess.kill(
)def
tcpdump()
:import subprocess, fcntl, os
# sudo tcpdump -i eth0 -n -s 0 -w - | grep -a -o -e "host: .*|get /.*"
cmd1 =
['sudo'
,'tcpdump'
,'-i'
,'en0'
,'-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
@staticmethod
defpoll_tcpdump
(proc)
:# print 'poll_tcpdump....'
import select
txt =
none
while
true
:# wait 1/10 second
readready, _, _ = select.select(
[proc.stdout.fileno()],,
,0.1)if
notlen
(readready)
:break
try:
for line in
iter
(proc.stdout.readline,"")
:if txt is
none
: txt =
'' txt +=
str(line)
except ioerror:
print
'data empty...'
pass
break
return txt
如何利用tcpdump對mysql進行抓包操作
命令如下 tcpdump s 0 l w dst 192.168.244.10 and port 3306 i eno16777736 strings 其中 i指定監聽的網路介面,在rhel 7下,網路介面名不再是之前的eth0,而是 eno16777736。在rhel 5 6下,可直接不帶 i引數...
快速上手tcpdump進行網路抓包分析
簡介 tcpdump是linux中強大的網路資料採集分析工具之一。mannal手冊的簡介 dump the traffic on a network,根據使用者的定義對網路上的資料報進行截獲的包分析工具,支援針對網路層 協議 主機 網路或埠的過濾,並提供and or not等邏輯語句進行篩選過濾。基...
tcpdump如何抓界麵包 tcpdump抓包命令
一.選項 tcpdump支援相當多的引數,如使用 i引數指定tcpdump監聽的網路介面,這在計算機具有多個網路介面時非常有用,使用 c引數指定要監聽的資料報數量,使用 w引數指定將監聽到的資料報寫入檔案中儲存,等等。如下 a 將網路位址和廣播位址轉變成名字 b 在資料 鏈路層上選擇協議,包括ip ...