python scapy arp scan [局域网arp扫描]

写个多线程 局域网arp扫描器
看到网上绝大多数的python scapy arp 局域网扫描脚本写的实在是不敢恭维
spended 3mins code this

流程

1.开启数据包捕捉器
2.构造数据包并发送
本python 局域网arp 扫描器是基于多线程进行接收的,
ps:这年头谁还用sr或者srp 一个个发送并接收的,效率太低了,还慢。
主要是接收包慢,发包并不消耗太多时间及内存

code[name: arp_scan.py]

import sys
from scapy.all import *
from threading import Thread


def scanHOST(IP_list):		//构造数据包并发送
    pkt = Ether(dst='FF:FF:FF:FF:FF:FF')/ARP(pdst=IP_list)		
    sendp(pkt,verbose=False)		


def is_host_live():			//捕捉数据包并过滤出指定条件的数据包确定主机是否存活
    def arp_scan_callback(pkt):
        if ARP in pkt and pkt[ARP].op is 2:			//如果捕捉的数据包有ARP层并且是op 参数为is-at,则确定主机存活
            return pkt.sprintf("%ARP.hwsrc%\t%ARP.psrc%    is lived")
    
    sniff(filter='arp', store=0,prn=arp_scan_callback,timeout=3)	//定义一个过滤器,只捕捉arp 数据包,并调用回调函数进行处理

def main():
    args = sys.argv
    if len(args) != 2:   //如果接受的参数不是两个的话,则打印提示并退出
        print('Usage: python arp_scan.py 192.168.10.0/24')
        exit()

    Thread(target=is_host_live).start()		//定义一个子线程并运行捕捉器函数
    scanHOST(args[1])						//将参数传入扫描函数并运行

if __name__ == '__main__':
    main()

如何使用

 [root@local]# python arp_scan.py 192.168.199.0/24 
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘侠伍十七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值