その他-Wireshark_ネットワークパケットキャプチャ


タイトル:other-Wireshark_Networkキャプチャ
カテゴリ:その他
タグ:[Capture、Wireshark]
日付:2020-10-26 16:57:58
コメント:false
mathjax:true
toc:true

その他-Wireshark_ネットワークパケットキャプチャ


前日譚

  • ダウンロードリンク:ネットワークパケット分析ツールWireshark 3.3.0 + x64中国語多言語無料バージョン-http://www.dayanzai.me/wireshark.html
  • Wiresharkの実用的なフィルタリング式(IP、プロトコル、ポート、長さ、コンテンツ用)-https://blog.csdn.net/aflyeaglenku/article/details/50884296
  • Wiresharkの使用スキルとデータパケット分析方法-https://zhuanlan.zhihu.com/p/31512066

フィルター条件

  • ワイヤーハークのフィルタリングルールと使用法-https://blog.csdn.net/wojiaopanpan/article/details/69944970

フィルターIP

たとえば、送信元IPまたは宛先IPが特定のIPと等しい場合

  1. ip.src == 192.168.1.107 || ip.dst == 192.168.1.107`
  2. ip.addr == 192.168.1.107:ip.src == 192.168.1.107と同等|| ip.dst == 192.168.1.107

フィルターポート

  1. tcp.port == 80:tcp.srcport == 80と同等|| tcp.dstport == 80
  2. tcp.port == 80 || udp.port == 80
  3. tcp.dstport == 80:tcpプロトコルのターゲットポート80のみを表示します
  4. tcp.srcport == 80:tcpプロトコルの送信元ポート80のみを表示します

フィルタープロトコル

  1. tcp
  2. udp
  3. arp
  4. icmp
  5. http
  6. smtp
  7. ftp
  8. dns
  9. msnms
  10. ip
  11. ssl
  12. oicq
  13. bootp
  14. !Arpまたはnotarpなどのarpパッケージを除外します。

フィルタパケット長

  1. udp.length == 26この長さは、udp自体の固定長8に、udpの下のデータパケットの合計を加えたものを指します。
  2. tcp.len> = 7は、tcp自体を除くipパケット(tcpより下のデータ)を指します。
  3. ip.len == 94イーサネットヘッダー14の固定長を除いて、他のすべてはip.lenと見なされます。つまり、ip自体から最後までです。
  4. frame.len == 119ethの最初から最後までのパケット全体の長さ

フィルターMAC

EtherNetヘッドフィルター

  1. eth.dst == A0:00:00:04:C5:84 //ターゲットMacをフィルタリングします
  2. eth.src eq A0:00:00:04:C5:84 //ソースMacをフィルタリングする
  3. eth.dst == A0:00:00:04:C5:84
  4. eth.dst == A0-00-00-04-C5-84
  5. eth.addr eq A0:00:00:04:C5:84 // A0:00:00:04:C5:84に等しいソースMACとターゲットMACをフィルタリングします

httpモードをフィルタリングする

  1. http.request.method ==“ GET”
  2. http.request.method ==“ POST”
  3. http.request.uri ==“ /img/logo-edu.gif”
  4. httpには「GET」が含まれています
  5. httpには「HTTP / 1」が含まれています。

// GETパッケージ

  1. http.request.method ==“ GET” && httpには「Host:」が含まれます

  2. http.request.method ==“ GET” && httpには「User-Agent:」が含まれています

// POSTパケット

  1. http.request.method ==“ POST” && httpには「Host:」が含まれます
  2. http.request.method ==“ POST” && httpには「User-Agent:」が含まれています

//応答パケット

  1. httpには「HTTP / 1.1200OK」が含まれています&& httpには「Content-Type:」が含まれています
  2. httpには「HTTP / 1.0200OK」が含まれています&& httpには「Content-Type:」が含まれています

TCPパラメータをフィルタリングする

  1. tcp.flagsは、TCPフラグを含むパケットを表示します。
  2. tcp.flags.syn == 0x02 TCPSYNフラグを含むパケットを表示します。
  3. tcp.window_size == 0 && tcp.flags.reset!= 1

パッケージの内容をフィルタリングする

  1. tcp [20]は、20から開始し、1文字を取ることを意味します
  2. tcp [20:]は、20から始まり、複数の文字を取ることを意味します

注:2つの点線のコンテンツは、wireshark(linux)でのテストに失敗しました。

tcp [20:8]は、20から始まり、8文字を取ることを意味します
。tcp[offset、n]
udp [8:3]81:60:03 // 8バイトをオフセットしてから、3つの数値を取得します。これは、次のデータは等しいですか?
udp [8:1] == 32私の推測が正しければ、udp [オフセット:インターセプトの数] =
nValue eth.addr [0:3]である必要があります00:06:5B
例:
updより下の最初の3つのデータパケットが0x20 0x210x22に等しいかどうかを判別します。udpの
固定長が8udp
[8:3]であることは誰もが知っています午後08時21分22秒
のTCPブロックの最初の3つのパケットが0x20の0x21でただし0x22に等しいかどうか
一般的に、TCP、長さが20であり、時にはそれが20ない
TCP [8:3]20:21:22
最も正確なものを取得したい場合は、最初にtcpの長さが
一致(一致)し、構文
ip.srcが含まれている(文字列を含む)ことを知っておく必要があります
192.168.1.107およびudp [8:5]は「\ x02 \ x12 \ x21 \ x00 \ x22」と一致します------ ??? --------
ip.src
192.168.1.107およびudpには02:12:21:00:
22ip.srcが含まれています
192.168.1.107およびtcpに「GET」
が含まれるudpに含まれる7c:7c:7d:7dは、ペイロードに0x7c7c7d7dを含むUDPパケットと一致しますが、必ずしも最初のバイトからではありません。


httpパケットキャプチャ-json

  • データをリクエストする

    const url = "http://192.168.1.233:57305/hotupdate"
    request.post(url, {
          
          
        json: {
          
          
            Plat: 1042,
            Os: 2,
            Appid: 3,
            Uid: "123123",
            Version: "0.301.3.4",
            Deviceid: "wolegequ",
        }
    }, (error, res, body) => {
          
          
        if (error) {
          
          
            console.error(error)
            return
        }
        console.log(`--- statusCode: ${
            
            res.statusCode}`)
        console.log(`--- post rsp:`, body)
    })
    

リクエストパケット

  • たとえば、次の式を入力します。 ip.dst == 192.168.1.233 && tcp.port == 57305

    192.168.1.233のリクエストターゲットIPデータをキャプチャできます

返品パッケージ

  • たとえば、次の式を入力します。 ip.src == 192.168.1.233 && tcp.port == 57305

    データを返すためにソースIPキャプチャできます192.168.1.233


httpキャプチャストリーム

このデモはゲームのプロトコルに基づいています。アップストリームデータのバフ構造:[バフ合計サイズ] + [pbバフ]、pbバフは頭と体で構成されます

リクエストパケット

  1. リクエストインターフェイスを選択-> [データ]を右クリック-> [パケットバイトストリームのエクスポート]を選択し、ファイルloginData.binにエクスポートします。これは、クライアントのシングルエンドアップリンクのバイナリデータです。

  2. loginData.binファイルを解析します。(golangデモ)

    func Test_login_data(t *testing.T) {
          
          
    	path := "C:/Users/wolegequ/Desktop/loginData.bin"
    	bts, err := ioutil.ReadFile(path)
    	if err != nil {
          
          
    		panic(err)
    	}
    
    	log.Printf("--- total len: %d\n", len(bts))
    	pld := &csprotos.PayloadData{
          
          }
    	err = proto.Unmarshal(bts[2:], pld) // 去掉头部 两个字节 (buff 总长度值)
    	if err != nil {
          
          
    		panic(err)
    	}
    
    	log.Printf("--- body len: %d\n", len(pld.CSBody))
    	req := &csprotos.LoginReq{
          
          }
    	err = proto.Unmarshal(pld.CSBody, req)
    	if err != nil {
          
          
    		panic(err)
    	}
    
    	log.Printf("--- req: %v\n", req)
    }
    
    /* 结果:
    2020/10/26 20:10:11 --- total len: 81
    2020/10/26 20:10:11 --- body len: 57
    2020/10/26 20:10:11 --- req: PlatID:1042 ChanID:1 ...
    */
    

tcpキャプチャストリーム

[http Capture-stream](#http Capture-stream)とほぼ同じ

リクエストパケット

  1. リクエストインターフェイスを選択-> [データ]を右クリック->パケットバイトストリームのエクスポート、ファイルheart.binにエクスポートします。これは、クライアントのシングルエンドアップリンクのバイナリデータです。

  2. heart.binファイルを解析します(golangデモ)

    func Test_login_data(t *testing.T) {
          
          
    	path := "C:/Users/wolegequ/Desktop/heart.bin"
    	bts, err := ioutil.ReadFile(path)
    	if err != nil {
          
          
    		panic(err)
    	}
    
    	log.Printf("--- total len: %d\n", len(bts))
    	pld := &csprotos.PayloadData{
          
          }
    	err = proto.Unmarshal(bts[2:], pld) // 去掉头部 两个字节 (buff 总长度值)
    	if err != nil {
          
          
    		panic(err)
    	}
    	log.Printf("--- pld: %+v\n", pld)
    
    /* 结果:
    2020/10/26 20:43:11 --- total len: 34
    2020/10/26 20:43:11 --- pld: CSHead:{CMDID:303 ReqID:26 ...} CSBody:"" ExtA:12516300 ExtC:1320706011723882496
    */
    }
    

おすすめ

転載: blog.csdn.net/yangxuan0261/article/details/109305315