python進行tcpdump抓包

2021-10-05 17:07:20 字數 2629 閱讀 5149

使用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 ...