• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

多线程ping和arpping扫描工具

python 水墨上仙 1168次浏览

多线程ping和arpping扫描工具

#/usr/bin/env python
#--encoding=UTF-8--
#auth@:xfk
#blog@:blog.sina.com.cn/kaiyongdeng
#data@:2012-04-15
#a simpl ping scaner

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()

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!"


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明多线程ping和arpping扫描工具
喜欢 (0)
加载中……