这是第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周学完,你已经能独立写: