Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)
网络嗅探,是监听流经本机网卡数据包的一种技术,嗅探器就是利用这种技术进行数据捕获和分析的软件。
编写嗅探器,捕获数据是前置功能,数据分析要建立在捕获的基础上。本节就数据捕获的基本原理和编程实现做详细的阐述。
4.1.1 以太网网卡的工作模式
以太网网卡是我们日常生活中见得最多的网卡,我们的电脑通过网线或者wifi接入网络,使用的都是以太网网卡。
图2
常用的以太网卡支持以下工作模式:广播模式、多播模式、直接模式和混杂模式。
1.广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。它将会接收所有目的地址为广播地址的数据包,一般所有的网卡都会设置为这个模式。
2.多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。当数据包的目的地址为多播地址,而且网卡地址是属于那个多播地址所代表的多播组时,网卡将接纳此数据包,即使一个网卡并不是一个多播组的成员,程序也可以将网卡设置为多播模式而接收那些多播的数据包。
3.直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己Mac地址的帧。只有当数据包的目的地址为网卡自己的地址时,网卡才接收它。
4.混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,网卡将接受同一网络内所有主机发送的数据包。
利用网卡混杂模式的特性,就可以到达对于网络信息监听捕获的目的。
需要注意的是,并不是任何情况下,网络中的数据都会流经你的网卡,比如交换机网络,交换机会绑定端口和MAC,此时就需要上一章讲到的ARP欺骗了。
4.1.2 设置网卡为混杂模式
在Kali Linux中,我们可以通过ifconfig和iwconfig配置网络接口的信息。
正常情况下输入ifconfig,虚拟机中显示如下:
图3
通过命令
ifconfig
eth0 promisc
可以将eth0设置为混杂模式。
图4
图四中圈红的部分,表示当前网卡处于混杂模式。
通过ifconfig
eth0 -promisc
可以取消网卡的混杂模式。
图5
ifconfig同样适用于无线网卡。
4.1.3 无线网卡的监听模式
对于无线网卡,我们可以使用iwconfig的mode参数来配置混杂模式,mode的选项值如下:
<