pythonarp工具_python多线程ping及arpping扫描工具的实现

这是一个python多线程ping和arpping扫描工具实现的源码。

这里还有待修改的地方,例如:希望能扫描一个地址范围,使用IPy模块可以实现对ip地址的处理,实现扫描一个网段的ip,不用像现在实现的这么笨拙。应该有更巧妙的方法。

#/usr/bin/env python

#--encoding=UTF-8--

import subprocess

from threading import Thread

from Queue import Queue

import re

num_ping_threads = 3

num_arp_threads = 3

in_queue = Queue()

out_queue = Queue()

#ips = ["10.65.10.50","10.65.10.80"]

ips = ["你要扫描的ip范围"]

def ping_scan(i,iq,oq):

while True:

ip = iq.get()

print "[*]Thread %s: Pinging %s" % (i,ip)

ret = subprocess.call("ping -c 1 %s" % ip,shell = True,stdout = open('/dev/null','w'),stderr = subprocess.STDOUT)

if ret == 0:

print "[*]%s: is alive." % ip

oq.put(ip)

else:

print "[*]%s: did not respond" % ip

iq.task_done()

def arping_scan(i,oq):

while True:

ip = oq.get()

p = subprocess.Popen("arping -c 1 %s" % ip,shell = True,stdout = subprocess.PIPE)

out = p.stdout.read()

result = out.split()

pattern = re.compile(".*:.*:.*")

macaddr = None

for item in result:

if re.search(pattern,item):

macaddr = item

print "[*]IP Address: %s | Mac Address: %s" % (ip,macaddr)

oq.task_done()

#www.iplaypy.com

for ip in ips:

in_queue.put(ip)

for i in range(num_ping_threads):

worker = Thread(target = ping_scan,args = (i,in_queue,out_queue))

worker.setDaemon(True)

worker.start()

for i in range(num_arp_threads):

worker = Thread(target = arping_scan,args = (i,out_queue))

worker.setDaemon(True)

# worker.Daemon = True

worker.start()

print "[*]Main Thread Waiting."

in_queue.join()

out_queue.join()

print "[*]Done!"

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/other/o2262.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值