博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python编写的ARP扫描工具
阅读量:4511 次
发布时间:2019-06-08

本文共 2477 字,大约阅读时间需要 8 分钟。

源码如下:

1 rom scapy.all import * 2 import threading 3 import argparse 4 import logging 5 import re 6  7 logging.getLogger('scapy.runtime').setLevel(logging.ERROR) 8  9 def parse_ip(targets):10     '''11     解析192.168.1.1-254形式的IP段,分解成IP列表12     '''13     _split = targets.split('-')14     first_ip = _split[0]15     ip_split = first_ip.split('.')16     ipdot4 = range(int(ip_split[3]),int(_split[1])+1)17     ipaddrs = [ip_split[0]+'.'+ip_split[1]+'.'+ip_split[2]+'.'+str(p) for p in ipdot4]18     return ipaddrs19 20 def arp_scan(target_ip):21     '''22     通过scapy的sr1函数进行ARP扫描23     '''24     try:25         ans = sr1(ARP(pdst=target_ip),timeout=1,verbose=False)26         if ans:27             return ans28     except Exception:29         print '[-]发包错误'30         exit(1)31 32 def parse_arp(target_ip):33     '''34     解析收到的ARP reply包,采集IP及其对应的MAC35     '''36     ans = arp_scan(target_ip)37     if ans:38         if ans.haslayer('ARP') and ans.fields['op'] == 2:39             print '[+] IP:%s => MAC:%s' % (ans.fields['psrc'],ans.fields['hwsrc'])40 41 if __name__ == '__main__':42     usage = 'python %(prog)s -t [targets]'43     parser = argparse.ArgumentParser(usage=usage,epilog='以上做为说明,祝好运!',description='说明:指定IP或IP段进行ARP扫描.',version='V1.0')44     parser.add_argument('-t',action='store',dest='targets',help='targets为IP或IP段,如192.168.1.x或192.168.1.1-254')45 46     args = parser.parse_args()47     if args.targets == None:48         parser.print_help()49     elif (not re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$',args.targets)) and \50             (not re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}$',args.targets)):51         parser.print_help()52     else:53         targets = args.targets54 55 56     if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$',targets):57         ip = targets58         parse_arp(ip)59     elif re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}$',targets):60         ips = parse_ip(targets)61         for ip in ips:62             t = threading.Thread(target=parse_arp,args=(ip,))63             t.start()

运行结果如下:

1 python exp2.py -t 192.168.1.1-2542 [+] IP:192.168.1.1 => MAC:14:75:90:XX:XX:XX3 [+] IP:192.168.1.111 => MAC:c6:36:55:XX:XX:XX4 [+] IP:192.168.1.100 => MAC:68:3e:34:XX:XX:XX5 [+] IP:192.168.1.112 => MAC:84:38:38:XX:XX:XX6 [+] IP:192.168.1.114 => MAC:6c:8d:c1:XX:XX:XX7 [+] IP:192.168.1.103 => MAC:84:38:38:XX:XX:XX8 [+] IP:192.168.1.102 => MAC:58:1f:28:XX:XX:XX

 

转载于:https://www.cnblogs.com/darkpig/p/7627080.html

你可能感兴趣的文章
WC2019退役失败记
查看>>
Centos6.6下安装nginx1.6.3
查看>>
iOS开发之多线程
查看>>
[算法竞赛]第七章_暴力求解法
查看>>
MorkDown 常用语法总结
查看>>
sqlserver生成随机数 2011-12-21 15:47 QQ空间
查看>>
jQuery禁止鼠标右键
查看>>
查询linux计算机的出口ip
查看>>
解决Android的ListView控件滚动时背景变黑
查看>>
laravel 多检索条件列表查询
查看>>
Java_基础—finally关键字的特点及作用
查看>>
SQLServer 日期函数大全
查看>>
激活webstorm11
查看>>
mysql 行转列 和 列转行
查看>>
[Leetcode]
查看>>
再谈vertical-align与line-height
查看>>
有关时延扩展的双语句子
查看>>
工作多年后积累的设计灵活,稳定,优秀WinForms应用程序的最佳实践 WinForms best practice...
查看>>
iOS开发——高级篇——iOS键盘的相关设置(UITextfield)
查看>>
JVMGC机制
查看>>