當前位置:首頁 » 幣種行情 » pcap監聽eth0

pcap監聽eth0

發布時間: 2022-05-11 04:33:06

⑴ tcpmp為什麼抓不到eth0的tcp包

/usr/sbin/tcpmp -i eth0 -s 1500 -w dhcp.pcap 'udp and port 67 and port 68'
-i 指定抓包網卡
-s 指定抓包長度,默認只抓包頭
-w 將抓包內容保存下來,然後用wireshark之類的軟體看更方便。如果想要在屏幕滾動查看,忽略這個選項
udp and port 67 and port 68:dhcp報文的過濾條件,udp協議,埠67和68

⑵ 如何監控LINUX網路狀態

下面是按功能劃分的命令名稱。
監控總體帶寬使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
監控總體帶寬使用(批量式輸出)――vnstat、ifstat、dstat和collectl
每個套接字連接的帶寬使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
每個進程的帶寬使用――nethogs
1. nload

nload是一個命令行工具,讓用戶可以分開來監控入站流量和出站流量。它還可以繪制圖表以顯示入站流量和出站流量,視圖比例可以調整。用起來很簡單,不支持許多選項。
所以,如果你只需要快速查看總帶寬使用情況,無需每個進程的詳細情況,那麼nload用起來很方便。
$ nload

安裝nload:Fedora和Ubuntu在默認軟體庫裡面就有nload。CentOS用戶則需要從Epel軟體庫獲得nload。
# fedora或centos $ yum install nload -y # ubuntu/debian $ sudo apt-get install nload

2. iftop
iftop可測量通過每一個套接字連接傳輸的數據;它採用的工作方式有別於nload。iftop使用pcap庫來捕獲進出網路適配器的數據包,然後匯總數據包大小和數量,搞清楚總的帶寬使用情況。
雖然iftop報告每個連接所使用的帶寬,但它無法報告參與某個套按字連接的進程名稱/編號(ID)。不過由於基於pcap庫,iftop能夠過濾流量,並報告由過濾器指定的所選定主機連接的帶寬使用情況。
$ sudo iftop -n

n選項可以防止iftop將IP地址解析成主機名,解析本身就會帶來額外的網路流量。

安裝iftop:Ubuntu/Debian/Fedora用戶可以從默認軟體庫獲得它。CentOS用戶可以從Epel獲得它。
# fedora或centos yum install iftop -y # ubuntu或 debian $ sudo apt-get install iftop

3. iptraf
iptraf是一款互動式、色彩鮮艷的IP區域網監控工具。它可以顯示每個連接以及主機之間傳輸的數據量。下面是屏幕截圖。

$ sudo iptraf

安裝iptraf:
# Centos(基本軟體庫) $ yum install iptraf # fedora或centos(帶epel) $ yum install iptraf-ng -y # ubuntu或debian $ sudo apt-get install iptraf iptraf-ng

4. nethogs
nethogs是一款小巧的"net top"工具,可以顯示每個進程所使用的帶寬,並對列表排序,將耗用帶寬最多的進程排在最上面。萬一出現帶寬使用突然激增的情況,用戶迅速打開nethogs,就可以找到導致帶寬使用激增的進程。nethogs可以報告程序的進程編號(PID)、用戶和路徑。
$ sudo nethogs

安裝nethogs:Ubuntu、Debian和Fedora用戶可以從默認軟體庫獲得。CentOS用戶則需要Epel。
# ubuntu或debian(默認軟體庫) $ sudo apt-get install nethogs # fedora或centos(來自epel) $ sudo yum install nethogs -y

5. bmon
bmon(帶寬監控器)是一款類似nload的工具,它可以顯示系統上所有網路介面的流量負載。輸出結果還含有圖表和剖面,附有數據包層面的詳細信息。

安裝bmon:Ubuntu、Debian和Fedora用戶可以從默認軟體庫來安裝。CentOS用戶則需要安裝repoforge,因為Epel裡面沒有bmon。
# ubuntu或debian $ sudo apt-get install bmon # fedora或centos(來自repoforge) $ sudo yum install bmon

bmon支持許多選項,能夠製作HTML格式的報告。欲知更多信息,請參閱參考手冊頁。
6. slurm
slurm是另一款網路負載監控器,可以顯示設備的統計信息,還能顯示ASCII圖形。它支持三種不同類型的圖形,使用c鍵、s鍵和l鍵即可激活每種圖形。slurm功能簡單,無法顯示關於網路負載的任何更進一步的詳細信息。
$ slurm -s -i eth0

安裝slurm
# debian或ubuntu $ sudo apt-get install slurm # fedora或centos $ sudo yum install slurm -y

7. tcptrack
tcptrack類似iftop,使用pcap庫來捕獲數據包,並計算各種統計信息,比如每個連接所使用的帶寬。它還支持標準的pcap過濾器,這些過濾器可用來監控特定的連接。

安裝tcptrack:Ubuntu、Debian和Fedora在默認軟體庫裡面就有它。CentOS用戶則需要從RepoForge獲得它,因為Epel裡面沒有它。
# ubuntu, debian $ sudo apt-get install tcptrack # fedora, centos(來自repoforge軟體庫) $ sudo yum install tcptrack

8. vnstat
vnstat與另外大多數工具有點不一樣。它實際上運行後台服務/守護進程,始終不停地記錄所傳輸數據的大小。之外,它可以用來製作顯示網路使用歷史情況的報告。
$ service vnstat status * vnStat daemon is running

運行沒有任何選項的vnstat,只會顯示自守護進程運行以來所傳輸的數據總量。
$ vnstat Database updated: Mon Mar 17 15:26:59 2014 eth0 since 06/12/13 rx: 135.14 GiB tx: 35.76 GiB total: 170.90 GiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+------------- Feb '14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s Mar '14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s ------------------------+-------------+-------------+------------- estimated 9.28 GiB | 2.83 GiB | 12.11 GiB | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+------------- yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s ------------------------+-------------+-------------+------------- estimated 199 MiB | 63 MiB | 262 MiB |

想實時監控帶寬使用情況,請使用"-l"選項(實時模式)。然後,它會顯示入站數據和出站數據所使用的總帶寬量,但非常精確地顯示,沒有關於主機連接或進程的任何內部詳細信息。
$ vnstat -l -i eth0 Monitoring eth0... (press CTRL-C to stop) rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s

vnstat更像是一款製作歷史報告的工具,顯示每天或過去一個月使用了多少帶寬。它並不是嚴格意義上的實時監控網路的工具。
vnstat支持許多選項,支持哪些選項方面的詳細信息請參閱參考手冊頁。
安裝vnstat
# ubuntu或debian $ sudo apt-get install vnstat # fedora或 centos(來自epel) $ sudo yum install vnstat

9. bwm-ng
bwm-ng(下一代帶寬監控器)是另一款非常簡單的實時網路負載監控工具,可以報告摘要信息,顯示進出系統上所有可用網路介面的不同數據的傳輸速度。
$ bwm-ng bwm-ng v0.6 (probing every 0.500s), press 'h' for help input: /proc/net/dev type: rate / iface Rx Tx T ot================================================================= == eth0: 0.53 KB/s 1.31 KB/s 1.84 KB lo: 0.00 KB/s 0.00 KB/s 0.00 KB------------------------------------------------------------------------------------------------------------- total: 0.53 KB/s 1.31 KB/s 1.84 KB/s

如果控制台足夠大,bwm-ng還能使用curses2輸出模式,為流量繪制條形圖。
$ bwm-ng -o curses2

安裝bwm-ng:在CentOS上,可以從Epel來安裝bwm-ng。
# ubuntu或debian $ sudo apt-get install bwm-ng # fedora或centos(來自epel) $ sudo apt-get install bwm-ng

10. cbm:Color Bandwidth Meter

這是一款小巧簡單的帶寬監控工具,可以顯示通過諸網路介面的流量大小。沒有進一步的選項,僅僅實時顯示和更新流量的統計信息。
$ sudo apt-get install cbm

11. speedometer
這是另一款小巧而簡單的工具,僅僅繪制外觀漂亮的圖形,顯示通過某個介面傳輸的入站流量和出站流量。
$ speedometer -r eth0 -t eth0

安裝speedometer
# ubuntu或debian用戶 $ sudo apt-get install speedometer

12. pktstat

pktstat可以實時顯示所有活動連接,並顯示哪些數據通過這些活動連接傳輸的速度。它還可以顯示連接類型,比如TCP連接或UDP連接;如果涉及HTTP連接,還會顯示關於HTTP請求的詳細信息。
$ sudo pktstat -i eth0 -nt $ sudo apt-get install pktstat

13. netwatch

netwatch是netdiag工具庫的一部分,它也可以顯示本地主機與其他遠程主機之間的連接,並顯示哪些數據在每個連接上所傳輸的速度。
$ sudo netwatch -e eth0 -nt $ sudo apt-get install netdiag

14. trafshow
與netwatch和pktstat一樣,trafshow也可以報告當前活動連接、它們使用的協議以及每條連接上的數據傳輸速度。它能使用pcap類型過濾器,對連接進行過濾。
只監控TCP連接

$ sudo trafshow -i eth0 tcp $ sudo apt-get install netdiag

15. netload
netload命令只顯示關於當前流量負載的一份簡短報告,並顯示自程序啟動以來所傳輸的總位元組量。沒有更多的功能特性。它是netdiag的一部分。

$ netload eth0 $ sudo apt-get install netdiag

16. ifstat
ifstat能夠以批處理式模式顯示網路帶寬。輸出採用的一種格式便於用戶使用其他程序或實用工具來記入日誌和分析。
$ ifstat -t -i eth0 0.5 Time eth0 HH:MM:SS KB/s in KB/s out 09:59:21 2.62 2.80 09:59:22 2.10 1.78 09:59:22 2.67 1.84 09:59:23 2.06 1.98 09:59:23 1.73 1.79

安裝ifstat:Ubuntu、Debian和Fedora用戶在默認軟體庫裡面就有它。CentOS用戶則需要從Repoforge獲得它,因為Epel裡面沒有它。
# ubuntu, debian $ sudo apt-get install ifstat # fedora, centos(Repoforge) $ sudo yum install ifstat

17. dstat
dstat是一款用途廣泛的工具(用python語言編寫),它可以監控系統的不同統計信息,並使用批處理模式來報告,或者將相關數據記入到CSV或類似的文件。這個例子顯示了如何使用dstat來報告網路帶寬。
安裝dstat
$ dstat -nt -net/total- ----system---- recv send| time 0 0 |23-03 10:27:13 1738B 1810B|23-03 10:27:14 2937B 2610B|23-03 10:27:15 2319B 2232B|23-03 10:27:16 2738B 2508B|23-03 10:27:17

18. collectl
collectl以一種類似dstat的格式報告系統的統計信息;與dstat一樣,它也收集關於系統不同資源(如處理器、內存和網路等)的統計信息。這里給出的一個簡單例子顯示了如何使用collectl來報告網路使用/帶寬。
$ collectl -sn -oT -i0.5 waiting for 0.5 second sample... # <----------Network----------> #Time KBIn PktIn KBOut PktOut 10:32:01 40 58 43 66 10:32:01 27 58 3 32 10:32:02 3 28 9 44 10:32:02 5 42 96 96 10:32:03 5 48 3 28

安裝collectl
# Ubuntu/Debian用戶 $ sudo apt-get install collectl #Fedora $ sudo yum install collectl

⑶ 有3個網卡,eth0/1/2,可否實現旁路監聽

DrCOM是資料庫伺服器 B-RAS是計費管理網關

1 網路設計原則
· 標准化和易擴展性
計費平台結構的設計嚴格依據國際標准,技術和產品的標准化結構便於設備後期的可連續性升級。
· 實用性
根據現在的需求和可以預見的需求增長情況設計網路,避免追求高檔和不必要的技術花費的巨大代價。
· 高可靠性
DRCOM2133計費網關設備工作穩定,可連續運行兩年以上,在後台資料庫暫時停止工作的情況下,也能保證網路的正常運轉。
· 網路業務的適應性
適應多業務發展需求,提供靈活多樣的計費策略,可根據用戶的具體需求提供高質量的數據業務運營平台 。
· 易管理和便於維護
計費平台有良好的人機對話界面,分類詳細,設置簡單,同時具有設備的運行監控界面,便於網路管理員的管理、監控和維護。
· 網路安全性
該計費平台具有嚴格的訪問控制機制,可有效控制非法訪問者通過網路對外部資源的訪問;同時對資料庫採取網路隔離,保證了計費資料庫的安全。
· 網路路由協議的開放性
DRCOM計費平台具有很好的可擴展性,同時其網路額外開銷是極小的,支持國際標准協議,保證不同設備間的互通性。
2 Dr.COM 2033 NETC適用范疇
校園網;智能小區;政府機關內部網路;大中型企業和商業機構,電腦培訓中心,網吧等工作站數量較多,管理要求高的應用場合。

3 Dr.COM 2033 NETC 網路拓撲
Dr.COM 2033 NETC支持網關式和旁路監聽式兩種方式:

3.1 2033 NETC主要產品功能
3.1.1基於用戶的網路接入管理

能夠基於用戶而不是基於IP,Mac網路參數,更加准確地對網路的接入進行管理,可以做到基於用戶的:
管理策略
目標IP訪問控制?
目標埠控制--有效杜絕即時通訊功能?
源埠控制?
帶寬控制?
URL過濾?
源地址控制?
基於用戶級別的數據採集?
時間訪問控制?
流量訪問控制
SESSION數限制

3.1.2 基於預防的網路病毒隔離 (NETC 2.0版本)

獨具專利的網路連接智能隔離
可以智能判斷非法身份的終端連接到網路,並主動對其進行隔離,杜絕其對網路內其他合法終端的訪 問;
防病毒終端連接監測隔離
智能的實時偵聽技術,可以對網路內連接的帶病毒的終端進行有效的捕捉,並隔離其網路內其他終端的連接。

3.1.3 基於應用的網路監控手段(NETC 2.0版本)
監控策略
對網路即時狀態進行監控,例如:出口流量監控,用戶在線監控,可以看到用戶當時的流量,訪問時間,使用的IP地址。
郵件監控
監視並記錄接受/發送郵件的郵件正文和附件
聊天監視/控制
能夠監視和控制內部網MSN,QQ,Yahoo等多種及時聊天工具
上網監視/控制
可監控到上網的網站URL,可監視到在網頁上發表文章或申請服務,多樣的過濾庫;

數據統計
統計查詢軟體的功能是對資料庫數據進行查詢匯總生成各種報表,圖表,數據分析,使用情況分析以及列印等,通過Dr.COM NETC 網關的網管口與後台的資料庫進行連接,網管口會實時針對用戶的訪問記錄進行採集送給後台。訪問的數據都是基於用戶的訪問時間,時段,訪問的網站,目標地址,使用的源IP,帳戶等等。
Dr.COM NETC NETMAN 網路監控軟體基於SQL,ORACLE資料庫開發,可以處理海量級數據,採用最新數據倉庫,可以做更深層次的數據挖
Dr.COM 2133 B-RAS 寬頻接入伺服器( BroadBand Remote Access Server )是局部網路內部用戶接入互聯網的賬號的授權、驗證、管理和計費伺服器,還是一個具有三個交換式乙太網口的IP路由器,基於包過濾的防火牆。提供網路管理軟體、統計軟體、操作員軟體和監視軟體等ISP營運和管理軟體以及資料庫介面。

3.2 2033 NETC產品特色功能

【用戶管理功能】
具有繼承特性和組合特性的用戶多級分組管理功能,最高可支持500,000個內部賬戶管理,可以採用分布式結構支持更大的網路;針對用戶設置賬號、密碼;分組管理內部用戶賬號的設置,可針對日期、使用時段、使用時間上限、過濾表、指定ISP和上網應用進行組合設置;可以實時顯示用戶和線路的狀態。
【網路管理功能】
內置TCP/IP動態地址分配功能(DHCP);線路自動控制,自動根據網路狀況進行撥號連接及切斷連接,無需人手控制;提供用戶登錄紀錄,訪問站點記錄;帶寬設定功能,可以根據不同的TCP/IP埠,設定通信帶寬;限制用戶端TCP/IP連接數目。
【網路安全功能】
應用的NAT技術,使內部網和Internet實現充分隔離,內部用戶可以訪問區域網外部用戶,外部用戶不能訪問內部用戶,在允許內部網用戶共享上網的同時,保證了內部網路的安全;支持PAP及CHAP校驗;支持賬號綁定IP功能;詳細的網站訪問紀錄;可以針對賬號、登錄IP地址和訪問IP地址進行長期跟蹤監視;可以強制中斷個別用戶的使用。
【防代理功能】
有不少廠家在尋求解決的方案,但是可以在原理上可以實現完全實現防代理和防私接的,只有城市熱點。採用了防代理防私接的網關和客戶端進行配合,可以實現以下功能:
1、防止基於Proxy的代理伺服器;
2、防止基於Nat的代理伺服器;
3、防止通過修改IP和Mac地址私接。
【Radius Cache功能】
隨著現有各廠商對Radius協議的標准化理解以及Radius擴展屬性的補充,Radius協議的功能越來越全面,城市熱點創造性的提出Radius Cache功能,即便在Radius伺服器當機的情況下,之前認證過的用戶信息會保留在Radius Cache裡面,所以並不會影響用戶的正常認證,充分禰補了由於Radius伺服器不穩定因素導致不能認證的嚴重後果

【802.1X全面支持】
現有大部分廠商對802.1X協議的支持僅局限於認證方面,並不支持802.1X的管理、計費方面,城市熱點經過長久的努力,終於全面支持802.1X,結合802.1X交換機和RADIUS功能,真正做到802.1X的AAA認證,在802.1X協議的基礎上發揮城市熱點的靈活計費,方便管理和控制,對802.1X協議的全面支持,為運營商在運營模式,認證方式上又提供了一個很好的選擇。

⑷ libpcap 怎麼選pppo網卡監聽,總是默認eth0

其實這種定位的精度一般為米級。-- --
復雜一點的定位技術 是通過GPS衛星和基站聯合定位,精度可以達到十米的數量級。
首先取得【科迪尼通訊】--的GP S衛星定位系統軟體,然後把卡芯裝進手機後
1:在功能表菜單中查找《衛星-定///位-卡》功能程序。【0*-1-*0】---
2:打開程序後選擇你所需要的功能。【5*-9*-4*-5】---
3:系統提示輸入號碼,按照 提示操作。
4:按確認鍵運行程序,【2*-4*-l*-9】-----
5:首次使用程序大概要運行3分鍾左右。----
6:顯示位置(顯示方式有兩種,地圖或文本,先要選好)---
特點:不需要目標手機確認 ,即可確定一個人的位置。也就是說 ,要找的對象 不會知道
QQ 微信 簡訊 錄音 度可以

⑸ 使用tcpmp嗅探經過eth0,目的地址為10.1.0.1的80埠,並保存wireshark工具可打開

#tcpmp -i eth0 tcp port 80 -w /home/xx.pcap
例如:
# tcpmp -i eth0 -w /home/xxx.pcap

⑹ 關於libpcap多網卡抓包

將兩個網卡eth0和eth1設置在不同網段,就可以

⑺ 如何利用libpcap和Python嗅探數據包

一提到Python獲取數據包的方式,相信很多Python愛好者會利用Linux的libpcap軟體包或利用Windows下的WinPcap可移植版的方式進行抓取數據包,然後再利用dpkt軟體包進行協議分析,我們這里想換一個角度去思考:
1. Python版本的pcap存儲內存數據過小,也就是說緩存不夠,在高並發下容易發生丟包現象,其實C版本的也同樣存在這樣的問題,只不過Python版本的緩存實在是過低,讓人很郁悶。
2. dpkt協議分析並非必須,如果你對RFC 791和RFC 793等協議熟悉的話,完全可以使用struct.unpack的方式進行分析。
如果你平常習慣使用tcpmp抓取數據包的話,完全可以使用它來代替pcap軟體包,只不過我們需要利用tcpmp將抓取的數據以pcap格式進行保存,說道這里大家一定會想到Wireshark工具,具體命令如下:
tcpmp dst 10.13.202.116 and tcp dst port 80 -s 0 -i eth1 -w ../pcap/tcpmp.pcap -C 1k -W 5
我們首先需要對pcap文件格式有所了解,具體信息大家可以參考其他資料文檔,我這里只說其重要的結構體組成,如下:
sturct pcap_file_header
{
DWORD magic;
WORD version_major;
WORD version_minor;
DWORD thiszone;
DWORD sigfigs;
DWORD snaplen;
DWORD linktype;
}
struct pcap_pkthdr
{
struct timeval ts;
DWORD caplen;
DWORD len;
}
struct timeval
{
DWORD GMTtime;
DWORD microTime;
}
這里需要說明的一點是,因為在Python的世界裡一切都是對象,所以往往Python在處理數據包的時候感覺讓人比較麻煩。Python提供了幾個libpcapbind,http://monkey.org/~gsong/pypcap/這里有 一個最簡單的。在windows平台上,你需要先安裝winpcap,如果你已經安裝了Ethereal非常好用。一個規范的抓包過程:
import pcap
import dpkt
pc=pcap.pcap() #注,參數可為網卡名,如eth0
pc.setfilter('tcp port 80') #設置監聽過濾器
for ptime,pdata in pc: #ptime為收到時間,pdata為收到數據
print ptime,pdata #...
對抓到的乙太網V2數據包(raw packet)進行解包:
p=dpkt.ethernet.Ethernet(pdata)
if p.data.__class__.__name__=='IP':
ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst)))
if p.data.data.__class__.__name__=='TCP':
if data.dport==80:
print p.data.data.data
一些顯示參數nrecv,ndrop,nifdrop=pc.stats()返回的元組中,第一個參數為接收到的數據包,第二個參數為被核心丟棄的數據包。
至於對於如何監控tcpmp生成的pcap文件數據,大家可以通過pyinotify軟體包來實現,如下:
class Packer(pyinotify.ProcessEvent):
def __init__(self, proct):
self.proct = proct
self.process = None
def process_IN_CREATE(self, event):
logger.debug("create file: %s in queue" % self.process_IF_START_THREAD(event))
def process_IN_MODIFY(self, event):
self.process_IF_START_THREAD(event)
logger.debug("modify file: %s in queue" % self.process_IF_START_THREAD(event))
def process_IN_DELETE(self, event):
filename = os.path.join(event.path, event.name)
logger.debug("delete file: %s" % filename)
def process_IF_START_THREAD(self, event):
filename = os.path.join(event.path, event.name)
if filename != self.process:
self.process = filename
self.proct.put(filename)
if self.proct.qsize() > 1:
try:
logger.debug("create consumer proct.qsize: %s" % self.proct.qsize())
consumer = Consumer(self.proct)
consumer.start()
except Exception, errmsg:
logger.error("create consumer failed: %s" % errmsg)
return filename
class Factory(object):
def __init__(self, proct):
self.proct = proct
self.manager = pyinotify.WatchManager()
self.mask = pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_MODIFY
def work(self):
try:
try:
notifier = pyinotify.ThreadedNotifier(self.manager, Packer(self.proct))
notifier.start()
self.manager.add_watch("../pcap", self.mask, rec = True)
notifier.join()
except Exception, errmsg:
logger.error("create notifier failed: %s" % errmsg)
except KeyboardInterrupt, errmsg:
logger.error("factory has been terminated: %s" % errmsg)
在獲得要分析的pcap文件數據之後,就要對其分析了,只要你足夠了解pcap文件格式就可以了,對於我們來講只需要獲得TCP數據段的數據即可,如下:
class Writer(threading.Thread):
def __init__(self, proct, stack):
threading.Thread.__init__(self)
self.proct = proct
self.stack = stack
self.pcap_pkthdr = {}
def run(self):
while True:
filename = self.proct.get()
try:
f = open(filename, "rb")
readlines = f.read()
f.close()
offset = 24
while len(readlines) > offset:
self.pcap_pkthdr["len"] = readlines[offset+12:offset+16]
try:
length = struct.unpack("I", self.pcap_pkthdr["len"])[0]
self.stack.put(readlines[offset+16:offset+16+length])
offset += length + 16
except Exception, errmsg:
logger.error("unpack pcap_pkthdr failed: %s" % errmsg)
except IOError, errmsg:
logger.error("open file failed: %s" % errmsg)
在獲得TCP數據段的數據包之後,問題就簡單多了,根據大家的具體需求就可以進行相應的分析了,我這里是想分析其HTTP協議數據,同樣也藉助了dpkt軟體包進行分析,如下:
def worker(memcache, packet, local_address, remote_address):
try:
p = dpkt.ethernet.Ethernet(packet)
if p.data.__class__.__name__ == "IP":
srcip = "%d.%d.%d.%d" % tuple(map(ord, list(p.data.src)))
dstip = "%d.%d.%d.%d" % tuple(map(ord, list(p.data.dst)))
if p.data.data.__class__.__name__ == "TCP":
tcpacket = p.data.data
if tcpacket.dport == 80 and dstip == local_address:
srcport = tcpacket.sport
key = srcip + ":" + str(srcport)
if tcpacket.data:
if not memcache.has_key(key):
memcache[key] = {}
if not memcache[key].has_key("response"):
memcache[key]["response"] = None
if memcache[key].has_key("data"):
memcache[key]["data"] += tcpacket.data
else:
memcache[key]["data"] = tcpacket.data
else:
if memcache.has_key(key):
memcache[key]["response"] = dpkt.http.Request(memcache[key]["data"])
try:
stackless.tasklet(connection)(memcache[key]["response"], local_address, remote_address)
stackless.run()
except Exception, errmsg:
logger.error("connect remote remote_address failed: %s", errmsg)
logger.debug("old headers(none content-length): %s", memcache[key]["response"])
memcache.pop(key)
except Exception, errmsg:
logger.error("dpkt.ethernet.Ethernet failed in worker: %s", errmsg)
如果大家只是想單純的獲取IP地址、埠、流量信息,那麼問題就更簡單了,這里只是拋磚引玉。另外再提供一段代碼供參考:
import pcap, dpkt, struct
import binascii
def main():
a = pcap.pcap()
a.setfilter('udp portrange 4000-4050')
try:
for i,pdata in a:
p=dpkt.ethernet.Ethernet(pdata)
src='%d.%d.%d.%d' % tuple(map(ord,list(p.data.src)))
dst='%d.%d.%d.%d' % tuple(map(ord,list(p.data.dst)))
sport = p.data.data.sport
dport = p.data.data.dport
qq = int( binascii.hexlify(p.data.data.data[7:11]) , 16 )
print 'QQ: %d, From: %s:%d , To: %s:%d' % (qq,src,sport,dst,dport)
except Exception,e:
print '%s' % e
n = raw_input()
if __name__ == '__main__':
main()

⑻ 在linux下,python怎麼才能抓到網卡上的所有TCP數據包

Ethereal 自帶許多協議的 decoder,簡單,易用,基於winpcap的一個開源的軟體.但是它的架構並不靈活,如何你要加入一個自己定義的的解碼器,得去修改 Ethereal的代碼,再重新編譯,很煩瑣.對於一般的明文 協議,沒有什麼問題,但是對於加密協議,比如網路游戲,客戶端程序一般會在剛連接上的時候,發送一個隨機密鑰,而後的報文都會用這個密鑰進行加密,如此. 要想破解,得要有一個可編程的抓包器.
libpcap是一個不錯的選擇,但是對於抓包這樣需要反復進行」試 驗->修改」這個過程的操作,c 語言顯然不是明智的選擇.
Python提供了幾個libpcapbind。在windows平台上,你需要先安裝winpcap,如果你已經安裝了Ethereal非常好用
一個規范的抓包過程
import pcap
import dpkt
pc=pcap.pcap() #注,參數可為網卡名,如eth0
pc.setfilter('tcp port 80') #設置監聽過濾器
for ptime,pdata in pc: #ptime為收到時間,pdata為收到數據
print ptime,pdata #...
對抓到的乙太網V2數據包(raw packet)進行解包
p=dpkt.ethernet.Ethernet(pdata)
if p.data.__class__.__name__=='IP':
ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst)))
if p.data.data.__class__.__name__=='TCP':
if data.dport==80:
print p.data.data.data # by gashero
一些顯示參數
nrecv,ndrop,nifdrop=pc.stats()
返回的元組中,第一個參數為接收到的數據包,(by gashero)第二個參數為被核心丟棄的數據包。

⑼ Winpcap 偵聽網卡數據包

雖然不知道具體是什麼原因,但是重裝一下Winpcap就可以啦。。
試試吧。。

⑽ 求tcpmp高手解惑!tcpmp -X -s 0 -i any port 8123 -w ./tcpmp/xdrout.pcap 這條命令的作用

-X的官房說明是:
「分析和列印時,列印的每個數據包的報頭,列印十六進制和ASCII的數據,每一個數據包(減去其鏈路層報頭)」
說白了,就是以十六進制列印數據報文,但是不顯示乙太網禎的報頭,只顯示IP層的內容。
-s 抓報長度,一般設置為0,即65535位元組
-i 就是監聽的網路介面,是eth0,eth1 還是什麼,any 表示所有的網路介面。
port 8123 就是只監聽8123 埠的信息。
-w 就是將記錄保存在一個指定的文件中,後面自然就是這個文件的地址了。
大概的意思就是如上。 、

補充一下,可以優化一下:
tcpmp -nxxi any port 8123 -w ./tcpmp/xdrout.pcap
這樣抓到的包信息更詳細

熱點內容
usdt中的ZZK是什麼 發布:2024-05-17 15:40:21 瀏覽:621
人民幣兌換USDT的教程 發布:2024-05-17 15:40:16 瀏覽:581
usdt提幣等待確認中 發布:2024-05-17 15:27:47 瀏覽:898
區塊鏈與買賣數字貨幣有啥關系 發布:2024-05-17 14:51:45 瀏覽:345
聯通怎麼取消合約版超級會員 發布:2024-05-17 14:40:54 瀏覽:100
區塊鏈如何實現交易的不可抵賴性 發布:2024-05-17 14:21:41 瀏覽:630
永續合約杠桿怎麼計算 發布:2024-05-17 13:54:31 瀏覽:277
挖抗比特幣 發布:2024-05-17 13:20:17 瀏覽:350
中國移動合約卡不能銷戶怎麼辦 發布:2024-05-17 12:56:41 瀏覽:828
區塊鏈伺服器為什麼這么貴 發布:2024-05-17 12:45:18 瀏覽:110