日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

發布時間:2024/3/13 java 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上篇文章中Java抓包分析三(基于jnetpcap進行抓包)——抓取Http請求數據包,我們講解了TCP三次握手的過程和如何抓取Http數據包,但是我們并沒有進行一個數據分析,接下來這篇文章我們將要開始對Http抓取的數據報進行深入的分析。

文章目錄

  • 1.預備知識
    • 1.1.OSI七層網絡模型
    • 1.2.TCP/IP四層網絡模型
  • 2.分析wireshark抓取的Http數據包
    • 2.1.Frame(物理層)
    • 2.2.Ethernet II(鏈路層)
    • 2.3.Internet Protocol Version 4(網絡層)
    • 2.4.Transmission Control Protocol(傳輸層)
    • 2.5.Hypertext Transfer Protocol(應用層)
  • 3.分析jnetpcap抓取的Http數據包
    • 3.1.提取Ethernet II(鏈路層)數據包
    • 3.2.提取Internet Protocol Version 4(網絡層)數據包
    • 3.3.提取Transmission Control Protocol(傳輸層)數據包
    • 3.4.提取Hypertext Transfer Protocol(應用層)數據包
    • 3.5.查看提取Http數據包效果

1.預備知識

1.1.OSI七層網絡模型

在OSI七層網絡模型中,將整個網絡分成了七層(物數網傳會表應),由于OSI是一種理論模型,這里我們不在展開討論,僅作了解。

  • OSI引入了服務、接口、協議、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型;
  • OSI先有模型,后有協議,先有標準,后進行實踐;而TCP/IP則相反,先有協議和應用再提出了模型,且是參照的OSI模型;
  • OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網絡互聯事實上的標準。
  • OSI使用協議
    應用層(Application)HTTP、TFTP, FTP, NFS, WAIS、SMTP
    表示層(PresentationTelnet, Rlogin, SNMP, Gopher
    會話層(Session)SMTP, DNS
    傳輸層(Transport)TCP, UDP
    網絡層(Network)IP, ICMP, ARP, RARP, AKP, UUCP
    數據鏈路層(Data Link)FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
    物理層(Physical)IEEE 802.1A, IEEE 802.2到IEEE 802.11

    1.2.TCP/IP四層網絡模型

    在.TCP/IP中,TCP/IP把物理層和數據鏈路層統一為數據鏈路層,把會話層、表示層、應用層統一為應用層。

    2.分析wireshark抓取的Http數據包

    通過wireshar抓包時,我們看到如下這些信息:Frame、Ethernet 、Internet Protocol、Transmission Control Protocol、Hypertext Transfer Protocol這里我們將展開進行分析他們究竟時什么。

    字段含義
    Frame物理層的數據幀概況
    Ethernet II數據鏈路層以太網幀頭部信息,一般包含源(本機)、目的地(服務器)物理地址(MAC)
    Internet Protocol Version 4IPV4 互聯網層IP包頭部信息,一般包含源(本機)、目的地(服務器)IP地址。
    Transmission Control Protocol傳輸層的數據段頭部信息,此處是TCP、UDP協議,一般包含源(本機)、目的地(服務器)端口和連接狀態。
    Hypertext Transfer Protocol應用層的信息,如HTTP協議

    如下篇幅較長,你要是沒耐心,建議就直接跳過,但是需要記得住這幾個點
    從Ethernet II(鏈路層)中知道MAC地址
    從Internet Protocol Version 4(網絡層)知道IP地址
    從Transmission Control Protocol(傳輸層)知道端口(TCP端口尋址自己去補課了,我這里不廢話了)
    從Hypertext Transfer Protocol(應用層)知道傳輸數據

    2.1.Frame(物理層)

    雖然處于最底層,卻是整個開放系統的基礎。物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境。如果您想要用盡量少的詞來記住這個第一層,那就是“信號和介質”。

    2.2.Ethernet II(鏈路層)

    通過我們使用wireshark珠寶,查看鏈路層,我們能看到三個特別直觀的信息

  • type:協議類型
  • destination:目的地,也就是對方服務器MAC地址
  • source:發起地,也就是你自己的MAC地址

  • (如果你知道MAC地址是啥,下面這堆廢話你就跳過吧)
    MAC 地址的英語是 Media Access Control Address,直譯為媒體存取控制位址,也稱為局域網地址(LAN Address)、以太網地址(Ethernet Address)或物理地址(Physical Address),它是一個用來確認網絡設備位置的位址。

    物理地址是一種標識符,用來標記網絡中的每個設備。同現實生活中收發快遞一樣,網絡內傳輸的所有數據包都會包含發送方和接收方的物理地址。

    由于數據包中都會包含發送方和接收方的物理地址,數據包從起始地發送到目的地,為了能夠正確地將數據包發送出去,就必須要求 MAC 地址具有唯一性。因此 MAC 地址都是由生產廠家在生產時固化在網絡硬件中,是硬件預留的地址。

    硬件的 MAC 地址是廠家按照一定的規則,進行設置所產生的,因此,MAC 地址擁有自己的格式。

    MAC 地址采用十六進制數表示,共 6 個字節(48 位),長度為 48bit(字節)。整個地址可以分為前 24 位和后 24 位,代表不同的含義。
    前 24 位稱為組織唯一標識符(Organizationally Unique Identifier,OUI),是由 IEEE 的注冊管理機構給不同廠家分配的代碼,區分了不同的廠家。
    后 24 位是由廠家自己分配的,稱為擴展標識符。同一個廠家生產的網卡中 MAC 地址后 24 位是不同的。

    2.3.Internet Protocol Version 4(網絡層)

    在網絡層,我們可以看到,如下這堆信息,其他的可能看不懂,但是下面這個IP地址應該能看懂了

    首先看下IPV4的一個數據包圖(當然如果你不記得了,建議跳過,反正我也不想深入研究),這里涉及很多知識和網絡的太多了,這里就不展開了,總之,我們在這里需要知道就是通信的IP地址。

    2.4.Transmission Control Protocol(傳輸層)


    這里東西太多了,我也不想說,放一個TCP數據包給你們瞅瞅,愛看就看,不愛看就拉到。三次握手,四次揮手這里都不廢話了,看我以往的博客就行了,這里,我們就抓住一個重點,我們需要解析一個很重要的東西,那就是端口號,為什么是端口號嗯?不想說了,給你們看看軟考架構師的一個考題,你們應該就知道了

    2.5.Hypertext Transfer Protocol(應用層)

    應用就很直觀了,廢話我就不多說了

    3.分析jnetpcap抓取的Http數據包

    3.1.提取Ethernet II(鏈路層)數據包

    通過我們上述的分析,我們知道鏈路層有三個很重要的信息,那就是使用什么協議?目的地MAC地址多少?源MAC地址?
    核心代碼提取MAC地址

    if(!packet.hasHeader(Ethernet.ID)) {return null; } Ethernet ethernet = packet.getHeader(new Ethernet()) int type = ethernet.typeEnum().getId(); String typeDes = ethernet.typeEnum().getDescription(); //需要注意,這里獲取到的Mac地址不是16進制的,我們需要將其轉化成16進制 byte[] sources = ethernet.source(); byte[] destinations = ethernet.destination();

    byte[]MAC地址轉字符串MAC地址

    /*** @Description:將Mac地址的數組形式轉換為字符串形式 (適用于線程安全的情況下)* @param* @author:hutao* @mail:hutao_2017@aliyun.com* @date:2021年9月9日*/public static String macBytesToString(byte[] macBytes) {StringBuilder builder = new StringBuilder();for (int i = 0; i < macBytes.length; i++) {String hexString = Integer.toHexString(0xFF & macBytes[i]);if(hexString.length()<2) {hexString = "0"+hexString;}builder.append(':').append(hexString);}return builder.substring(1);}

    3.2.提取Internet Protocol Version 4(網絡層)數據包

    核心代碼提取IP地址

    if(!packet.hasHeader(Ip4.ID)) {return null; } Ip4 ip4 = packet.getHeader(new Ip4()); //這里獲取的IP地址同樣是byte[],而不是我們熟悉的十進制 byte[] sources = ip4.source(); byte[] destinations = ip4.destination();

    將字節數組地址轉為IP地址

    import java.net.InetAddress;InetAddress sourceAddress = InetAddress.getByAddress(ip4.source(); String ipaddr= sourceAddress.getHostAddress();

    3.3.提取Transmission Control Protocol(傳輸層)數據包

    核心代碼提取TCP端口號

    if(!packet.hasHeader(Tcp.ID)) {return null; } Tcp tcp = packet.getHeader(new Tcp()); int sourcePort = tcp.source(); int destinationPort =tcp.destination();

    3.4.提取Hypertext Transfer Protocol(應用層)數據包

    if(!packet.hasHeader(Http.ID)) {return null;}Http http = packet.getHeader(new Http());//獲取當前http請求中存在的請求頭參數String[] fieldArray = http.fieldArray();Map<String,String> fieldMap = new HashMap<>();for (String temp : fieldArray) {fieldMap.put(temp.toUpperCase(), temp);}//http請求頭參數Map<String,String> httpParams = new ConcurrentHashMap<>();//獲取http定義的請求頭參數Request[] valuesKeys = Request.values();for (Request value : valuesKeys) {//使用hash進行匹配,將雙重for變成一重forif(fieldMap.containsKey(value.name().toUpperCase().replace("_","-"))) {httpParams.put(value.toString(),http.fieldValue(value));}}//獲取http中請求的傳輸報文if(http.hasPayload()) {try {byte[] payload = http.getPayload();String result = new String(payload,"UTF-8");} catch (Exception e) {e.printStackTrace();}}

    3.5.查看提取Http數據包效果

    請求接口準備,準備一個服務接口,這里示例的接口,將請求參數作為param參數返回給調用者。通過之前我們的分析,我們將會抓取到兩個Http數據包,一個我們想服務接口發起的,一個是服務接口向我們發起的。

    我們向服務接口發起的請求數據包提取結果

    服務器向我們發起請求

    至此使用Jnetpcap對http進行請求抓包過程完畢。通過這四篇文章,相信大家也能按照某個協議進行數據抓取和解析了。

    完整代碼,需要的滴滴滴,不需要積分
    https://download.csdn.net/download/m0_37892044/67616418

    總結

    以上是生活随笔為你收集整理的Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲激情视频网 | 五月丁香花 | 欧美精品一区二区蜜桃 | 国产毛片一区二区 | 优优色影院 | 丝袜诱惑一区 | 欧美熟妇精品久久久久久 | 夜夜嗨av一区二区 | 精品成人无码一区二区三区 | 国产欧美一区二区三区在线看蜜臂 | 免费网站污 | 亚洲AV无码片久久精品 | 午夜激情免费视频 | 黄色免费视频网站 | 欧美一区二区三区成人片在线 | 在线观看网页视频 | 成人综合网址 | 中文字幕av一区二区三区谷原希美 | 国产伦精品一区二区三区照片91 | 丁香色婷婷| 国产chinasex对白videos麻豆 | 成年人免费在线观看网站 | 少妇媚药按摩中文字幕 | 日韩成人在线网站 | 一区二区视频在线观看 | 伊人久久久久久久久久久 | 日韩一区二区三区电影 | 亚洲精品在线免费 | 久久av无码精品人妻出轨 | 黄色aa视频 | 四虎国产精品永久免费观看视频 | 超碰在线观看99 | 久久久久久中文字幕 | 天堂网视频在线观看 | 97人妻精品一区二区三区 | 女女同性被吸乳羞羞 | 日韩美女做爰高潮免费 | 国产成人手机视频 | 51精品| 中文字幕――色哟哟 | 女王脚交玉足榨精调教 | 亚洲精品影片 | 日韩久久久久久久 | 热热久 | 青青青手机视频 | 国产亚洲精品久久777777 | 欧美性xxxxxx | 日韩免费小视频 | 亚洲av无码国产精品久久 | 自拍偷拍亚洲天堂 | 亚洲熟乱| 少妇丰满尤物大尺度写真 | 成人片在线播放 | 久久婷婷伊人 | 91麻豆精品91久久久久同性 | xxxx日本高清 | 日韩在线视频播放 | 国产一区二区三区视频播放 | 中文字幕免费高清在线 | 九九热视频在线免费观看 | 一级a毛片免费观看久久精品 | 天堂中文字幕免费一区 | 日本一区二区三区中文字幕 | 欧美天堂在线观看 | 欧美97| 国产一区二区免费在线 | 人人看超碰 | √天堂资源地址在线官网 | 亚洲网站在线播放 | 爱草在线| 强videoshd酒醉 | 免费超爽大片黄 | 日本人妖xxxx | 在线观看网站黄 | 国产一级影片 | 国产精品男女视频 | 人妻少妇精品视频一区二区三区 | 亚洲视频在线观看网站 | 国产精品美女www爽爽爽 | 在线观看中文字幕视频 | 国产香蕉9 | 美国做爰xxxⅹ性视频 | 国产成年人视频网站 | 欧美少妇一区二区 | 亚洲激情综合 | 69视频网 | 天天色天天 | 免费在线小视频 | 亚洲精品美女在线观看 | 久久久久女教师免费一区 | 国产激情在线视频 | 国产精品女优 | 久久一区二区三区四区 | 欧美激情国产一区 | 一级片免费播放 | 午夜一二三区 | 九色蝌蚪91| 少妇高潮喷水在线观看 | 可以看av|