[英]Python Port Scanner with Threading
I am trying to create a port scanner in Python. 我正在尝试在Python中创建端口扫描程序。 I got the scanner going but it takes forty five minutes to print results.
我使用了扫描仪,但打印结果需要四十五分钟。 I started to institute threading however I can't figure out how to put different ranges into the script.
我开始建立线程,但是我不知道如何在脚本中放入不同的范围。 I started to go to creating a global variable and try to pass that along in each thread.
我开始创建一个全局变量,并尝试在每个线程中传递它。 Unfortunately it's not working correctly and I am getting an invalid syntax error.
不幸的是,它无法正常工作,并且我收到了无效的语法错误。 Below is the code.
下面是代码。
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()
What am I doing wrong? 我究竟做错了什么?
Thread expects args=
as tuple and it sends it as arguments to function 线程期望
args=
作为元组,并将其作为参数发送给函数
This way you send 100
as first argument ( num
) to portConnect()
这样,您将
100
作为第一个参数( num
)发送到portConnect()
def portConnect(num):
print(num)
# code
t = Thread(target=portConnect, args=(100,) )
To send range you need two arguments 要发送范围,您需要两个参数
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: module scapy lets you send single packet so it is used for portscanning, sniffing, etc. 顺便说一句:模块scapy可让您发送单个数据包,因此可用于端口扫描,嗅探等。
You can do more with special tools like nmap
(GUI wrapper: Zenmap ) or Kali Linux 您可以使用
nmap
(GUI包装器: Zenmap )或Kali Linux等特殊工具完成更多工作
You may try to use nmap
in Python: python-nmap : nmap from python 您可以尝试在Python中使用
nmap
: python-nmap:来自python的nmap
您可以使用nmap轻松解决此问题。
nmap -p- <some_host>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.