1. 程式人生 > >tcpdump過濾特定IP的資料包,結果不對?

tcpdump過濾特定IP的資料包,結果不對?

專案中自己需要寫個程式通過pcap-filter表示式過濾資料包,測試時發現過濾結果不對!現將問題簡化如下(以tcpdump舉例)

問題描述

  1. 通過 tcpdump 過濾出173_20170107_180747_p5p2.pcap 檔案中IP為 10.10.88.173的資料包,並儲存為result.pcap
  2. 過濾命令 tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "host 10.10.88.173"
  3. 原始資料包用wireshark開啟,設定過濾表示式為ip.addr==10.10.88.173,發現IP為 10.10.88.173的資料包個數為7150
  4. 但用wireshark開啟tcpdump過濾出的result.pcap檔案,發現其資料包個數為7152,如下圖!(此時如果知道原因就不用往下看了)
    image_1b5sh1esi12fhcde4ln8id1k1r1c.png-97.6kB
    image_1b5sh37cbdt41hthgqrk3ntgo1p.png-89kB

問題分析

  1. 通過對比wireshark和tcpdump過濾出的資料包,發現tcpdump過濾出的pcap檔案,多了兩個ARP資料包。如圖
    image_1b5si96kh1o96afr1qeam615b530.png-37.4kB
  2. 但就自己所瞭解的,ARP協議應屬於鏈路層的,不屬於IP網路層的(這種表述可能有爭論),為什麼tcpdump會將其包含在過濾結果內呢?
  3. 通過man pcap-filter查閱pcap-filter表示式語法,發現自己寫的tcpdump過濾表示式host 10.10.88.173是正確的啊
    image_1b5siqkvebebkal10scanm1nf53d.png-4.2kB
  4. 但細看卻發現,預設下的host
    ,src host, dst host過濾出的IP資料包,是包含ARPRARP協議的!!!準確描述如下
    image_1b5sj4q5krlc1uka1i1bjul1gkn3q.png-17.1kB

問題解決

  1. 將tcpdump過濾表示式修改為ip host 10.10.88.173,即執行命令tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "ip host 10.10.88.173"即可!

問題總結

  1. 在使用tcpdump或其他工具過特定IP的資料包時,pcap-filter過濾表示式的書寫要注意!
  2. 如果僅僅是想過濾出IP層的特定IP的資料,需要使用ip host X.X.X.Xip src X.X.X.Xip dst X.X.X.X
  3. 如果僅僅是想過濾出ARP或RARP協議的IP資料包時,需要使用arp host X.X.X.Xrarp host X.X.X.X
  4. man pcap-filter,多熟悉下

相關推薦

tcpdump過濾特定IP資料結果不對

專案中自己需要寫個程式通過pcap-filter表示式過濾資料包,測試時發現過濾結果不對!現將問題簡化如下(以tcpdump舉例) 問題描述 通過 tcpdump 過濾出173_20170

ip資料經由路由轉發的時候源ip MAC目的ip 目的MAC是否改變

轉載自https://blog.csdn.net/yiluyangguang1234/article/details/56666109 ip資料包經由路由轉發的時候源ip,目的ip是否改變? 最近面試網路方面的經常問到這個問題,答案是不能改變的,*除非做了nat轉換才能改變。 不過mac

UDP傳輸時IP層的分片是怎麼回事? UDP傳輸時為什麼不要用tcpdump過濾埠來抓

先來看程式, 服務端: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netin

Linux核心bug引起Mesos、Kubernetes、Docker的TCP/IP資料失效

最近發現Linux核心bug,會造成使用veth裝置進行路由的容器(例如Docker on IPv6、Kubernetes、Google Container Engine和Mesos)不檢查TCP校驗碼(checksum),這會造成應用在某些場合下,例如壞的網路裝置,接收錯誤資料。這個bug

本機發送IP資料

本地傳送IP資料包是指資料包包括:傳輸層產生的資料包、裸IP、SCTP、IGMP,TCP和網路層的介面函式是ip_queue_xmit,UDP和網路層介面函式是ip_push_pending_frames,資料包對外發送在核心要做以下幾件事情。 a、查詢下一個站點 IP層需要知道完成資料包輸

ubuntu 下使用tcpdump 抓取TCP資料

問題來源: 需要測試一個閘道器(包括機頂盒和路由器),網線直接連線電腦和待測機器。配置IP地址為192.168.1.100,保證IP地址與網線另一端閘道器IP地址192.168.1.1在同一個網段。 手頭有傳送的json報文資料段,直接用win7下的tcp通訊助手傳送總是失敗,得不到正確的響

IP協議及IP資料詳解

回憶一下網路層的主要功能:通過TCP或者UDP協議繪製網路地圖,資料包選取合適的路徑進行傳輸(網路層基本單位 : 資料包 Package) (1)編址(目標端的IP地址),資料傳輸的過程當中就必須表明

Https:從tcp建立連線到https接收到第一個資料到底發生了什麼?

https 建立連線過程 Abstract https 是基於http 和 ssl(安全套接字層) 的安全傳輸協議,使用ssl 協議作為會話層協議,這裡通過這篇文章結合抓包來看一下具體過程 About SSL / TLS 這個協議最早是由網景公司 開發,但是隨著網景的沒落,現在由ietf負責維護,

黑客-抓取資料並破解加密密碼

本文目的:抓取區域網內所有資料包,並獲取資料包內密碼,針對一些加密了的密碼,進行解密工作,以此獲取對方密碼。 但是這個方法有點複雜,不易掌握,而且可能影響對方網速。這裡有一個巧妙的方式。 我是以寢室網作為實驗場地 第一步。開啟360wifi,將密碼賬號

用Fiddler抓取PC、手機瀏覽器\APP資料分析埋點

先關了防火牆 然後隨便下一個fiddler,然後別升級…… 然後點開下圖的配置 然後如下圖配置 如下圖繼續設定,埠號找一個沒人用的,一般來說用8888,不過8888由於預設的用它的太多了,所以最好換一個,記下這個伺服器埠號 然後用電腦開個手機熱點然後手機連

IP資料的格式及分片

一、IP資料包的報文格式    首先我們需要了解資料報的格式: 1-1.版本4位,表示版本號,目前最廣泛的是4=B1000,即常說的IPv4;相信IPv6以後會廣泛應用,它能給世界上每個鈕釦都分配        一個IP地址。 1-2.頭長4位,資料包頭

計算機網路IP資料的3個標誌位以及IP資料報的分片和重組過程

1.3個標誌位是哪3位? 目前只有兩位有意義 <1>標誌位中的最低位記為MF(More Fragment)。MF=1即表示後面"還有分片"的資料報。MF=0表示這已是若干資料報片中的最後一個。 <2>標誌欄位中間的以為記為DF(Don't Fragm

使用Wireshark捕獲資料幀和IP資料教程

About Wireshark   Wireshark is one of the world's foremost network protocol analyzers, and is the standard in many parts of the in

tcpdump/libpcap中捕獲資料的時間戳

tcpdump從libpcap獲取time-stamp,libpcap從OS核心獲取time stamp Q: When is a packet time-stamped? Howaccurate are the time stamps? Tcpdump gets tim

IP資料格式

版本:佔4位,指IP協議的版本.通訊雙方使用的IP協議版本必須一致.日前廣泛使用的 IP協議版本號為 4 (即 IPv4).IPv6 目前還處於起步階段.首部長度:佔 4 位,可表示的最大十進位制數值是15.請注意,這個欄位所表示數的單位是32位字 (1個32位字長是4 位元組),因此,當 IP 的首部長度為

python+pypcap+dpkt抓取IP資料

1.簡介 pypcap庫是一款基於libpcap封裝的為python語言提供介面的抓包庫。 dpkt則是用來解析資料包的庫。 pip install pypcap pip install dpkt 2. #coding:utf-8 import pc

IP資料頭部,TCP頭部,偽TCP頭部結構定義

我自己整理出來的彙編版本 ;;IP資料包頭部結構定義 ip_head struct      h_lenver db ? ;4位IP版本號+4位首部長度      TOS db ? ;8位服務型別      tcp_len dw ? ;16位TCP資料包總長度     ident dw ? ;16位標識  

解決mysql導資料格式不對、匯入慢、丟資料的問題

    如果希望一勞永逸的解決慢的問題,不妨把你的mysql升級到mysql8.0吧,mysql8.0預設的字符集已經從latin1改為utf8mb4,因此現在UTF8的速度要快得多,在特定查詢時速度提

wireshark捕獲/過濾指定ip地址資料

轉自http://www.6san.com/630/ 使用捕獲過濾或顯示過濾,wireshark可以僅捕獲/顯示經過指定ip的資料包,即某個ip收到或發出的所有資料包。wireshark捕獲/顯示過濾使用方法見:“wireshark過濾器” 顯示過濾:wireshar

tcpdump使用詳解及資料結果分析

-轉自https://blog.csdn.net/liang_baikai/article/details/79626180 選出其中我需要的: 使用詳解 (1)監視指定主機和埠的資料包 如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令 tcpdump tcp