网络编程大家都学过吧?
socket->bind->listen->accept->recv/recvfrom ->send/sendto
一气呵成,什么select、poll、epoll多路复用模型信手拈来。
但这一套东西,只是开发建立在传输层TCP、UDP之上的应用程序。
你有没有想过,如何编程批量发送一批TCP SYN握手包,来进行端口扫描?
如何编程来发送一个伪造了IP地址的ARP数据包和IP数据报文?
甚至,如何编程来发送一个伪造了MAC地址的以太网数据帧?
一旦你掌握了上面几招,玩转数据包不是问题,开发各种神器不在话下。但一定要用在正途上,不要面向监狱编程哦~
那到底如何构造发送各种各样的数据包呢?今天给大家介绍一个强大的玩意:scapy
这是一个强大的数据包构造工具,你可以在Python中使用它,是时候喊一声:Python大法好了!
ARP
我们拿ARP开刀,ARP是地址解析协议,局域网中通信需要使用网卡的MAC地址,而网络层通信使用的是IP地址,在应用程序的数据包被发送出去之前,在IP报文前面添加以太网帧头时,需要填写收件人的MAC地址,如果是局域网内部通信,这个收件人地址就是目的电脑的网卡MAC地址,而如果是互联网上的公网IP地址,这个收件人地址就是网关的MAC地址。
无论怎样,总得有个MAC地址才行,那怎么