tcpdump用法

tcpdump用法

  • tcpdump
    • 一、什么是tcpdump
    • 二、命令格式與參數
    • 三、參數列表
    • 四、過濾規則組合
      • 邏輯運算符
      • 過濾器
      • 關鍵字
      • 理解 Flag 標識符
    • 五、常用例子

tcpdump

一、什么是tcpdump

二、命令格式與參數

  1. option 可選參數:將在后邊一一解釋。

  2. proto 類過濾器:根據協議進行過濾,可識別的關鍵詞有: tcp, udp, icmp, ip, ip6, arp, rarp,ether,wlan, fddi, tr, decnet

  3. type 類過濾器:可識別的關鍵詞有:host, net, port, portrange,這些詞后邊需要再接參數。

  4. direction 類過濾器:根據數據流向進行過濾,可識別的關鍵字有:src, dst,同時你可以使用邏輯運算符進行組合,比如 src or dst

三、參數列表

設置不解析域名提升速度
-n不把ip轉化成域名,直接顯示 ip,避免執行 DNS lookups 的過程,速度會快很多
-nn不把協議和端口號轉化成名字,速度也會快很多。
-N不打印出host 的域名部分.。比如,,如果設置了此選現,tcpdump 將會打印’nic’ 而不是 ‘nic.ddn.mil’.
過濾指定網卡的數據包
-i指定要過濾的網卡接口,如果要查看所有網卡,可以 -i any
過濾特定流向的數據包
-Q選擇是入方向還是出方向的數據包,可選項有:in, out, inout,也可以使用 --direction=[direction] 這種寫法
常用的一些參數
-A以ASCII碼方式顯示每一個數據包(不顯示鏈路層頭部信息). 在抓取包含網頁數據的數據包時, 可方便查看數據
-l基于行的輸出,便于你保存查看,或者交給其它工具分析
tcpdump -nn -A -s1500 -l
通過 egrep 可以同時提取用戶代理和主機名(或其他頭文件)
-q簡潔地打印輸出。即打印很少的協議相關信息, 從而輸出行都比較簡短
-c捕獲 count 個包 tcpdump 就退出
-stcpdump 默認只會截取前 96 字節的內容,要想截取所有的報文內容,可以使用 -s numbernumber 就是你要截取的報文字節數,如果是 0 的話,表示截取報文全部內容。
-S使用絕對序列號,而不是相對序列號
-Cfile-size,tcpdump 在把原始數據包直接保存到文件中之前, 檢查此文件大小是否超過file-size. 如果超過了, 將關閉此文件,另創建一個文件繼續用于原始數據包的記錄. 新創建的文件名與-w 選項指定的文件名一致, 但文件名后多了一個數字.該數字會從1開始隨著新創建文件的增多而增加. file-size的單位是百萬字節(nt: 這里指1,000,000個字節,并非1,048,576個字節, 后者是以1024字節為1k, 1024k字節為1M計算所得, 即1M=1024 * 1024 = 1,048,576)
-F使用file 文件作為過濾條件表達式的輸入, 此時命令行上的輸入將被忽略.
過濾結果輸出到文件
-w使用 -w 參數后接一個以 .pcap 后綴命令的文件名,就可以將 tcpdump 抓到的數據保存到文件中。使用 wireshark 打開此文件便可進行分析
tcpdump icmp -w icmp.pcap
-r從文件中讀取數據,讀取后,我們照樣可以使用上述的過濾器語法進行過濾分析
tcpdump icmp -r all.pcap
對輸出內容進行控制的參數
-D顯示所有可用網絡接口的列表
-e每行的打印輸出中將包括數據包的數據鏈路層頭部信息
-E揭秘IPSEC數據
-L列出指定網絡接口所支持的數據鏈路層的類型后退出
-Z后接用戶名,在抓包時會受到權限的限制。如果以root用戶啟動tcpdump,tcpdump將會有超級用戶權限。
-d打印出易讀的包匹配碼
-dd以C語言的形式打印出包匹配碼
-ddd以十進制數的形式打印出包匹配碼
-p不讓網絡接口進入混雜模式。默認情況下使用 tcpdump 抓包時,會讓網絡接口進入混雜模式。一般計算機網卡都工作在非混雜模式下,此時網卡只接受來自網絡端口的目的地址指向自己的數據。當網卡工作在混雜模式下時,網卡將來自接口的所有數據都捕獲并交給相應的驅動程序。如果設備接入的交換機開啟了混雜模式,使用 -p 選項可以有效地過濾噪聲。
控制詳細內容的輸出
-v產生詳細的輸出. 比如包的TTL,id標識,數據包長度,以及IP包的一些選項。同時它還會打開一些附加的包完整性檢測,比如對IP或ICMP包頭部的校驗和
-vv產生比-v更詳細的輸出. 比如NFS回應包中的附加域將會被打印, SMB數據包也會被完全解碼。(摘自網絡,目前我還未使用過)
-vvv產生比-vv更詳細的輸出。比如 telent 時所使用的SB, SE 選項將會被打印, 如果telnet同時使用的是圖形界面,其相應的圖形選項將會以16進制的方式打印出來(摘自網絡,目前我還未使用過)
控制時間的顯示
-t在每行的輸出中不輸出時間
-tt在每行的輸出中會輸出時間戳
-ttt輸出每兩行打印的時間間隔(以毫秒為單位)
-tttt在每行打印的時間戳之前添加日期的打印(此種選項,輸出的時間最直觀)
顯示數據包的頭部
-x以16進制的形式打印每個包的頭部數據(但不包括數據鏈路層的頭部)
-xx以16進制的形式打印每個包的頭部數據(包括數據鏈路層的頭部)
-X以16進制和 ASCII碼形式打印出每個包的數據(但不包括連接層的頭部),這在分析一些新協議的數據包很方便。
-XX以16進制和 ASCII碼形式打印出每個包的數據(包括連接層的頭部),這在分析一些新協議的數據包很方便

四、過濾規則組合

邏輯運算符

  • and:所有的條件都需要滿足,也可以表示為 &&
  • or:只要有一個條件滿足就可以,也可以表示為 ||
  • not:取反,也可以使用 !

過濾器

  • =:判斷二者相等
  • ==:判斷二者相等
  • !=:判斷二者不相等

關鍵字

  • if:表示網卡接口名
  • proc:表示進程名
  • pid:表示進程 id
  • svc:表示 service class
  • dir:表示方向,in 和 out
  • eproc:表示 effective process name
  • epid:表示 effective process ID

理解 Flag 標識符

  • [S] : SYN(開始連接)
  • [.] : 沒有 Flag
  • [P] : PSH(推送數據)
  • [F] : FIN (結束連接)
  • [R] : RST(重置連接)

五、常用例子

從 HTTP 請求頭中提取 HTTP 用戶代理:

 tcpdump -nn -A -s1500 -l | grep "User-Agent:"

通過 egrep 可以同時提取用戶代理和主機名(或其他頭文件):

 tcpdump -nn -A -s1500 -l | egrep -i 'User-Agent:|Host:'

只抓取 HTTP GET 和 POST 流量
抓取 HTTP GET 流量:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

也可以抓取 HTTP POST 請求流量:

tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

注意:該方法不能保證抓取到 HTTP POST 有效數據流量,因為一個 POST 請求會被分割為多個 TCP 數據包。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97858.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

平衡車 - 電機調速

🌈個人主頁:羽晨同學 💫個人格言:“成為自己未來的主人~” 在我們的這篇文章當中,我們主要想要實現的功能的是電機調速功能。在我們的這篇文章中,主要實現的是開環的功能,而非閉環,也就是不加…

從利潤率看價值:哪些公司值得長期持有?

💡 為什么盯緊利潤率? 投資者常常盯著營收增長,卻忽略了一個更關鍵的指標——利潤率。 收入可以靠規模“堆”出來,但利潤率卻是企業護城河的真實體現。心理學研究表明:當一個產品或服務被消費者認定為“不可替代”&a…

小迪web自用筆記25

傳統文件上傳:上傳至服務器本身硬盤。云存儲:借助云存儲oss對象存儲(只能被訪問,不可解析)Oss云存儲Access key與Access ID:有了這兩個東西之后就可以操作云存儲,可以向里面發數據了。這玩意兒泄…

分發餅干——很好的解釋模板

好的,孩子,我們來玩一個“喂餅干”的游戲。 0. 問題的本質是什么? 想象一下,你就是個超棒的家長,手里有幾塊大小不一的餅干,而面前有幾個餓著肚子的小朋友。每個小朋友都有一個最小的“胃口”值&#xff0c…

場景題:如果一個大型項目,某一個時間所有的CPU的已經被占用了,導致服務不可用,我們開發人員應該如何使服務器盡快恢復正常

問:如果一個大型項目,某一個時間所有的CPU的 已經被占用了,導致服務不可用,我們開發人員 應該如何使服務器盡快恢復正常答:應對CPU 100%導致服務不可用的緊急恢復流程面試官,如果遇到這種情況,我會立即按照…

Docker 安裝 RAGFlow保姆教程

前提條件 Ubuntu 服務器(20.04 或 22.04 LTS 推薦) 已安裝 Docker 和 Docker Compose 如果尚未安裝,請先運行以下命令:# 安裝 Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 將當前用戶加入 docker 組,避免每次都要 sudo sudo user…

為什么實際工程里 C++ 部署深度學習模型更常見?為什么大家更愛用 TensorRT?

很多人剛接觸深度學習模型部署的時候,都會習慣用 Python,因為訓練的時候就是 PyTorch、TensorFlow 啊,寫起來方便。但一到 實際工程,特別是工業設備、醫療影像、上位機系統這種場景,你會發現大多數人都轉向了 C 部署。…

深入理解 Java 集合框架:底層原理與實戰應用

在日常開發中,集合是 Java 中使用頻率最高的工具之一。從最常見的 ArrayList、HashMap 到更復雜的并發集合,幾乎每一個 Java 程序員都離不開集合框架。集合框架不僅提供了豐富的數據結構實現,還封裝了底層復雜的邏輯,讓開發者能夠…

爬取m3u8視頻完整教程

爬取步驟:1.先找到網頁源代碼2.從網頁源代碼中拿到m3u83.下載m3u84.讀取m3u8文件,下載視頻5.合并視頻首先我們來爬取一個星辰影院的電影:下面我以這個為例:我們需要在源代碼中找到m3u8這個url:緊接著我們利用下面的方法…

Python爬蟲實戰: 基于Scrapy的Amazon跨境電商選品數據爬蟲方案

概述與設計思路 利用Python的Scrapy框架進行大規模頁面抓取和結構化數據提取,配合aiohttp實現高并發請求,從而高效獲取Amazon平臺上的商品列表、詳情、評論等公開信息。通過對這些數據進行清洗與分析,可以識別出有潛力的商品,評估市場競爭程度,并跟蹤競爭對手的動態,為跨…

穩定版IM即時通訊 仿默往APP即時通訊im源碼聊天社交源碼支持二開原生開發獨立部署 含搭建教程

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 技術開發語言: 后臺管理端:Java GO Mysql數據庫 安卓端:Java iOS端:ob PC端:c 功能簡單介紹: 單聊&#xff…

封裝一個redis獲取并解析數據的工具類

redis獲取并解析數據工具類實現代碼使用示例實現代碼 import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import lom…

23種設計模式——策略模式 (Strategy Pattern)?詳解

?作者簡介:大家好,我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式,持續分享Java技術內容。 🍎個人主頁:Meteors.的博客 💞當前專欄:設計模式 ?特色專欄:知識分享 &#x…

CI(持續集成)、CD(持續交付/部署)、CT(持續測試)、CICD、CICT

目錄 **CI、CD、CT 詳解與關系** **1. CI(Continuous Integration,持續集成)** **2. CD(Continuous Delivery/Deployment,持續交付/部署)** **持續交付(Continuous Delivery)** **持續部署(Continuous Deployment)** **3. CT(Continuous Testing,持續測試)** **4.…

【音視頻】WebRTC ICE 模塊深度剖析

原文鏈接: https://mp.weixin.qq.com/s?__bizMzIzMjY3MjYyOA&mid2247498075&idx2&sn6021a2f60b1e7c71ce4d7af6df0b9b89&chksme893e540dfe46c56323322e780d41aec1f851925cfce8b76b3f4d5cfddaa9c7cbb03a7ae4c25&scene178&cur_album_id314699…

linux0.12 head.s代碼解析

重新設置IDT和GDT,為256個中斷門設置默認的中斷處理函數檢查A20地址線是否啟用設置數學協處理器將main函數相關的參數壓棧設置分頁機制,將頁表映射到0~16MB的物理內存上返回main函數執行 源碼詳細注釋如下: /** linux/boot/head.s** (C) 1991 Linus T…

Maven動態控制版本號秘籍:高效發包部署,版本管理不再頭疼!

作者:唐叔在學習 專欄:唐叔的Java實踐 關鍵詞:Maven版本控制、versions插件、動態版本號、持續集成、自動化部署、Java項目管理 摘要:本文介紹如何使用Maven Versions插件動態控制項目版本號和依賴組件版本號,實現無需…

簡述:普瑞時空數據建庫軟件(國土變更建庫)之一(變更預檢查部分規則)

簡述:普瑞時空數據建庫軟件(國土變更建庫)之一(變更預檢查部分規則) 主要包括三種類型:常規檢查、行政區范圍檢查、20X異常滅失檢查 本blog地址:https://blog.csdn.net/hsg77

shell中命令小工具:cut、sort、uniq,tr的使用方式

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言一、cut —— 按列或字符截取1. 常用選項2. 示例二、sort —— 排序(默認按行首字符升序)1. 常用選項常用 sort 命令選項三、uniq —— 去…

【Linux】Linux開發必備:Git版本控制與GDB調試全指南

前言:在Linux開發流程中,版本控制與程序調試是保障項目穩定性和開發效率的兩大核心環節。Git作為當前最主流的分布式版本控制系統,能高效管理代碼迭代、追蹤修改記錄并支持多人協同開發;GDB(GNU調試器)是Li…