广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Scapy ARP
  • 624
分享到

Python Scapy ARP

PythonScapyARP 2023-01-31 07:01:40 624人浏览 八月长安

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

摘要

参考手册:https://fossies.org/dox/scapy-2.3.3/当一台主机把以太网数据帧发送到位于同一个局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据包中的目的IP地址。

参考手册:https://fossies.org/dox/scapy-2.3.3/


当一台主机把以太网数据帧发送到位于同一个局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。

设备驱动程序从不检查IP数据包中的目的IP地址。

地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路曾使用的任何类型的地址。(FR环境)

ARP为IP地址到对应的硬件地址之间提供动态映射。我们之所以用动态这个词是因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心。


在ARP背后有有一个基本概念,那就是网络接口有一个硬件地址(一个48bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是tcp/IP有自己的地址:32bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。

点对点链路不使用ARP。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。像以太网地址这样的硬件地址并不涉及。

只有多路访问链路才需要ARP这样的技术。

bd026c46612d8c05a571a8a2d1184d4d.png

1362a196e266c72a6642320c05a4c27c.png

3ebaa89c5e14ed66f7669aea729dc5ed.png


ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起。


ARP请求包样例:

#!/usr/bin/python3.4
# -*- coding=utf-8 -*-

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)#清除报错
from scapy.all import *

#配置各种信息,以便调用
localMac = '00:0c:29:8d:5c:b6'
localip = '202.100.1.138'
destip = '202.100.1.139'
ifname = 'eno33554944'

#######################源MAC为本地MAC####目的MAC为广播#########操作码为1(请求)#######################################################由于多个网卡所以需要指派iface###########
result_raw = srp(Ether(src=localmac, dst='FF:FF:FF:FF:FF:FF')/ARP(op=1, hwsrc=localmac, hwdst='00:00:00:00:00:00', psrc=localip, pdst=destip), iface = ifname, verbose = False)

'''
sr() function is for sending packets and receiving answers. The function #returns a couple of packet and answers, and the unanswered packets. 
sr1() is a variant that only return one packet that answered the packet (or #the packet set) sent. The packets must be layer 3 packets (IP, ARP, etc.). 
srp() do the same for layer 2 packets (Ethernet, 802.3, etc.).
send() function will send packets at layer 3. That is to say it will handle routing and layer 2 for you. 
sendp() function will work at layer 2.
'''

#print(result_raw)
#(<Results: TCP:0 UDP:0 ICMP:0 Other:1>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>) 一个元组,[0]收到响应的数据包,[1]未收到响应的数据包
#print(type(result_raw[0]))
#<class 'scapy.plist.SndRcvList'> #Https://fossies.org/dox/scapy-2.3.1/classscapy_1_1plist_1_1SndRcvList.html
result_list = result_raw[0].res #res: the list of packets,产生由收发数据包所组成的清单(list)
#print(result_list)
#[(<Ether  dst=FF:FF:FF:FF:FF:FF src=00:0c:29:8d:5c:b6 type=ARP |<ARP  op=who-has hwsrc=00:0c:29:8d:5c:b6 psrc=202.100.1.138 hwdst=00:00:00:00:00:00 pdst=202.100.1.139 |>>, <Ether  dst=00:0c:29:8d:5c:b6 src=00:0c:29:43:52:cf type=ARP |<ARP  hwtype=0x1 ptype=IPv4 hwlen=6 plen=4 op=is-at hwsrc=00:0c:29:43:52:cf psrc=202.100.1.139 hwdst=00:0c:29:8d:5c:b6 pdst=202.100.1.138 |<Padding load=‘\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00’ |>>>)]
#一个列表,每一个item为一个元组,元组内包括一次ARP请求与回应

#result_list[0][1][0],[0]表示第一组数据包(收发),[1],表示收包(0为发包),[0]表示以太网头部
#print(result_list[0][1][0].fields) 以太网头部字段
#{'dst': '00:0c:29:8d:5c:b6', 'type': 2054, 'src': '00:0c:29:43:52:cf'}

#result_list[0][1][0],[0]表示第一组数据包(收发),[1],表示收包(0为发包),[1]表示ARP头部
#print(result_list[0][1][1].fields) ARP头部字段
#{'pdst': '202.100.1.138', 'hwtype': 1, 'hwdst': '00:0c:29:8d:5c:b6', 'plen': 4, 'ptype': 2048, 'hwsrc': '00:0c:29:43:52:cf', 'op': 2, 'hwlen': 6, 'psrc': '202.100.1.139'}

print('IP地址: ' + result_list[0][1][1].fields['psrc'] + ' MAC地址: ' + result_list[0][1][1].fields['hwsrc'])

1ccf59da24da649641629ff436b7daae.png



--结束END--

本文标题: Python Scapy ARP

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

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

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

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

下载Word文档
猜你喜欢
  • Python Scapy ARP
    参考手册:https://fossies.org/dox/scapy-2.3.3/当一台主机把以太网数据帧发送到位于同一个局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据包中的目的IP地址。...
    99+
    2023-01-31
    Python Scapy ARP
  • 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 TCP
    TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。TCP通过下列方式来...
    99+
    2023-01-31
    Python Scapy TCP
  • Python Scapy Ping
    参考手册:http://phaethon.github.io/scapy/api/usage.html scapy是python的一个库,提供网络协议的构造,请求等scrapy是python的爬虫框架三个层次:1、理解协议2、分析协议3、构...
    99+
    2023-01-31
    Python Scapy Ping
  • Python Scapy(2.3.1)文
    http://blog.csdn.net/dj1174232716/article/details/44784081 Python的Scapy模块能够让用户发送,嗅探,解析并伪造网络数据包。这些能力能用来构建探测,扫描或者攻击网络的工具。...
    99+
    2023-01-31
    Python Scapy
  • Kali-Python scapy模块-
    Kali Python3环境安装scapy模块pip3 install scapy本地网卡网段arp_scan脚本#!/usr/bin/python3 import logging import subprocess logging.ge...
    99+
    2023-01-31
    模块 Kali Python
  • Linux-Python-Scapy的T
    TCP 连接扫描:客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放; TCP SYN 扫描(也称为半开放扫描或stealth扫描):这个技术同 TCP 连接扫描非常相似。同样是客户端向服务器...
    99+
    2023-01-31
    Linux Python Scapy
  • Python中scapy怎么用
    本篇文章给大家分享的是有关Python中scapy怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。网络编程大家都学过吧socket&nbs...
    99+
    2022-10-19
  • python scapy学习笔记
    1. ubuntu下安装gnuplot  转自:http://blog.163.com/gz_ricky/blog/static/182049118201362501316961/2.安装PyX sudo pip install pyx=...
    99+
    2023-01-31
    学习笔记 python scapy
  • python 使用scapy创建arpi
    以下程序均来自《Python.UNIX和Linux系统管理指南》据说scapy是一个很厉害的东西使用的scapy版本为2.1.0,注意导入包的方式与原书略有差别scapy_arping.py #!/usr/bin/env/pyth...
    99+
    2023-01-31
    python scapy arpi
  • Python scapy模块个人见解
    scapy模块from scapy.all import *    //来自scapy.all文件,导入所有函数python交互模式中:ls(*)*=Ether、IP、ICMP、TCP、UDP、ARP    等等,查看可以配置的参数1.构建...
    99+
    2023-01-31
    见解 模块 Python
  • python 网络数据包模块:scapy
           scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络***和测试中。它可以代替hping,arpspoof.ARP SK,arping,p0f,甚至是部分nma...
    99+
    2023-01-31
    数据包 模块 网络
  • Python使用scapy模块发包收包
    前言 众所周知,我们每天上网都会有很多数据包需要发送,然后处理在接受在发送,这样一个循环往复的过程 这里就显示了很多数据包的发送接收数据,那什么是包呢?下面一起看看 包( packet )是网络通信传输中的数据单...
    99+
    2022-06-02
    Python scapy python 发包收包
  • Ubuntu中python导入scapy出错如何解决
    在Ubuntu中导入Scapy出错可能是由于Scapy模块没有正确安装或Python解释器无法找到Scapy模块。以下是一些解决方法...
    99+
    2023-08-24
    Ubuntu python scapy
  • Python如何使用scapy模块发包收包
    这篇文章给大家分享的是有关Python如何使用scapy模块发包收包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对...
    99+
    2023-06-14
  • ARP欺骗
    ARP欺骗定义 ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使...
    99+
    2023-09-12
    linux 网络 经验分享 安全
  • ARP扫描工具arp-scan有什么用
    这篇文章主要介绍ARP扫描工具arp-scan有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ARP扫描工具arp-scanarp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标...
    99+
    2023-06-04
  • 什么事ARP
    本篇内容主要讲解“什么事ARP”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么事ARP”吧!一、关于ARP欺骗的说明    近期来,很多网吧遭遇一类病毒,导致网吧...
    99+
    2023-06-10
  • H3C ARP概述
    ARP 简介ARP 作用    ARP( Address Resolution Protocol,地址解析协议)是将 IP 地址解析为以太网 MAC 地址(或称物理地址)的协议。    在局域网中,当主机或其它网络设备有数据要发送给另一个主...
    99+
    2023-01-31
    H3C ARP
  • golang arp请求
    本文将介绍如何使用Golang发送ARP请求来获取目标设备的MAC地址。ARP(Address Resolution Protocol)是解析网络层地址(IP地址)和数据链路层地址(MAC地址)的一种协议。在局域网中,每个设备都有一个唯一的...
    99+
    2023-05-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作