Python選擇網卡發(fā)包及接收數據包
更新時間:2019年04月04日 17:09:20 作者:hzliyaya
今天小編就為大家分享一篇關于Python選擇網卡發(fā)包及接收數據包,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
當一臺計算機上有多個網卡時,需要選擇對應IP地址的網卡進行發(fā)送數據包或者接受數據包。
1、選擇網卡發(fā)包(應用scapy):
plface=conf.route.route("××.××.××.××")[0]
#××.××.××.××為對應網卡網絡中存在設備的IP地址。不能是需要發(fā)送數據包的網卡的IP地址(會報“result too large”)
pkt=conf.L2socket(plface)
pack_ip,pack_udp,pack_ether=self.udp_pack()
t= str(pack_ether/pack_ip/pack_udp/udp_packdata)
udp_pack = Ether(t)
pkt.send(udp_pack)
2、選擇網卡進行包的接收
1)如下方法,只能獲得一個網卡的ip地址(選擇哪個網卡,優(yōu)先級未知)
socket.getaddrinfo(socket.gethostname(),None)[-1][4][0]
2)如下方法,可根據ip地址確定網卡:
HOST = socket.gethostbyname(socket.gethostname()) s=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_IP) s.bind((HOST,0))
host可以直接用網卡ip地址代替,這樣就可以選擇網卡進行包的接受了
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

