当前位置:首页>python>Python应用|第二周安全基础

Python应用|第二周安全基础

  • 2026-09-08 05:35:06
Python应用|第二周安全基础

这是第2周:网络安全小工具每天的示例代码,直接复制就能运行,全部是测试/安全岗最实用的脚本。


Day8:socket 基础 – IP 端口连通性测试

import socketdefis_port_open(ip: str, port: int, timeout=1) -> bool:try:with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:            s.settimeout(timeout)            result = s.connect_ex((ip, port))return result == 0except:returnFalseif __name__ == "__main__":    ip = "127.0.0.1"    port = 80    print(f"{ip}:{port} 开放"if is_port_open(ip, port) else"关闭/不可访问")

Day9:多端口扫描器(安全巡检常用)

import socketdefscan_ports(ip: str, ports: list):    open_ports = []for port in ports:try:with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:                s.settimeout(0.3)if s.connect_ex((ip, port)) == 0:                    open_ports.append(port)except:continuereturn open_portsif __name__ == "__main__":    target = "127.0.0.1"    check_ports = [21, 22, 80, 443, 3306, 8080]    open_ports = scan_ports(target, check_ports)    print(f"开放端口: {open_ports}")

Day10:文件 MD5 / SHA256 校验(防篡改、合规必备)

import hashlibdefget_file_hash(filepath: str, method="md5") -> str:    hash_obj = hashlib.md5() if method == "md5"else hashlib.sha256()with open(filepath, "rb") as f:while chunk := f.read(4096):            hash_obj.update(chunk)return hash_obj.hexdigest()if __name__ == "__main__":    file_path = "test.exe"## 换成你自己的文件    print("MD5:", get_file_hash(file_path))    print("SHA256:", get_file_hash(file_path, "sha256"))

Day11:日志分析脚本 – 检索错误、登录、异常

defanalyze_log(log_path: str, keywords: list):    results = {kw: [] for kw in keywords}try:with open(log_path, "r", encoding="utf-8", errors="ignore") as f:for line_num, line in enumerate(f, 1):for kw in keywords:if kw.lower() in line.lower():                        results[kw].append((line_num, line.strip()))except FileNotFoundError:        print("日志文件不存在")return resultsif __name__ == "__main__":## 关键词检索:错误、失败、登录、异常    res = analyze_log("app.log", ["error", "fail", "login", "exception", "warning"])for kw, lines in res.items():        print(f"\n【{kw}】 出现 {len(lines)} 次")for ln, line in lines[:5]:            print(f"第{ln}行: {line}")

Day12:简单路径探测脚本(接口/后台路径扫描)

import requestsdefpath_scan(base_url: str, paths: list):    found = []for path in paths:try:            url = base_url.rstrip("/") + "/" + path.lstrip("/")            r = requests.head(url, timeout=1, allow_redirects=False)if200 <= r.status_code < 400:                found.append((url, r.status_code))except:continuereturn foundif __name__ == "__main__":    target = "http://127.0.0.1"    common_paths = ["login", "admin", "api", "upload", "config", "test"]    result = path_scan(target, common_paths)for u, code in result:        print(f"存在: {u} [{code}]")

Day13:Ping 检测 + 基本信息收集

import subprocessimport platformdefping(host: str) -> bool:    param = "-n"if platform.system().lower() == "windows"else"-c"    cmd = ["ping", param, "1", host]try:return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=2).returncode == 0except:returnFalseif __name__ == "__main__":    host = "127.0.0.1"    print(f"{host} 可连通"if ping(host) else"不可连通")

Day14:三合一综合小工具(端口扫描 + 文件校验 + 日志检索)

直接把上面整合,就是你第一个安全巡检工具

## 三合一:端口扫描 + 文件哈希 + 日志检索from day9 import scan_portsfrom day10 import get_file_hashfrom day11 import analyze_logif __name__ == "__main__":    print("===== 端口扫描 =====")    print(scan_ports("127.0.0.1", [80, 443, 8080]))    print("\n===== 文件校验 =====")    print(get_file_hash("test.txt"))    print("\n===== 日志检索 =====")    print(analyze_log("app.log", ["error", "login"]))

第2周学完,你已经能独立写:

  • 端口扫描器
  • 文件防篡改校验工具
  • 日志异常分析脚本
  • 简单路径探测

最新文章

随机文章