如何使用 Golang 和 gopacket 製作和發送原始 TCP 封包?
Dec 08, 2024 am 01:46 AM使用gopacket 透過Golang 製作和發送原始TCP 封包
您希望使用gopacket 建構自訂TCP 封包並透過原始套接字傳輸它們。讓我們引導您完成整個過程:
建立自訂IP 和TCP 封包標頭
雖然您的問題提到了製作自訂TCP 封包,但您的程式碼建議您進行修改IPv4 第3 層和TCP 第4 層標頭。在這個例子中,我們將重點放在IPv4:
// Example Packet Definition import ( "code.google.com/p/gopacket" "code.google.com/p/gopacket/examples/util" "code.google.com/p/gopacket/layers" "log" "net" ) // Packet Data srcIP := net.ParseIP("127.0.0.1") dstIP := net.ParseIP("192.168.0.1") ipLayer := layers.IPv4{ SrcIP: srcIP, DstIP: dstIP, Protocol: layers.IPProtocolTCP, } tcpLayer := layers.TCP{ SrcPort: layers.TCPPort(666), DstPort: layers.TCPPort(22), SYN: true, } // Compute Checksums and Serialize Packet tcpLayer.SetNetworkLayerForChecksum(&ipLayer) buf := gopacket.NewSerializeBuffer() err := gopacket.SerializeLayers(buf, gopacket.SerializeOptions{ FixLengths: true, ComputeChecksums: true, }, &ipLayer, &tcpLayer) if err != nil { panic(err) }
登入後複製
在Golang 中建立原始套接字
與此平台上的錯誤回應相比, Go 允許原始套接字使用net.ListenPacket、net.DialIP 或net.ListenIP 建立。例如:
conn, err := net.ListenIP("ip4:tcp", netaddr) if err != nil { log.Fatalf("ListenIP: %s\n", err) }
登入後複製
啟用IP 標頭包含
在macOS 和Linux 上,您可以設定IP_HDRINCL 套接字選項以允許自訂IPv4 標頭修改。
conn.SetsockoptIPHDRINCL(true)
登入後複製
正在傳送封包
最後,使用原始套接字傳送封包:
_, err = conn.WriteTo(buf.Bytes(), &dstIPaddr) if err != nil { panic(err) }
登入後複製
注意: 為了避免重複,我們專注於組裝的核心步驟資料包並透過原始套接字發送。雖然我們相信此回應在技術上是正確且全面的,但它並不是一個完整的程式碼解決方案。
以上是如何使用 Golang 和 gopacket 製作和發送原始 TCP 封包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)