在开头小镇说一句话:技术之路孤独的感觉和对技术渴望的冲突使小镇开始写技术日记,废话不多说,进入正题。
Scapy的是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。小镇身为半个网络安全工程师,当然不能不学如此强大的工具!Scapy的安装在不同的系统和不同版本的Linux内核的系统下安装的方式是不一样的。如果在较新的ubuntu系统中可以使用命令 apt-get install python-scapy进行安装,如下图所示:
当然,还有一个更为简便的方法,在这里,小镇隆重推荐Kali Linux系统!Kali Linux是基于Debian的Linux发行版, 设计用于数字取证和渗透测试。所以Kali Linux预装了许多渗透测试软件。包括WireShark、nmap等软件。大家可以在vmware workstation中安装kali Linux,小镇这里就不教大家虚拟机方面的知识了,相信只要是喜欢计算机的怎么都是会用虚拟机的。这里小镇提供下Kali Linux镜像的下载地址:http://www.linuxidc.com/Linux/2016-01/127754.htm,安装完的效果如下图所示:
在Kali-Linux中运行Terminal,在命令行输入scapy即可打开scapy软件。若出现下图所示情况就代表运行成功了。
下面就开始使用Scapy,一开始也说了,Scapy是一个强大的交互式数据包处理程序,对!Scapy最基础的东东就是数据包啦,这里我们可以定义一个IP数据包,并给IP数据包中的各个属性赋值。如下图所示,zty_ip是我定义的一个IP数据包,我给该数据包的dst属性定为192.168.237.122,dst是destination的缩写。输入zty_ip.dst即可查看该属性数据。若要显示整个IP数据包的信息就输入数据包的名称加上display()。
输入send(数据包名称)即可发送该数据包,我的ubuntu系统的ip地址为192.168.237.128。
相信大家很熟悉ping这个命令,我们也可用scapy来模仿ping命令,ping使用的是ICMP协议,我们需要用scapy来发送ICMP Echo request包,为了能发送一个ICMP Echo请求,我们需要启动堆叠层发送请求,这里最好的方法就是使用OSI模型。我们先指定一个IP变量,如下所示:
然后我们在包堆叠中创建第二层。这里被添加到堆叠中的第二层是ICMP层,该层需要用户单独指定一个变量,如下所示:
以上就是ICMP属性的默认设置,在Scapy中,可以通过斜杠分离每层来进行堆叠。现在将IP和Ping层来进行堆叠,如下所示:
用上面方法堆叠层的过程就是所谓的数据封装。现在这个层已经堆叠完成,我们现在就可以发送请求包了。我们使用sr1()函数来发送数据包,执行命令如下:
我们输入wireshark &命令来打开wireshark,在其中中可以看到包的记录。
当然,如果目标地址不能够响应的话sr1()函数会一直监听,知道接受到响应为止,这时候用户可以定义一个超时值,如下所示: