嗨,大家好!我是小欣。今天来跟大家聊一聊Python网络安全工具开发中的端口扫描和漏洞检测。作为一名安全工程师,掌握这些基础工具的开发对我们来说非常重要。让我们一起来看看如何用Python打造一个简单但实用的端口扫描器!
首先我们需要准备一些必要的模块,主要用到socket和threading这两个内置模块:
import socket
import threading
from queue import Queue
import time
# 初始化一个队列用于多线程
port_queue = Queue()
来看看最基础的端口扫描功能实现:
def port_scan(target, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((target, port))
if result == 0:
print(f“端口 {port} 开放”)
sock.close()
except:
pass
老铁们都知道,单线程扫描太慢啦,咱们来个多线程版本:
def threader():
while True:
target, port = port_queue.get()
port_scan(target, port)
port_queue.task_done()
def run_scanner(target, ports=100):
# 创建线程池
for _ in range(30):
t = threading.Thread(target=threader)
t.daemon = True
t.start()
# 添加扫描任务
for port in range(1, ports + 1):
port_queue.put((target, port))
port_queue.join()
小欣再教大家一个骚操作,添加常见端口服务识别:
common_ports = {
21: “FTP”,
22: “SSH”,
23: “Telnet”,
25: “SMTP”,
80: “HTTP”,
443: “HTTPS”,
3306: “MySQL”,
5432: “PostgreSQL”
}
def identify_service(port):
return common_ports.get(port, “未知服务”)
让我们看看怎么把这个工具用起来:
def main():
target = input(“请输入目标IP地址:”)
print(f“\n开始扫描目标: {target}”)
start_time = time.time()
run_scanner(target, 1000) # 扫描前1000个端口
print(f“\n扫描完成!用时: {time.time() - start_time:.2f} 秒”)
if __name__ == “__main__”:
main()
各位老铁要记住,这个工具仅供学习和测试使用。在实际使用中要注意以下几点:
好啦,今天的分享就到这里。小欣建议大家在理解代码的基础上,可以试着添加更多功能,比如指纹识别、漏洞库匹配等。动手写代码才是提升最快的方式!有什么问题欢迎在评论区交流哈!