python如何使用原始套接字發(fā)送二層包-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)python如何使用原始套接字發(fā)送二層包的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都網(wǎng)站制作、做網(wǎng)站的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務(wù)。

發(fā)送端代碼:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import socket
import struct

raw_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x1234))
raw_socket.bind(("eth0", 0))
packet = struct.pack("!6s6sH", "\xff\xff\xff\xff\xff\xff", "\xaa\xaa\xaa\xaa\xaa\xaa", 0x1234)
while True:
 print repr(packet)
 raw_socket.send(packet + "hello,world!")

1.創(chuàng)建套接字使用地址家族PF_PACKET,類型為SOCK_RAW,自定義類型為0x1234,這個和C語言一模一樣。自定義類型我們也可以使用0X0800,這個是ETH_P_IP,相當(dāng)于我們模擬ip包來發(fā)送,那么ip包頭和mac包頭都需要我們自己填寫?,F(xiàn)在我們使用0x1234,系統(tǒng)定義之外的協(xié)議類型。

2.由于是發(fā)送二層包,我們默認(rèn)網(wǎng)卡沒有配置網(wǎng)絡(luò),也就是ping不通的情況下,直接綁定網(wǎng)卡上。

3.linux內(nèi)核中定義的mac包頭結(jié)構(gòu)

struct ethhdr
{
 unsigned char h_dest[6];
 unsigned char h_source[6];
 uint16_t h_proto; //0x1234
};

第一個是目的mac地址,第二個是本機mac地址,第三個是自定義類型必須填寫,這樣對方也關(guān)心這個自定義類型時,協(xié)議棧收到二層包才能正確給到對方的套接字。通過這個結(jié)構(gòu)體,所以使用了pack,”!6s6sH”。我這里使用的廣播地址發(fā)送。
接收端代碼:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import socket
import struct

raw_socket = socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x1234))
while True :
 packet = raw_socket.recv(1024)
 data = struct.unpack("!6s6sH12s", packet)
 print repr(data[0])
 print repr(data[1])
 print repr(data[2])
 print repr(data[3])

感謝各位的閱讀!關(guān)于“python如何使用原始套接字發(fā)送二層包”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:python如何使用原始套接字發(fā)送二層包-創(chuàng)新互聯(lián)
分享URL:http://muchs.cn/article48/djeehp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、Google、ChatGPT、網(wǎng)頁設(shè)計公司、網(wǎng)站設(shè)計、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作