首页 > 上网技巧 > python 多线程扫描开放端口

python 多线程扫描开放端口

时间:2021-02-04 13:52 作者:QQ地带 我要评论

为什么说python是黑客的语言? 因为很多扫描+破解的任务都可以用python很快的实现,简洁明了。且有大量的库来支持。
import socket,sys
import time
from thread_test import MyThread
 
socket.setdefaulttimeout(1)
#设置每个线程socket的timeou时间,超过1秒没有反应就认为端口不开放
thread_num=4
#线程数目 
ip_end=256
ip_start=0
scope=ip_end/thread_num
 
def scan(ip_head,ip_low, port):
    try:
        # Alert !!! below statement should be inside scan function. Else each it is one s
        ip=ip_head+str(ip_low)
print ip
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
#通过这一句判断 是否连通
        s.close()
print "ip %s port %d open\n" %(ip,port)
        return True
    except:
        return False
 
 
def scan_range(ip_head,ip_range,port):
start,end=ip_range
for i in range(start,end):
scan(ip_head,i,port)
 
if len(sys.argv)<3:
print "input ip and port"
exit()
 
ip_head=sys.argv[1]
port=int(sys.argv[2])
 
 
ip_range=
for i in range(thread_num):
x_range=[i*scope,(i+1)*scope-1]
ip_range.append(x_range)
 
threads=
for i in range(thread_num):
t=MyThread(scan_range,(ip_head,ip_range,port))
threads.append(t)
for i in range(thread_num):
threads.start()
for i in range(thread_num):
threads.join()
#设置进程阻塞,防止主线程退出了,其他的多线程还在运行
 
print "*****end*****"
多线程的类函数实现: 有一些测试函数在上面没注释或者删除掉,为了让一些初学者更加容易看懂。
import thread,threading,time,datetime
from time import sleep,ctime
def loop1():
print "start %s " %ctime()
print "start in loop1"
sleep(3)
print "end %s " %ctime()
 
def loop2():
print "sart %s " %ctime()
print "start in loop2"
sleep(6)
print "end %s " %ctime()
 
 
class MyThread(threading.Thread):
def __init__(self,fun,arg,name=""):
threading.Thread.__init__(self)
self.fun=fun
self.arg=arg
self.name=name
#self.result
 
def run(self):
self.result=apply(self.fun,self.arg)
def getResult(self):
return self.result
 
def fib(n):
if n<2:
return 1
else:
return fib(n-1)+fib(n-2)
 
 
def sum(n):
if n<2:
return 1
else:
return n+sum(n-1)
 
def fab(n):
if n<2:
return 1
else:
return n*fab(n-1)
 
def single_thread():
print fib(12)
print sum(12)
print fab(12)
 
 
def multi_thread():
print "in multithread"
fun_list=[fib,sum,fab]
n=len(fun_list)
threads=
count=12
for i in range(n):
t=MyThread(fun_list,(count,),fun_list.__name__)
threads.append(t)
for i in range(n):
threads.start()
 
for i in range(n):
threads.join()
result= threads.getResult()
print result
def main():
'''
print "start at main"
thread.start_new_thread(loop1,())
thread.start_new_thread(loop2,())
sleep(10)
print "end at main"
'''
start=ctime()
#print "Used %f" %(end-start).seconds
print start
single_thread()
end=ctime()
print end
multi_thread()
#print "used %s" %(end-start).seconds 
if __name__=="__main__":
main()
 
 
最终运行的格式就是  python scan_host.py 192.168.1. 22
上面的命令就是扫描192.168.1 ip段开启了22端口服务的机器,也就是ssh服务。 

标签: Python
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告