Python的端口扫描器与线程
问题描述:
我想在Python中创建一个端口扫描器。我得到了扫描仪,但它需要四十五分钟才能打印结果。我开始实行线程,但是我无法弄清楚如何把不同的范围到脚本。我开始创建一个全局变量,并尝试在每个线程中传递它。不幸的是,它不能正常工作,我得到一个无效的语法错误。以下是代码。Python的端口扫描器与线程
import socket
import os
import sys
from threading import Thread
server = raw_input("Please enter a server name ")
def portConnect():
global num
try:
serv_ip = socket.gethostbyname(server) # connects to server through try
print "Please wait, scanning remote host", serv_ip
for port in range(num):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = sock.connect_ex((serv_ip, port))
if connect == 0:
print "Port {}: Open".format(port)
sock.close()
except socket.gaierror:
print """
I can't find that server, idiot! Try again
"""
sys.exit()
for i in range(1):
t = Thread(target=portConnect,(num=100))
t.start()
我在做什么错?
答
螺纹预计args=
的元组,并将其发送它作为参数传递给函数
这样,你发送100
作为第一个参数(num
)到portConnect()
def portConnect(num):
print(num)
# code
t = Thread(target=portConnect, args=(100,))
要发送范围,你需要两个参数
def portConnect(from_, to_):
print(from_, to_)
for port in range(from_, to_):
# ...
size = 20
for i in range(1, 100, size):
t = Thread(target=portConnect, args=(i, i+size))
t.start()
BTW:模块scapy让所以它被用于端口扫描,嗅探你发送一个数据包,等等
您可以用专用工具做的更像nmap
(GUI包装:Zenmap)或Kali Linux
你可以尝试在Python中使用nmap
:python-nmap : nmap from python
+0
这帮助很大,非常感谢! – George
看看在多页https://docs.python.org/2/library/multiprocessing.html,特别是在'Pool'和'Process'这可能是最合适的你的情况。 – sal