基于python3的tkinter和scapy可视化报文构造工具(一)

    在工作中,有段时间需要构造报文来进行相关的系统功能验证,而当时手边又没有一个趁手的报文构造或者改包工具(其实后来知道有的只是我不知道----手动狗头),遂接触了python3的第三方库scapy。

   可以先看看scapy的官方介绍

   Scapy is a Python program that enables the user to send, sniff and dissect and forge network packets. This capability allows construction of tools that can probe, scan or attack networks.   

   In other words, Scapy is a powerful interactive packet manipulation program. It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more. Scapy can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery. It can replace hping, arpspoof, arp-sk, arping, p0f and even some parts of Nmap, tcpdump, and tshark.

  大概意思就是Scapy是一款强大的,用Python编写的交互式数据包处理程序,它能让用户发送、嗅探、解析,以及伪造网络报文,从而用来侦测、扫描和向网络发动攻击。Scapy可以轻松地处理扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)之类的传统任务。它可以代替hping,arpsoof,arp-sk,arping,pof 甚至是部分的Nmap,Tcpdump和Tshark的功能。

    主要在linux上根据自己的需要构造简单的http,hpps报文或者在现成的报文上改变http的host字段,https的sni字段或者报文的IP地址和端口,在改包或者构造报文的过程中,需要对相关协议非常熟悉,知道协议每个字段的相关位置和含义才知道怎么去构造。但是有些时候我只关注协议的某些字段,如DPI工作中,更多关注的是http的host,reffer等,https的sni字段,其他的我不需要太关注,此时在linux上通过scapy改起来就会有点麻烦。遂萌生了写一块可视化的报文构造工具只需要填自己关注的字段即可构造报文或者改已有的报文。

    选用python的Tkinter 模块来进行工具的可视化开发。在网络上有很多抱怨Tkinter模块的言论,比如:界面丑、不灵活、扩展功能差、模块少……等等,诚然,Tkinter确实有这些毛病或者说是缺点,但是它也并非是一无是处。

    Tkinter最大的优势,在于其是Python的内置模块;仅仅是这一点,就可以带来很多优点。由于是内置模块,所以不需要进行额外的安装,这也就避免了很多刚刚接触的小伙伴可以顺利地开始import,而非各种pip安装失败或者是到处找各种版本可行的安装,同时,因为其内置模块的属性,使得其在程序打包为EXE或其他可执行文件的时候,打包出来的程序文件不会特别的大,这样对程序的传播还是很有用处的。

先简单看看做出来的效果

   

基于python3的tkinter和scapy可视化报文构造工具(一)_第1张图片

    

 

你可能感兴趣的:(Python,python,可视化,tkinter)