first commit
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
import socket
|
||||
import threading
|
||||
from queue import Queue
|
||||
import time
|
||||
|
||||
# 定义要检查的IP范围和端口
|
||||
IP_BASE = "192.168.10."
|
||||
START_IP = 1
|
||||
END_IP = 255
|
||||
TARGET_PORT = 5555
|
||||
|
||||
# 线程数量,可根据需要调整
|
||||
THREAD_COUNT = 30
|
||||
|
||||
|
||||
def check_port(ip, port, result_queue):
|
||||
"""检查指定IP的端口是否开放"""
|
||||
try:
|
||||
# 创建socket对象
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
# 设置超时时间为1秒
|
||||
sock.settimeout(1)
|
||||
# 尝试连接
|
||||
result = sock.connect_ex((ip, port))
|
||||
if result == 0:
|
||||
result_queue.put(ip)
|
||||
sock.close()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def worker(ip_queue, result_queue):
|
||||
"""工作线程,从队列中获取IP并检查端口"""
|
||||
while not ip_queue.empty():
|
||||
ip = ip_queue.get()
|
||||
check_port(ip, TARGET_PORT, result_queue)
|
||||
ip_queue.task_done()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_time = time.time()
|
||||
print(f"开始扫描 {IP_BASE}{START_IP} 到 {IP_BASE}{END_IP} 的 {TARGET_PORT} 端口...")
|
||||
|
||||
# 创建IP队列
|
||||
ip_queue = Queue()
|
||||
for i in range(START_IP, END_IP + 1):
|
||||
ip = f"{IP_BASE}{i}"
|
||||
ip_queue.put(ip)
|
||||
|
||||
# 创建存储开放端口IP的队列
|
||||
result_queue = Queue()
|
||||
|
||||
# 创建并启动线程
|
||||
threads = []
|
||||
for _ in range(THREAD_COUNT):
|
||||
thread = threading.Thread(target=worker, args=(ip_queue, result_queue))
|
||||
thread.start()
|
||||
threads.append(thread)
|
||||
|
||||
# 等待所有IP都被处理
|
||||
ip_queue.join()
|
||||
|
||||
# 收集结果
|
||||
open_ips = []
|
||||
while not result_queue.empty():
|
||||
open_ips.append(result_queue.get())
|
||||
|
||||
# 排序结果
|
||||
open_ips.sort(key=lambda x: int(x.split(".")[-1]))
|
||||
|
||||
# 输出结果
|
||||
print("\n扫描完成!")
|
||||
print(f"耗时: {time.time() - start_time:.2f} 秒")
|
||||
print(f"发现 {len(open_ips)} 个设备的 {TARGET_PORT} 端口开放:")
|
||||
for ip in open_ips:
|
||||
print(f" {ip}:{TARGET_PORT}")
|
||||
@@ -0,0 +1,50 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(
|
||||
['port.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False,
|
||||
)
|
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name='port',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=True,
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
)
|
||||
coll = COLLECT(
|
||||
exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name='port',
|
||||
)
|
||||
Reference in New Issue
Block a user