-
大小: 32KB文件類型: .py金幣: 1下載: 0 次發(fā)布日期: 2021-05-29
- 語言: Python
- 標(biāo)簽: scapy發(fā)包??
資源簡介
基于python+scapy設(shè)計協(xié)議編輯器,基于Tkinter的Python GUI界面設(shè)計。實現(xiàn)了MAC、ARP、IP 、TCP、UDP協(xié)議的編輯與發(fā)送,并且支持生成協(xié)議字段的默認(rèn)值,支持用戶輸入?yún)f(xié)議字段值,發(fā)包前對協(xié)議字段的合理性進(jìn)行檢查,發(fā)包前自動計算并顯示校驗和,支持單次發(fā)包、多次發(fā)包,支持連續(xù)發(fā)包,連續(xù)發(fā)包時可隨時停止和計算并顯示數(shù)據(jù)包發(fā)送速度的功能。
代碼片段和文件信息
#?coding=utf-8
import?datetime
import?tkinter
from?tkinter?import?*
from?tkinter.constants?import?*
from?tkinter.ttk?import?Treeview?style
from?scapy.all?import?*
from?scapy.layers.inet?import?*
from?scapy.layers.l2?import?*
tk?=?tkinter.Tk()
tk.title(“協(xié)議編輯器“)
#?tk.geometry(“1000x700“)
#?使窗體最大化
tk.state(“zoomed“)
#?左右分隔窗體
main_panedwindow?=?PanedWindow(tk?sashrelief=RAISED?sashwidth=5)
#?協(xié)議編輯區(qū)窗體
protocol_editor_panedwindow?=?PanedWindow(orient=VERTICAL?sashrelief=RAISED?sashwidth=5)
#?協(xié)議導(dǎo)航樹
protocols_tree?=?Treeview()
#?當(dāng)前網(wǎng)卡的默認(rèn)網(wǎng)關(guān)
default_gateway?=?[a?for?a?in?os.popen(‘route?print‘).readlines()?if?‘?0.0.0.0?‘?in?a][0].split()[-3]
#?用來終止數(shù)據(jù)包發(fā)送線程的線程事件
stop_sending?=?threading.Event()
#?狀態(tài)欄類
class?StatusBar(frame):
????def?__init__(self?master):
????????frame.__init__(self?master)
????????self.label?=?Label(self?bd=1?relief=SUNKEN?anchor=W)
????????self.label.pack(fill=X)
????def?set(self?fmt?*args):
????????self.label.config(text=fmt?%?args)
????????self.label.update_idletasks()
????def?clear(self):
????????self.label.config(text=““)
????????self.label.update_idletasks()
#?狀態(tài)欄
status_bar?=?StatusBar(tk)
status_bar.pack(side=BOTTOM?fill=X)
status_bar.set(“%s“?‘開始‘)
def?create_protocols_tree():
????“““
????創(chuàng)建協(xié)議導(dǎo)航樹
????:return:?協(xié)議導(dǎo)航樹
????“““
????protocols_tree.heading(‘#0‘?text=‘選擇網(wǎng)絡(luò)協(xié)議‘?anchor=‘w‘)
????#?參數(shù):parent?index?iid=None?**kw?(父節(jié)點,插入的位置,id,顯示出的文本)
????#?應(yīng)用層
????applicatoin_layer_tree_entry?=?protocols_tree.insert(““?0?“應(yīng)用層“?text=“應(yīng)用層“)??#?““表示父節(jié)點是根
????http_packet_tree_entry?=?protocols_tree.insert(applicatoin_layer_tree_entry?1?“HTTP包“?text=“HTTP包“)
????dns_packet_tree_entry?=?protocols_tree.insert(applicatoin_layer_tree_entry?1?“DNS包“?text=“DNS包“)
????#?傳輸層
????transfer_layer_tree_entry?=?protocols_tree.insert(““?1?“傳輸層“?text=“傳輸層“)
????tcp_packet_tree_entry?=?protocols_tree.insert(transfer_layer_tree_entry?0?“TCP包“?text=“TCP包“)
????upd_packet_tree_entry?=?protocols_tree.insert(transfer_layer_tree_entry?1?“UDP包“?text=“UDP包“)
????#?網(wǎng)絡(luò)層
????ip_layer_tree_entry?=?protocols_tree.insert(““?2?“網(wǎng)絡(luò)層“?text=“網(wǎng)絡(luò)層“)
????ip_packet_tree_entry?=?protocols_tree.insert(ip_layer_tree_entry?0?“IP包“?text=“IP包“)
????icmp_packet_tree_entry?=?protocols_tree.insert(ip_layer_tree_entry?1?“ICMP包“?text=“ICMP包“)
????arp_packet_tree_entry?=?protocols_tree.insert(ip_layer_tree_entry?2?“ARP包“?text=“ARP包“)
????#?網(wǎng)絡(luò)接入層
????ether_layer_tree_entry?=?protocols_tree.insert(““?3?“網(wǎng)絡(luò)接入層“?text=“網(wǎng)絡(luò)接入層“)
????mac_frame_tree_entry?=?protocols_tree.insert(ether_layer_tree_entry?1?“MAC幀“?text=“MAC幀“)
????protocols_tree.bind(‘<>‘?on_click_protocols_tree)
????style?=?style(tk)
????#?get?disabled?entry?colors
????disabled_bg?=?style.lookup(“TEntry“?“fieldbackground“?(“disabled“))
????style.map(“Treeview“
??????????????fieldbackground=[(“disabled“?disabled_bg)]
??????????????foreground=[(“disabled“?“gray“)]
??????????????bac
評論
共有 條評論