眾所周知,在Windows下開發運行環境下,在調試網路環境時,可以可以很方便的藉助wireshark等軟體進行抓包分析;並且在linux或者Ubuntu等桌面版里也可以進行安裝抓包工具進行抓包分析,但總有一些情況,無法直接運用工具(比如一些沒有界面的linux環境系統中),則此時我們就需要使用到最簡單的tcpmp命令進行網路抓包。
一般的,linux下抓包時,抓取特定的網路數據包到當前文件夾下的文件中,再把文件拷貝出來利用Windows下的wireshark軟體進行分析。
tcpmp命令詳解:(簡單舉例)
1、抓取到的文件為filename.cap,然後將此文件拷貝到Windows下,使用wireshar打開後,即可對此文件進行分析。
2、eth0 是主機的網路適配器名稱,具體的參數值可以在linux命令行窗口中通過 ifconfig 指令查詢。
『貳』 如何在linux伺服器上抓包
tcpmp -s 0 -i any host 抓包的IP -w test.pcap //抓包完成後按Ctrl+C結束抓包
『叄』 linux用原始套接字可以分析ip包嗎
1. 本文所介紹程序平台
發板:arm9-mini2440
虛擬機:Red Hat Enterprise Linux 5
發板系統內核版本:linux-2.6.32.2
2. 原始套接字概述
通情況程序設計員接觸網路知識限於兩類:
(1)流式套接字(SOCK_STREAM)種面向連接套接字應於TCP應用程序
(2)數據報套接字(SOCK_DGRAM)種連接套接字應於UDP應用程序
除兩種基本套接字外類原始套接字種原始網路報文進行處理套接字
前面幾章介紹基礎套接字知識流式套接字(SOCK_STREAM)數據報套接字(SOCK_DGRAM)涵蓋般應用層TCP/IP應用
原始套接字創建使用與通用套接字創建致套接字類型選項使用另SOCK_RAW使用socket函數進行函數創建完畢候要進行套接字數據格式類型指定設置套接字接收網路數據格式
創建原始套接字使用函數socket第二參數設置SOCK_RAW函數socket()創建原始套接字面代碼創建AF_INET協議族原始套接字協議類型protocol
int rawsock = socket(AF_INET, SOCK_RAW, protocol);
注意:超級用戶才權利創建套接字否則函數返-1並設置errnoEACCES
protocol參數:量定義in.h>面
IPPROTO_IP = 0, /* Dummy protocol for TCP. */
#define IPPROTO_IP IPPROTO_IP
IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */
#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS
IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */
#define IPPROTO_ICMP IPPROTO_ICMP
IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */
#define IPPROTO_IGMP IPPROTO_IGMP
IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */
#define IPPROTO_IPIP IPPROTO_IPIP
IPPROTO_TCP = 6, /* Transmission Control Protocol. */
#define IPPROTO_TCP IPPROTO_TCP
IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */
#define IPPROTO_EGP IPPROTO_EGP
IPPROTO_PUP = 12, /* PUP protocol. */
#define IPPROTO_PUP IPPROTO_PUP
IPPROTO_UDP = 17, /* User Datagram Protocol. */
#define IPPROTO_UDP IPPROTO_UDP
IPPROTO_IDP = 22, /* XNS IDP protocol. */
#define IPPROTO_IDP IPPROTO_IDP
IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */
#define IPPROTO_TP IPPROTO_TP
IPPROTO_IPV6 = 41, /* IPv6 header. */
#define IPPROTO_IPV6 IPPROTO_IPV6
IPPROTO_ROUTING = 43, /* IPv6 routing header. */
#define IPPROTO_ROUTING IPPROTO_ROUTING
IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */
#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT
IPPROTO_RSVP = 46, /* Reservation Protocol. */
#define IPPROTO_RSVP IPPROTO_RSVP
IPPROTO_GRE = 47, /* General Routing Encapsulation. */
#define IPPROTO_GRE IPPROTO_GRE
IPPROTO_ESP = 50, /* encapsulating security payload. */
#define IPPROTO_ESP IPPROTO_ESP
IPPROTO_AH = 51, /* authentication header. */
#define IPPROTO_AH IPPROTO_AH
IPPROTO_ICMPV6 = 58, /* ICMPv6. */
#define IPPROTO_ICMPV6 IPPROTO_ICMPV6
IPPROTO_NONE = 59, /* IPv6 no next header. */
#define IPPROTO_NONE IPPROTO_NONE
IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */
#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS
IPPROTO_MTP = 92, /* Multicast Transport Protocol. */
#define IPPROTO_MTP IPPROTO_MTP
IPPROTO_ENCAP = 98, /* Encapsulation Header. */
#define IPPROTO_ENCAP IPPROTO_ENCAP
IPPROTO_PIM = 103, /* Protocol Independent Multicast. */
#define IPPROTO_PIM IPPROTO_PIM
IPPROTO_COMP = 108, /* Compression Header Protocol. */
#define IPPROTO_COMP IPPROTO_COMP
IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */
#define IPPROTO_SCTP IPPROTO_SCTP
IPPROTO_RAW = 255, /* Raw IP packets. */
#define IPPROTO_RAW IPPROTO_RAW
IPPROTO_MAX
『肆』 linux下怎麼抓包
tcpmp,就可以用這個抓包了,具體使用 tcpmp -vvv -nn -port 80 -w /tmp/file,你也可以用man tcpmp 查看此命令的具體使用
『伍』 如何在linux上抓包tcpflow
無論是在
Linux
系統下抄,還是在襲
WINDOWS
系統下,使用
tcpflow
或者
wireshark
抓取數據包,基本思路都是一樣的。即:根據你需要抓取的數據包,設定特定的過濾規則,以及在哪一個網路適配器上進行抓包。最後將抓取的數據包保存到一個文件中,供以後的分析使用。
展開全部
『陸』 如何在linux下編寫抓包程序
你用SOCK_RAW的模式建立原始套接字然後接收包。
剩下的就全是分析內容的事情了。。。。最多再用一下多線程。
用到linux下socket編程的最基本知識, 以及對網路協議細節的了解弊團橘。 前者隨便找本socket編程的書就很詳細了, 後者你因該懂。
—————租團—
例如, 你需或橡要include以下這些頭:
stdio.h,stdlib.h, unistd.h, sys/socket.h, sys/types.h, netinet/if_ether.h, netinet/in.h,
然後建立socket的時候用
socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)),這樣就能用這個socket來監聽乙太網的包。
然後循環調用recvfrom函數來聽這個socket的接受到的數據, 再分析就好了。
如果要嗅探別人機器的包, 就要用ARP欺騙了。。呵呵
『柒』 Linux 系統掃描nmap與tcpmp抓包
NMAP掃描
一款強大的網路探測利器工具
支持多種探測技術
--ping掃描
--多埠掃描
-- TCP/IP指紋校驗
為什麼需要掃描?
以獲取一些公開/非公開信息為目的
--檢測潛在風險
--查找可攻擊目標
--收集設備/主機/系統/軟體信息
--發現可利用的安全漏洞
基本用法
nmap [掃描類型] [選項] <掃描目標...>
常用的掃描類型
常用選項
-sS TCP SYN掃描(半開) 該方式發送SYN到目標埠,如果收到SYN/ACK回復,那麼判斷埠是開放的;如果收到RST包,說明該埠是關閉的。簡單理解就是3次握手只完成一半就可以判斷埠是否打開,提高掃描速度
-sT TCP 連接掃描(全開)
-sU UDP掃描
-sP ICMP掃描
-sV 探測打開的埠對應的服務版本信息
-A 目標系統全面分析 (可能會比較慢)
-p 掃描指定埠
1 ) 檢查目標主機是否能ping通
2)檢查目標主機所開啟的TCP服務
3 ) 檢查192.168.4.0/24網段內哪些主機開啟了FTP、SSH服務
4)檢查目標主機所開啟的UDP服務
5 ) 探測打開的埠對應的服務版本信息
6)全面分析目標主機192.168.4.100的操作系統信息
tcpmp
命令行抓取數據包工具
基本用法
tcpmp [選項] [過濾條件]
常見監控選項
-i,指定監控的網路介面(默認監聽第一個網卡)
-A,轉換為 ACSII 碼,以方便閱讀
-w,將數據包信息保存到指定文件
-r,從指定文件讀取數據包信息
常用的過濾條件:
類型:host、net、port、portrange
方向:src、dst
協議:tcp、udp、ip、wlan、arp、……
多個條件組合:and、or、not
案例1
案例2:使用tcpmp分析FTP訪問中的明文交換信息
1 ) 安裝部署vsftpd服務
2 ) 並啟動tcpmp等待抓包
執行tcpmp命令行,添加適當的過濾條件,只抓取訪問主機192.168.4.100的21埠的數據通信 ,並轉換為ASCII碼格式的易讀文本。
3 ) case100作為客戶端訪問case254服務端
4 ) 查看tcpmp抓包
5 ) 再次使用tcpmp抓包,使用-w選項可以將抓取的數據包另存為文件,方便後期慢慢分析。
6 ) tcpmp命令的-r選項,可以去讀之前抓取的歷史數據文件
『捌』 Linux下如何抓指定IP的包
用tcpm命令可以抓指定IP的包,具體命令為:
tcpmp tcp -i eth1 -t -s 0 -c 100 and dst port 22 and src net 192.168.1.1 -w ./target.cap
參數解析:
tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型。
-i eth1 : 只抓經過介面eth1的包
-t : 不顯示時間戳
-s 0 : 抓取數據包時默認抓取長度為68位元組。加上-S 0 後可以抓到完整的數據包
-c 100 : 只抓取100個數據包
dst port 22 : 抓取目標埠是22的數據包
src net 192.168.1.0/24 : 數據包的源網路地址為192.168.1.1
-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
(8)linux原始套接字抓包擴展閱讀
tcpmp語法格式:
tcpmp [-adeflnNOpqStvx][-c<數據包數目>][-dd][-ddd][-F<表達文件>][-i<網路界面>][-r<數據包文件>][-s<數據包大小>][-tt][-T<數據包類型>][-vv][-w<數據包文件>][輸出數據欄位]
tcpmp主要參數說明:
1、-a 嘗試將網路和廣播地址轉換成名稱。
2、-c<數據包數目> 收到指定的數據包數目後,就停止進行傾倒操作。
3、-d 把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標准輸出。
4、-dd 把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標准輸出。
5、-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標准輸出。
6、-e 在每列傾倒資料上顯示連接層級的文件頭。
7、-f 用數字顯示網際網路地址。
8、-F<表達文件鍵散> 指定內含表達方式的文件。
9、-i<網路界面> 使用指定的網路陵亮亂截面送出數據包。
10、-l 使用標准輸出列的緩沖區。
11、-n 不把主機的網路地址轉換成名字。
12、-N 不列出域尺檔名。
『玖』 linux系統如何抓包
linux主機抓包使用tcpmp,可以加不同參數過濾源IP、埠,目的IP、埠,可以撰寫到指定文件中。抓包結果可以用ethereal,wireshark進行分析。
『拾』 linux原始套接字抓包緩存效率
linux原始套接字抓包緩存效率高。根據查詢相關信息顯示,原始套接字可能會接收到或者發送出去大量的報文,因此效率對其是非常重要的,而報文在內核拿手態與用戶態之間的拷貝是很費資源的,為此,Linux內核消喊嫌在很早就引入了原始套接字的MMAP機制用於解決滲和這一問題。