首先介紹一個python第三方庫--Scapy,這個庫不是標准庫,默認是沒有的,需要安裝,不過在kali-linux里邊是默認安裝的,
這里我用kali做攻擊者,xp做受害者
關於Scapy
Scapy是一個功能強大的交互式數據包操作程序。它能夠偽造或解碼大量協議的數據包,通過線路發送它們,捕獲它們,匹配請求和回復等等。它可以輕松處理大多數經典任務,如掃描,跟蹤路由,探測,單元測試,攻擊或網絡發現(它可以取代hping,85%的nmap,arpspoof,arp-sk,arping,tcpdump,tethereal,p0f等)。它還能在許多其他工具無法處理的其他特定任務中表現良好,例如發送無效幀,注入自己的802.11幀,組合技術(VLAN跳躍+ ARP緩存中毒,WEP加密通道上的VOIP解碼,...... )等。
首先我們學習下Scapy的幾個函數用法,
getmacbyip----查找ip的Mac地址
get_if_hwaddr----查找網卡的Mac地址
看下圖:受害者的ip地址為192.168.122.136,網關是192.168.122.2,攻擊者ip:192.168.122.129



本來受害者是通過將請求發給網關,然后網關去訪問外面,這里ARP欺騙是將攻擊者Mac地址假裝成網關的Mac地址,完成ARP欺騙
了解ARP

我們需要用到的是下邊5個,
op--- 接收包數(默認為1)
hwsrc--- 仿作的Mac地址(也就是攻擊者的Mac地址)
psrc--- 網關的ip地址
hwsrc--- 受害者的Mac地址
pdst --- 受害者的ip地址

因為是以太網,因此要了解下Ether()

三個參數,目的主機MAC地址,攻擊者Mac地址,
部分代碼:

這里包的地方有個/號
這是將兩者連接的意思,例子如下:

接下來構造一直發送請求,來認識sendp
sendp(x, inter=0, loop=0, iface=None, iface_hint=None, count=None, verbose=None, realtime=None, return_packets=False, *args, **kargs)
x為包,inter為請求間隔,iface為網絡接口
完整代碼:

這時我們來測試一下
不開啟ARP欺騙,ping是暢通的

開啟后:


要想恢復通訊,改一下網關所指的Mac地址
將pack包里邊的psrc改為網關Mac :gmac即可
這里僅僅只能讓受將害者斷網,要想進一步學習
來舉個例子
接收受害者的圖片
用到的 軟件 driftnet
開啟ip轉發代碼
sysctl net.ipv4.ip_forward=1

再輸入driftnet,打開窗口
然候在受害者電腦上打開圖片鏈接,即可在driftnet里邊顯示
快去試試吧!
