端口扫描器 - 无法将所有打开的端口添加到变量(列表)
Port Scanner - Can't Add All Opened Ports To A Variable (List)
我的代码不会显示包含所有已打开端口的 opened_ports 列表。
(我认为它甚至没有增加价值。(也许覆盖?))
我已经尝试了一些方法,但没有任何效果。
顺便说一句:有没有办法对 "Port x is closed." 进行排序?
输出:
...
Port 97 is closed.
Port 100 is closed.
All opened ports within the selected range:
[]
代码:
import socket, threading, time
from queue import Queue
print_lock = threading.Lock()
target = input('Target:' + ' ')
workers = input('Workers:' + ' ')
first_port = input('First port:' + ' ')
last_port = input('Last port:' + ' ')
if first_port == 'min':
first_port = 1
if last_port == 'max':
last_port = 65536
print('\n' + 'Scanning...' + '\n')
def scan(port):
soccer = socket.socket(socket.AF_INET, socket. SOCK_STREAM)
try:
connection = soccer.connect((target, port))
with print_lock:
print('Port' + ' ' + str(port) + ' ' + 'is opened.')
time.sleep(5)
opened_ports = opened_ports + port
connection.close()
except:
with print_lock:
print('Port' + ' ' + str(port) + ' ' + 'is closed.')
def thread():
while True:
worker = queue.get()
scan(worker)
queue.task_done()
queue = Queue()
opened_ports = []
for x in range(int(workers)):
threader = threading.Thread(target = thread)
threader.daemon = True
threader.start()
for worker in range(int(first_port), int(last_port)):
queue.put(worker)
queue.join()
print('\n' + 'All opened ports within the selected range:' + '\n' + '\n' +
str(opened_ports))
只需将 opened_ports = opened_ports + port
更改为 opened_ports.append(port)
我的代码不会显示包含所有已打开端口的 opened_ports 列表。 (我认为它甚至没有增加价值。(也许覆盖?)) 我已经尝试了一些方法,但没有任何效果。
顺便说一句:有没有办法对 "Port x is closed." 进行排序?
输出:
...
Port 97 is closed.
Port 100 is closed.
All opened ports within the selected range:
[]
代码:
import socket, threading, time
from queue import Queue
print_lock = threading.Lock()
target = input('Target:' + ' ')
workers = input('Workers:' + ' ')
first_port = input('First port:' + ' ')
last_port = input('Last port:' + ' ')
if first_port == 'min':
first_port = 1
if last_port == 'max':
last_port = 65536
print('\n' + 'Scanning...' + '\n')
def scan(port):
soccer = socket.socket(socket.AF_INET, socket. SOCK_STREAM)
try:
connection = soccer.connect((target, port))
with print_lock:
print('Port' + ' ' + str(port) + ' ' + 'is opened.')
time.sleep(5)
opened_ports = opened_ports + port
connection.close()
except:
with print_lock:
print('Port' + ' ' + str(port) + ' ' + 'is closed.')
def thread():
while True:
worker = queue.get()
scan(worker)
queue.task_done()
queue = Queue()
opened_ports = []
for x in range(int(workers)):
threader = threading.Thread(target = thread)
threader.daemon = True
threader.start()
for worker in range(int(first_port), int(last_port)):
queue.put(worker)
queue.join()
print('\n' + 'All opened ports within the selected range:' + '\n' + '\n' +
str(opened_ports))
只需将 opened_ports = opened_ports + port
更改为 opened_ports.append(port)