首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

tcpdump 移植與實戰指南:從參數詳解到嵌入式交叉編譯

     編輯:關於C語言

一、tcpdump 核心概念

tcpdump 是基於 libpcap 的網絡抓包分析神器,能完整截獲數據包頭部,支持按網絡層、協議、主機、端口過濾,提供 and/or/not 邏輯組合。官網:tcpdump.org

二、核心過濾語法速查

類別關鍵字說明
類型host指定主機 IP/域名
net指定網段
port指定端口
方向src/dst源/目的地址
src or dst, src and dst組合方向
協議ip, arp, tcp, udp, fddi...協議過濾
其他gateway, broadcast, less, greater網關、廣播、包長比較
邏輯not/!, and/&&, or/||非、與、或

三、經典實戰案例

# 1. 默認監聽第一個接口 
tcpdump 

# 2. 指定接口、包數、存文件 
tcpdump -i eth0 -c 100 -w capture.pcap 

# 3. 監聽特定主機 
tcpdump host jibo 
tcpdump host jibo and \(tiger or john\) 
tcpdump host 210.27.46.1 and \(210.27.48.2 or 210.27.48.3\) 

# 4. 排除特定主機 
tcpdump ip host tiger and not jibo 
tcpdump ip host 210.27.48.1 and ! 210.27.48.2 

# 5. 方向過濾 
tcpdump -i eth0 src host jibo 
tcpdump -i eth0 dst host jibo 

# 6. 協議+端口+主機 
tcpdump tcp port 23 host 210.27.48.1 
tcpdump udp port 123

四、嵌入式交叉編譯全流程(ARM 為例)

環境準備

  • 工具鏈:arm-none-linux-gnueabi-gcc(已配置環境變量)
  • 源碼:libpcap-1.4.0.tar.gz, tcpdump-4.4.0.tar.gz

步驟 1:編譯安裝 libpcap

tar -xzf libpcap-1.4.0.tar.gz 
cd libpcap-1.4.0 
# 修改 configure:註釋掉交叉編譯檢查報錯段 
# if test -z "$with_pcap" && test "$cross_compile" = yes; then ... fi 
./configure --host=arm-none-linux-gnueabi 
# 檢查 Makefile 中 CC=arm-none-linux-gnueabi-gcc 
make 
sudo make install 
# 成功後 /usr/local/include 下出現 pcap.h 等頭文件

踩坑提示:若 sudo make install 提示找不到交叉編譯器,請切換到 root 並 source 環境變量腳本。

步驟 2:編譯安裝 tcpdump

tar -xzf tcpdump-4.4.0.tar.gz 
cd tcpdump-4.4.0 
# 修改 configure:註釋掉 Linux 版本檢查報錯段 
# if test $ac_cv_linux_vers = unknown; then ... fi 
./configure --host=arm-none-linux-gnueabi 
# 修改生成的 Makefile 關鍵變量: 
INCLS = -I. -I./../libpcap-1.4.0 -I./missing -I/usr/local/include 
DEFS  = -DHAVE_CONFIG_H -I/usr/local/include -I./missing -D_U_="__attribute__((unused))" 
LDFLAGS = -L/usr/local/lib 
make 
# 若報找不到 libpcap.a,確保目錄名與 Makefile 中 LIBS 路徑一致 
sudo make install 
# 產出 /usr/local/sbin/tcpdump(ARM 二進制) 
arm-none-linux-gnueabi-strip tcpdump # 減小體積

五、部署驗證

將編譯好的 tcpdump 複製到嵌入式開發板 /usr/sbin/,掛載動態庫或靜態鏈接後即可直接運行抓包分析。

結語

本文從過濾語法到交叉編譯全流程,提供可落地的 tcpdump 移植指南。關鍵點在於修改 configure 規避交叉編譯檢查、正確配置 INCLS/LDFLAGS 指向 libpcap 安裝路徑。本文出自「嵌入式開發樂園」:原文鏈接

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved