资讯动态

从剪贴板监控到内核驱动:Keylogger 教育项目的 9 大扩展挑战实战指南

发布时间:2026/10/9 2:53:52 来源:尧图企业网站定制
【免费下载链接】Cybersecurity-ProjectsBuilding 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 项目地址https://gitcode.com/gh_mirrors/cy/Cybersecurity-Projects点击查看免费下载导读本文基于 Cybersecurity-Projects 仓库中 beginner 级别的 Keylogger 教学项目源码位于 PROJECTS/beginner/keylogger/keylogger.py系统拆解其官方扩展挑战文档learn/04-CHALLENGES.md中全部 9 个递进式扩展挑战以及真实场景集成、性能优化与反取证等附加练习。阅读完成后你将掌握从剪贴板监控、日志加密、关键字截图到进程注入、C2 服务器、内核级键盘过滤驱动与多协议数据外渗的完整攻防知识链并能结合源码中的KeyloggerConfig、LogManager、WebhookDelivery、WindowTracker等组件理解每一次扩展的落点。重要声明本项目及本文内容仅用于安全研究与教育目的。未经授权监控他人系统属于违法行为请务必仅在自有设备或已获得明确书面同意的系统上进行任何实验。一、扩展挑战的整体框架原项目是一个约 550 行的单文件 Python 实现核心类全部位于 keylogger.pyKeyloggerConfigkeylogger.py:107-120dataclass 形式的运行时配置纯数据容器构造时无副作用KeyEventkeylogger.py:123-152单次击键的不可变数据模型WindowTrackerkeylogger.py:155-219跨平台活动窗口标题获取LogManagerkeylogger.py:222-296带大小自动轮转的直接文件写入器WebhookDeliverykeylogger.py:298-371基于 buffer-swap 模式的批量 HTTP 数据外发Keyloggerkeylogger.py:373-533协调监听器、日志写入与 webhook 的主控制器。扩展挑战按难度分为 Easy / Intermediate / Advanced / Expert 四个档位。建议从最简单的挑战入手建立信心再逐步深入。项目配套的 test_keylogger.py 覆盖了上述组件的 46 个 pytest 用例任何新扩展都应遵循同样的测试风格。二、Easy 挑战在数据采集层加能力Challenge 1剪贴板监控Clipboard Monitoring目标每当用户复制或粘贴文本时捕获剪贴板内容并将剪贴板数据与击键记录一同写入日志以捕捉用户从密码管理器粘贴的密码。实用价值许多用户从不手打密码而是直接粘贴。仅依赖键盘捕获的 keylogger 会完全漏掉这类凭据。剪贴板监控能捕捉键盘捕获看不到的数据——2020 年 SolarWinds 事件中攻击者正是将剪贴板窃取恶意软件与 keylogger 搭配使用。学习点平台剪贴板 APIpyperclip 库或平台专用方案轮询式 vs 事件驱动式剪贴板监控的取舍二进制剪贴板数据图片、文件的处理。实现提示安装依赖pip install pyperclip参照WindowTrackerkeylogger.py:155-219的结构创建一个ClipboardMonitor类在独立线程中每 0.5 秒轮询一次剪贴板将当前剪贴板内容与上一次对比仅在变化时记录复用与键盘事件相同的LogManager写入链路。验证方法复制一段文本CtrlC检查日志文件是否出现[CLIPBOARD] text you copied再粘贴文本CtrlV确认日志同时记录粘贴击键与剪贴板内容。Challenge 2过滤敏感应用目标增加配置项跳过对特定应用如密码管理器 1Password、LastPass、KeePass击键的日志记录从而减小日志体积并聚焦高价值目标。实用价值密码管理器解锁时会显示随机字符串记录这些内容既浪费空间又增加分析难度。真实恶意软件往往忽略密码管理器转而聚焦浏览器、邮箱和银行类应用。学习点字符串匹配与过滤配置管理模式全量记录 vs 定向捕获的权衡。实现提示在KeyloggerConfigkeylogger.py:107-120中新增excluded_apps列表字段在_on_presskeylogger.py:428-458中检查self._current_window是否包含任一被排除的应用名使用大小写不敏感匹配例如window_title.lower()是否包含1password测试配置示例KeyloggerConfig(excluded_apps[1password, keepass])。验证方法将 notepad 加入排除列表打开记事本输入文字确认记事本的击键未被记录打开 Chrome 输入文字确认击键被正常记录。Challenge 3击键统计目标统计并展示总击键数、每个应用的击键数、最常按下的按键、日志运行时长等指标并在 keylogger 关闭时打印统计结果。实用价值统计帮助攻击者决定优先分析哪份日志——如果 90% 的击键都发生在 Chrome 中就优先分析 Chrome 日志寻找凭据运行时长则显示恶意软件已未被发现地运行了多久。学习点实时数据聚合使用collections.Counter做频次分析干净的统计展示格式。实现提示新建Statistics类包含计数器total_keys、keys_per_app、special_key_count在_on_presskeylogger.py:457写入LogManager之前自增计数器使用collections.Counter跟踪keys_per_app在stop()方法keylogger.py:516-533中打印统计运行时长计算datetime.now() - start_time。验证方法运行 keylogger 后在多个应用中输入文字CtrlC 停止确认输出类似Statistics: Total keystrokes: 247 Uptime: 0:05:32 Top applications: chrome.exe - Gmail: 156 keystrokes code.exe - keylogger.py: 91 keystrokes三、Intermediate 挑战让日志更难被发现Challenge 4日志文件加密目标使用 AES-256 加密日志文件使磁盘扫描无法发现 password 或 creditcard 等敏感关键字在数据外渗或攻击者取回日志时解密。现实背景现代 EDR 系统会扫描磁盘寻找 IOC失陷指标如常见密码或信用卡号模式。加密日志可规避此类扫描。Carbanak 恶意软件团伙正是靠加密日志在受害机器上潜伏多年。学习点使用 AES 的对称加密基于口令的密钥派生PBKDF2文件加密模式安全性与可检测性之间的权衡。实现路径为 LogManager 增加加密能力修改 keylogger.py:222-296安装依赖pip install cryptography导入from cryptography.fernet import Fernet在__init__中生成密钥self.key Fernet.generate_key()写入前先加密encrypted fernet.encrypt(log_string.encode())与现有日志链路集成修改write_event()使其在写入前加密密钥可存入配置文件或硬编码仅限教育用途新增decrypt_log(log_path, key)工具函数。测试边界情况密钥丢失怎么办如何解密多个轮转后的日志文件加密是否破坏日志轮转的大小计算提示Fernet 提供认证加密可防止篡改逐行单独加密避免单处损坏毁掉整个文件密钥存入KeyloggerConfig.encryption_key增加--decrypt命令行参数用于解密并打印日志。加分项改用非对称加密RSA。生成密钥对用公钥加密日志只有持有私钥的攻击者才能解密——即使受害者发现日志也无法读取。Challenge 5敏感关键字触发的截图目标当输入 password、credit、ssn、secret 等敏感关键字时自动截图帮助攻击者看到击键之外的上下文。现实背景keylogger 只能记录输入了什么无法记录屏幕上有什么。截图能揭示表单布局、邮件内容与视觉上下文。DarkHotel APT 组织正是将键盘记录与屏幕截图结合在酒店 WiFi 中窃取商务旅客的凭据。学习点跨平台屏幕捕获 API击键流中的关键字检测高效的图片存储与压缩文件大小与截图质量之间的平衡。实现路径增加截图能力安装依赖pip install pillow与pip install pyscreenshot参照WindowTracker创建ScreenshotCapture类在击键流中检测关键字维护最近 20 个字符的滑动窗口检查窗口是否包含任一触发关键字触发关键字列表[password, credit, card, ssn, secret]捕获与保存检测到关键字时调用pyscreenshot.grab()以 PNG 格式保存到日志同目录文件名包含时间戳screenshot_20250131_143045.png使用quality75压缩以减小文件体积核心代码提示加入Keylogger类def _check_keywords(self, key_str: str) - None: self._recent_keys.append(key_str) if len(self._recent_keys) 20: self._recent_keys.pop(0) recent_text .join(self._recent_keys).lower() for keyword in self.config.trigger_keywords: if keyword in recent_text: self.screenshot_capture.capture(keyword)落地细节参考LogManager的文件创建模式keylogger.py:240-246在_on_press记录击键之后调用限流截图即使关键字反复出现每 5 秒最多截取 1 张。常见坑单张截图约 1-5MB会迅速填满磁盘截图操作会阻塞回调线程可能丢失击键部分平台要求屏幕录制权限如 macOS。四、Advanced 挑战进阶隐蔽与基础设施Challenge 6进程注入实现隐蔽目标将 keylogger 代码注入合法进程explorer.exe、chrome.exe使任务管理器显示 keylogger 是受信任应用的一部分。难度来源需要理解进程内存布局、DLL 注入技术与平台专属 API。当恶意代码运行在受信任进程内部时检测会变得困难得多。学习点进程注入技术DLL 注入、进程镂空、反射加载Windows API 调用OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread内存保护与 DEP数据执行保护绕过高级规避战术。架构变化当前: python.exe → keylogger.py 新架构: python.exe → inject.py → explorer.exe (注入的代码在此运行)实现步骤研究阶段阅读 Windows DLL 注入资料理解进程内存布局研究 CreateRemoteThread API参考 Metasploit 的注入器模块。设计阶段决定注入 Python 解释器还是编译为 DLL考虑如何与注入代码保持远程通信规划注入进程崩溃后的恢复机制。实现阶段创建包含 keylogger 逻辑的 DLL编写将 DLL 载入目标进程的注入脚本处理 32 位与 64 位进程兼容性为注入失败增加错误处理。测试阶段先对 notepad.exe简单目标做注入测试验证注入后击键仍被捕获确认任务管理器显示 keylogger 代码运行在目标进程中。常见坑现代 Windows 的 DEP、ASLR、CFG 等防护会拦截简单注入杀毒软件对 DLL 注入技术检测非常激进注入受保护进程csrss.exe、lsass.exe需要 SYSTEM 权限进程崩溃会连带终止 keylogger需要恢复机制。参考资源教育用途Mark Russinovich《Windows Internals》进程内存章节Bill Blunden《The Rootkit Arsenal》DLL 注入章节MITRE ATTCK T1055 进程注入技术文档。Challenge 7构建命令与控制C2服务器目标创建一个 Flask 服务器接收多台被感染机器的 webhook 数据存入数据库并提供 Web UI 按受害者、应用或关键字浏览捕获的击键。难度来源需要全栈开发后端、数据库、前端处理来自多个 keylogger 的并发连接实现认证并创建可用的日志分析界面。学习点Web 框架开发Flask/FastAPI时序数据数据库设计PostgreSQL、MongoDB用户认证与授权实时仪表盘构建恶意软件与 C2 之间的安全通信。高层架构┌─────────────────┐ │ Victim 1 │ │ (Keylogger) │ └────────┬────────┘ │ HTTPS POST ▼ ┌─────────────────┐ ┌──────────────┐ │ C2 Server │◄────►│ PostgreSQL │ │ (Flask API) │ │ (Storage) │ └────────┬────────┘ └──────────────┘ │ ▼ ┌─────────────────┐ │ Web UI │ │ (Dashboard) │ └─────────────────┘分阶段实施阶段 1后端 API8-12 小时Flask 应用提供/webhook端点接收 keylogger 数据使用 API 密钥认证接收数据前先校验PostgreSQL 表结构victims表victim_id、hostname、ip、first_seen、last_seenkeystrokes表id、victim_id、timestamp、key、window_title、key_type批量插入击键以提升效率。阶段 2数据分析6-8 小时查询端点/api/victims列出所有被感染机器/api/keystrokes?victim_idXstart_dateY获取击键时间线/api/search?keywordpassword跨所有受害者查找特定词聚合查询每个受害者的热门应用、随时间变化的击键量。阶段 3Web 仪表盘10-15 小时React 或原生 JS 前端受害者列表视图显示所有被感染机器及最近活动击键时间线视图带过滤器的时序日志搜索界面跨所有日志查找 password、credit card实时更新WebSocket 或轮询获取新的击键批次。阶段 4安全加固5-7 小时仅使用 HTTPSLets Encrypt 证书API 密钥轮换机制速率限制防滥用/DDoS输入校验防止恶意 keylogger 数据注入 SQL。测试策略使用 10 个并发 keylogger、每个每分钟发送 1000 次击键做负载测试安全测试在击键数据中尝试 SQL 注入验证已被净化UI 测试验证数据库中有 100 万 击键时搜索仍可用性能即使数据集很大查询响应时间应 200ms。已知挑战数据库模式优化查询百万级击键无索引会很慢。提示为时间线查询建立 (victim_id, timestamp) 复合索引。实时更新每秒轮询会造成高服务器负载。提示使用 WebSockets 或 Server-Sent Events 做实时数据推送。安全通信未加密的 webhook 会把击键数据暴露给网络监控。提示使用 HTTPS 加证书固定用共享密钥加密 payload。成功标准能同时接收多个 keylogger 的 webhook POST高效存储击键持续每秒 100 次跨所有受害者的搜索 1 秒实时击键流延迟 5 秒单个受害者 10,000 次击键不出现性能退化请求认证防止未授权数据提交。五、Expert 挑战内核级与多通道外渗Challenge 8内核级击键捕获目标编写一个在内核层拦截键盘事件的内核驱动处于 EDR 与杀毒软件视野之下。这需要内核模式编程且仅限 Windows。预估时间有 C/C 经验的开发者 2-3 周纯 Python 开发者更久。前置要求应已完成前面各挑战理解 Windows 内部机制、C 语言与内核调试。这项挑战确实困难且危险——内核 bug 会导致系统崩溃。学习点Windows 内核驱动开发WDM 或 WDF 框架键盘过滤驱动与输入栈使用 WinDbg 的内核模式调试驱动签名要求EDR 如何检测内核模式恶意软件。规划此功能前的思考对现有功能有何影响将完全取代 pynput性能影响如何内核代码必须快bug 会蓝屏如何迁移现有用户需要驱动安装、管理员权限出问题时的回滚方案是什么Windows 测试模式、安全模式恢复高层架构┌──────────────────────────────────────┐ │ User Mode │ │ ┌──────────────────────────────┐ │ │ │ Keylogger Service │ │ │ │ (Receives from driver) │ │ │ └──────────────────────────────┘ │ └──────────────┬───────────────────────┘ │ IOCTL ┌──────────────┴───────────────────────┐ │ Kernel Mode │ │ ┌──────────────────────────────┐ │ │ │ Keyboard Filter Driver │ │ │ │ (Intercepts keystrokes) │ │ │ └──────────────────────────────┘ │ │ ↑ │ │ ┌──────────────────────────────┐ │ │ │ i8042prt (Keyboard Driver) │ │ │ └──────────────────────────────┘ │ └──────────────────────────────────────┘分阶段实施阶段 1基础40-60 小时搭建 Windows Driver Kit (WDK) 开发环境创建基础键盘过滤驱动参考微软 kbfiltr 示例理解内核与用户模式间的 IOCTL 通信实现驱动加载/卸载。阶段 2击键拦截30-40 小时使用过滤驱动挂入键盘驱动栈拦截 IRP_MJ_READ 请求提取扫描码并转换为 VK 码在内核内存非分页池中缓冲击键。阶段 3用户模式通信20-30 小时创建 IOCTL 接口供用户模式读取击键缓冲修改 keylogger.py 从驱动读取而非 pynput优雅处理驱动错误与崩溃驱动失败时自动重启。阶段 4隐蔽与持久化30-40 小时从 EnumDeviceDrivers API 中隐藏驱动挂钩 IRP_MJ_DEVICE_CONTROL 躲避驱动枚举加入 boot-start 驱动实现持久化使用有效证书签名驱动Windows 10 必需。已知挑战代码签名要求Windows 要求驱动必须签名测试签名仅适用于测试模式。提示申请合法签名证书或开发期间使用测试模式。内核调试必不可少内核 bug 直接导致 BSOD蓝屏且没有错误信息。提示用 WinDbg 通过网络或串口建立内核调试。性能关键慢的内核代码会导致系统卡顿、鼠标光标旋转。提示内核中绝不使用阻塞操作使用延迟过程调用DPC。EDR 检测现代 EDR 能瞬间检测键盘过滤驱动。提示研究 rootkit 技术、DKOM直接内核对象操作。成功标准在用户模式看到击键之前完成拦截兼容 Windows 10 与 Windows 11重启后仍存活持久化无可感知的性能影响至少暂时规避基础 EDR 检测卸载驱动时不蓝屏通过 Driver Verifier 压力测试。Challenge 9多协议数据外渗目标支持多种外渗通道HTTP、DNS 隧道、邮件、云存储并自动故障切换。主通道webhook被阻断时依次尝试 DNS、邮件、Dropbox。预估时间1-2 周。前置要求理解网络协议、DNS、SMTP、云存储 API应先完成 webhook 相关挑战。学习点用于数据外渗的 DNS 隧道技术SMTP 邮件自动化与隐蔽性云 API 滥用Dropbox、Google Drive、Pastebin隐蔽信道与隐写术协议感知的防火墙规避。高层架构┌─────────────────────────────────────┐ │ Exfiltration Manager │ │ (Priority-based channel selection) │ └───┬───────┬────────┬─────────┬──────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌────────┐ ┌─────┐ ┌──────┐ ┌──────┐ │Webhook │ │ DNS │ │Email │ │Dropbox│ │Channel │ │Tunnel│ │SMTP │ │ API │ └────────┘ └─────┘ └──────┘ └──────┘分阶段实施阶段 1通道抽象10-15 小时定义ExfiltrationChannel基类方法send(data)、test_connectivity()、get_max_payload_size()实现按优先级维护通道列表的ChannelManager自动故障切换通道失败则标记为 down尝试下一个。阶段 2DNS 隧道15-20 小时将击键数据编码进 DNS 查询base32 或 base64大 payload 拆分到多条 DNS 查询使用 TXT 记录查询外渗data.attacker.com通过自己控制的权威 DNS 服务器接收响应处理速率限制每秒最多 10 次查询以避免可疑。阶段 3邮件外渗10-12 小时将日志作为附件发送的 SMTP 客户端使用一次性 Gmail/Outlook 账户伪装成合法流量主题Daily Backup Report附加前先 gzip 压缩日志节流每小时最多 1 封邮件。阶段 4云存储8-10 小时Dropbox API 集成上传日志到共享文件夹使用合法 API 客户端看起来像 Dropbox 桌面应用轮换上传账户规避检测。阶段 5故障切换逻辑5-8 小时实际外渗前按顺序测试通道测试失败则标记通道 down每 30 分钟重试 down 通道所有通道均失败时维持本地缓冲。已知挑战DNS 隧道检测对单个域名的高频 DNS 查询会引发告警。提示轮换多个域名节流查询。邮件垃圾过滤邮件服务商能检测并封禁自动化邮件。提示随机化发送时间使用真实样式的主题行。API 速率限制云 API 会限制高频上传。提示遵守速率限制批量上传。成功标准支持 4 外渗通道自动故障切换 30 秒DNS 隧道单次查询 payload 1KB邮件外渗能绕过 Gmail 垃圾过滤所有通道在真实网络上测试通过通道临时故障时日志不堆积。六、混合组合Mix and Match将多个挑战组合成更大的项目项目创意 1完整隐蔽型 Keylogger组合 Challenge 4日志加密加入 Challenge 5截图捕获加入 Challenge 6进程注入成果隐藏在受信任进程中的 keylogger通过截图捕获上下文存储加密日志。项目创意 2云后端的企业间谍工具组合 Challenge 7C2 服务器加入 Challenge 9多协议外渗加入 Challenge 2应用过滤以针对特定企业应用成果带云端 C2、多条外渗路径、过滤日志的企业级间谍软件。七、真实世界集成挑战集成 Discord Webhook目标通过 webhook 将击键日志发送到 Discord 频道零服务器搭建即可获得免费实时通知。需要准备Discord 账号Discord 服务器自建一个Webhook URL服务器设置 → 集成 → Webhooks。实施计划修改WebhookDelivery将 payload 格式化为 Discord API 格式Discord 期望{content: text}格式将击键格式化为代码块[2025-01-31] password123增加速率限制处理Discord 限制每秒 5 次请求。注意点Discord webhook 每条消息有 2000 字符限制高击键量可能触达速率限制如果受害者找到文件webhook URL 会暴露。部署到树莓派目标在树莓派上运行 keylogger捕获插入的 USB 键盘输入适用于硬件攻击场景如藏在会议室里的 Pi。学习点USB HID 协议用于设备权限的 Linux udev 规则无头树莓派配置通过 WiFi 的网络外渗。步骤安装 Raspberry Pi OS Lite使用just setup配置 Python 与依赖配置键盘权限/dev/input/event*作为 systemd 服务运行 keylogger通过 WiFi 外渗到远程 C2。生产环境清单开机通过 systemd 自启断网后自动重连 WiFi处理键盘断开/重连网络不可用时本地缓冲日志为电池供电场景最小化功耗。八、性能挑战每秒处理 200 次击键目标优化 keylogger 以承受极端输入速度而不丢键、不卡顿。游戏玩家和速记员可以超过每秒 200 次击键。当前瓶颈高速输入下文件 I/O 与窗口跟踪落后于击键速率。事件排队回调阻塞pynput 丢事件。优化方案方案 1异步文件 I/O方式使用aiofiles库做非阻塞写入收益文件写入不阻塞键盘回调代价复杂度上升需要管理事件循环。方案 2无锁队列方式用queue.Queue替代每次写入都加锁生产者回调入队消费者写入线程出队收益回调 1ms 完成零阻塞代价额外线程队列占用内存。方案 3批量写入方式在内存中缓冲 100 次击键后一次性写入收益文件 I/O 成本分摊到多个事件代价批量写入前崩溃会丢数据。基准测试脚本# 模拟高速输入 python -c from pynput.keyboard import Controller, Key import time keyboard Controller() start time.time() for i in range(1000): keyboard.press(a) keyboard.release(a) print(fSent 1000 keys in {time.time() - start:.2f}s) 目标指标延迟单次击键处理 2ms吞吐持续处理 200 击键/秒内存负载下 RAM 占用 100MB。九、安全挑战反取证与检测规避挑战增加反取证能力要实现的在特定触发器panic 键、USB 拔出、进程终止下删除日志文件。受害者起疑时不留下任何证据。威胁模型保护性作用于三类场景keylogger 被发现后的取证分析针对敏感关键字的磁盘扫描调查人员恢复已删除文件。实现在配置中增加panic_key默认 F10在_on_press中检查 panic 键检测到后调用_secure_delete_logs()用随机数据覆盖文件内容 7 次DoD 5220.22-M 标准删除文件立即退出。安全测试触发 panic 删除使用文件恢复工具PhotoRec、Recuva尝试恢复验证文件无法恢复检查 Windows 的 $MFT 或 Linux 的 journal 中是否残留片段。挑战通过 AMSI 与 ETW 绕过目标规避 Windows 反恶意软件扫描接口AMSI与 Windows 事件跟踪ETW——二者用于检测恶意 PowerShell 与 .NET 代码。威胁模型现代 Windows Defender 通过 AMSI 在脚本执行前扫描ETW 记录可疑 API 调用。绕过两者能显著提升隐蔽性。实现研究 AMSI 绕过技术amsi.dll 补丁、反射实现 ETW 盲区补丁 EtwEventWrite在开启实时保护的 Windows Defender 下测试验证 Sysmon 不会记录 keylogger 执行。对策研究研究当前公开的绕过技术在最新 Windows 版本上的有效性理解其原理后实现自己的变体。十、贡献与进一步挑战回馈项目完成一个挑战后可以回馈社区Fork 仓库在新分支中实现扩展git checkout -b feature/clipboard-monitoring编写文档——加入 learn 目录、更新 README提交 PR包含实现代码、证明其工作的测试、说明功能的文档、示例用法。优秀扩展可能被合并进主项目帮助未来的学习者。举一反三构建新东西运用所学概念构建网络流量分析器——捕获分析网络数据包而非击键进程监视器——跟踪进程创建、终止与行为文件系统监视器——监控文件访问、修改与删除。研究真实实现将你的实现与生产级 keylogger 对比研究 DarkComet RAT 如何将键盘记录与其他恶意功能结合查看 Empire 框架等后渗透框架中的键盘记录模块搜索 GitHub 上的公开 PoC 实现阅读其代码理解其权衡取舍。记录你的扩展将你的扩展写成文档博客文章说明构建了什么、为什么供他人跟随的教程与替代方案的对比安全分析你如何检测自己的恶意软件。教别人是验证自己是否真正理解的最佳方式。十一、卡壳了怎么办求助方法论按顺序排查系统化调试你期望发生什么实际发生了什么能复现问题的最小测试用例是什么你已经尝试过什么阅读现有代码LogManager如何实现类似功能WebhookDelivery的模式能否套用到你的挑战查看 test_keylogger.py 了解组件用法示例。搜索类似问题Stack Overflow 按[python] keylogger [具体问题]检索GitHub 搜索 keylogger 你的技术栈。求助时带上细节说明你尝试了什么、发生了什么、预期是什么提供最小可复现代码片段不要只粘贴错误信息而缺少上下文。十二、挑战完成进度清单Easy Challenge 1: Clipboard MonitoringEasy Challenge 2: Filter Sensitive ApplicationsEasy Challenge 3: Keystroke StatisticsIntermediate Challenge 4: Encrypt Log FilesIntermediate Challenge 5: Screenshot Capture on KeywordsAdvanced Challenge 6: Process InjectionAdvanced Challenge 7: Command and Control ServerExpert Challenge 8: Kernel-Level Keystroke CaptureExpert Challenge 9: Multi-Protocol Exfiltration全部完成后你就掌握了这个项目的精髓。接下来可以构建新东西或把自己的扩展回馈给社区。附源码扩展点速查理解挑战落点的关键是看懂现有代码结构。以下是每个挑战对应的源码改动区域均位于 keylogger.py挑战主要改动位置说明Challenge 1新增ClipboardMonitor类参照WindowTrackerkeylogger.py:155-219复用LogManager写入Challenge 2KeyloggerConfig_on_press配置新增excluded_appskeylogger.py:107-120窗口标题匹配keylogger.py:428Challenge 3新增Statistics类计数钩子在_on_presskeylogger.py:457打印在stop()keylogger.py:516-533Challenge 4LogManager加密改造写入流程keylogger.py:222-296Challenge 5新增ScreenshotCapture类关键字检测参考LogManager文件创建模式keylogger.py:240-246从_on_press调用Challenge 6新增inject.py与Keylogger类解耦另起注入脚本Challenge 7独立 Flask 服务接收WebhookDeliverykeylogger.py:298-371发出的批量 JSONChallenge 8独立内核驱动替换 pynput 监听器keylogger.py:505-506Challenge 9新增ExfiltrationChannel抽象在WebhookDelivery基础上抽象出通道管理器项目的完整学习路线可从 learn/00-OVERVIEW.md 开始配合 learn/02-ARCHITECTURE.md 理解系统设计、learn/03-IMPLEMENTATION.md 掌握代码逐行实现最后再回到本文逐步实践扩展挑战。运行与测试请参考 README.md 与 justfilejust setup安装依赖、just test运行测试、just run启动。赞分享【免费下载链接】Cybersecurity-ProjectsBuilding 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 项目地址https://gitcode.com/gh_mirrors/cy/Cybersecurity-Projects点击查看免费下载相关推荐3分钟掌握Plasmo扩展剪贴板交互从入门到实战3分钟掌握Plasmo扩展剪贴板交互从入门到实战 Plasmo作为一款强大的浏览器扩展框架让开发者能够轻松构建功能丰富的浏览器扩展。本文将带你快速掌握如何前端开发工具CopyTranslator v8.4.0「驺吾」实战指南从监听剪贴板到动作系统自定义CopyTranslator v8.4.0「驺吾」实战指南从监听剪贴板到动作系统自定义 CopyTranslator复译是一款基于复制即翻译理念的外语桌面应用人工智能用 pbpaste 将系统剪贴板内容一键落盘macOS 命令行剪贴板实战指南用 pbpaste 将系统剪贴板内容一键落盘macOS 命令行剪贴板实战指南 macOS 自带的 pbcopy 与 pbpaste 是一对通过命令行读写系统剪文档教程知识库上一篇Lerna info 命令详解一键输出本地环境信息高效提交 bug 报告下一篇Fumadocs OpenAPI 标签层级按 OpenAPI 3.2 Tag 父子关系自动分组生成 API 文档创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑