您的位置:首页 > 编程语言 > Python开发

「python」: arp脚本的两种方法

2015-07-19 17:44 621 查看

「python」: arp脚本的两种方法

第一种是使用arping工具:

#!/usr/bin/env python
import subprocess
import sys
import re

def arping(ipaddress = "192.168.1.1"):
p = subprocess.Popen("/usr/sbin/arping -c 2 %s" % ipaddress, shell = True,
stdout = subprocess.PIPE)
out = p.stdout.read()
result = out.split()
for item in result:
if ":" in item:
print item

if __name__ == "__main__":
if len(sys.argv) > 1:
for ip in sys.argv[1:]:
print "arping", ip
arping(ip)
else:
arping()


这种方法依赖于特定平台的工具,整体就是使用了一个系统调用。

第二种是使用scapy,这种方法可以实现平台无关化

#!/usr/bin/env python
from scapy import srp,Ether,ARP,conf
import sys

def arping(iprange="192.168.1.1/24"):
conf.verb = 0
ans,unans = srp(Enter(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange),
timeout=2)
collection = []
for snd, rcv in ans:
result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split()
collection.append(result)
return collection

if __name__ == "__main__":
if len(sys.argv) > 1:
for ip in sys.argv[1:]:
print "arping", ip
print arping(ip)
else:
print arping()


scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: