🎖️ 第十八届全国大学生信息安全作品赛 · 全国二等奖(小组第5名,每组前4为一等奖)
KeyAttacker 是一个先进的声学击键识别系统,能够通过分析键盘击键声音来识别输入的口令。该系统结合了传统信号处理技术与现代深度学习方法,支持多种键盘型号,提供完整的训练、测试和预测管道。

- 🎵 高级音频处理:支持多种音频格式转换,具备智能击键检测与分割
- 🧠 混合机器学习架构:结合随机森林、梯度提升与CNN、LSTM深度学习模型,seq2seq技术
- ⌨️ 多键盘支持:预训练模型覆盖戴尔、惠普、联想、罗技、苹果等主流品牌
- 🔄 实时处理能力:优化的音频处理管道,支持实时分析
- 🌐 Web可视化界面:提供"音落留痕"交互式测试平台
- 📊 全面性能评估:内置多维度评估指标和可视化工具
- 🔧 灵活配置系统:基于JSON的参数配置,支持模型定制
本系统针对以下键盘型号进行了专门优化:
| 品牌分类 | 支持型号 | 模型目录 |
|---|---|---|
| 戴尔系列 | KB216T | dell/, dell_kb216t/ |
| 惠普系列 | EliteBook等 | hp/ |
| 联想系列 | ThinkPad等 | lenovo/ |
| 罗技系列 | K220 | logitech_k220/ |
| 苹果系列 | MacBook Pro/Air | mac/, mac2/, macair/ |
| 机械键盘 | Varmilo | varmilo/ |
| 其他型号 | 通用支持 | 117/, 797/, r9000p/ |
- Python 3.8+
- 音频处理库(自动安装)
- 可选:GPU支持(用于深度学习加速)
# 克隆仓库
git clone https://github.com/Fighting05/KeyAttacker.git
cd KeyAttacker
# 安装依赖
pip install -r requirements.txt
# 启动增强版主程序
python main_enhanced.pypython start_web_interface.py
# 在浏览器中访问 http://localhost:5000
# 体验"音落留痕"可视化测试平台python main_enhanced.py
# 按照菜单提示选择功能:
# 1. 处理音频文件
# 2. 创建匿名测试集
# 3. 训练模型
# 4. 测试模型性能
# 5. 预测单个文件
# 6. 可视化结果python m4a.py split_data.py
# 输入源目录(支持m4a等格式)
# 自动转换为wav并分割训练/测试集系统支持以下数据组织方式:
你的数据目录/
├── train/ # 训练数据
│ ├── 1234567890.wav # 文件名包含对应的数字序列
│ ├── 0987654321.wav
│ └── ...
└── test/ # 测试数据
├── 1111111111.wav
├── 2222222222.wav
└── ...
python main_enhanced.py
# 选择选项3:训练模型
# 可选择自定义模型保存目录
# 系统将训练传统ML和深度学习模型集成编辑 config.json 文件调整参数:
{
"sample_rate": 44100,
"mfcc_coef": 40,
"min_segment_length": 0.05,
"max_segment_length": 0.3,
"models": {
"traditional": {
"use_rf": true,
"use_gb": true,
"ensemble_weight": 0.3
},
"deep_learning": {
"use_cnn": true,
"use_lstm": true,
"ensemble_weight": 0.7,
"epochs": 100
}
}
}python main_enhanced.py
# 选择选项10:测试模型性能
# 输入测试目录路径
# 获得详细的准确率统计KeyAttacker/
├── 🎯 主程序模块
│ ├── main_enhanced.py # 增强版主程序入口
│ ├── config.json # 系统配置文件
│ └── requirements.txt # 依赖库清单
├── 🧠 核心处理模块
│ ├── audio_processing_enhanced.py # 增强音频处理
│ ├── feature_extraction.py # 特征提取算法
│ ├── keystroke_model.py # 机器学习模型
│ ├── keystroke_recognition.py # 识别系统主接口
│ ├── advanced_prediction.py # 高级预测算法
│ ├── config_manager.py # 配置管理
│ └── data_manager.py # 数据管理
├── 🌐 可视化界面
│ ├── start_web_interface.py # Web服务器
│ ├── model_test_interface.html # "音落留痕"主界面
│ └── recorder.html # 音频录制工具
├── 📊 模型与数据
│ ├── models/ # 通用模型存储
│ ├── [keyboard]_models/ # 键盘专用模型
│ ├── train/ # 训练数据集
│ └── test/ # 测试数据集
└── 🔧 工具脚本
├── split_data.py # 数据集分割
├── extract_wav.py # 音频提取
├── evaluate_wav.py # 性能评估
└── m4a.py # 格式转换
- librosa: 音频加载和特征提取
- scipy: 信号处理和滤波
- numpy: 数值计算
- scikit-learn: 传统机器学习算法(随机森林、梯度提升)
- tensorflow: 深度学习框架(CNN、LSTM)
- torch: PyTorch深度学习支持
- MFCC: 梅尔频率倒谱系数
- 频谱特征: 质心、带宽、滚降
- 时域特征: 过零率、RMS能量
- 小波特征: 离散小波变换
音频输入 → 预处理 → 击键检测 → 特征提取 → 模型集成 → 序列校正 → 最终预测
- 音频预处理: 重采样、归一化、带通滤波
- 击键检测: 基于能量阈值的自动分割
- 特征提取: 多域特征计算(40+维度)
- 模型预测: 传统ML + 深度学习集成
- 序列校正: N-gram语言模型优化
- 结果输出: 置信度评估和可视化
- 创建键盘专用目录
mkdir my_keyboard
mkdir my_keyboard_models
mkdir my_keyboard_train
mkdir my_keyboard_test- 组织训练数据
# 将音频文件放入训练目录
# 文件名应包含对应的数字序列
cp *.wav my_keyboard_train/- 训练专用模型
python main_enhanced.py
# 选择训练模型功能
# 指定自定义模型目录: my_keyboard_models# 批量转换音频格式
python m4a.py source_dir/ output_dir/
# 批量评估性能
python evaluate_wav.py test_directory/
# 数据集划分
python split_data.py data_directory/ --ratio 0.8✅ 推荐用途:
- 学术研究和教育
- 音频信号处理技术验证
- 自有设备安全性评估
- 算法性能基准测试
❌ 严禁用于:
- 未经授权的键盘监听
- 侵犯他人隐私
- 任何非法用途
本项目仅供研究和教育目的使用。使用者必须遵守当地法律法规,开发者不承担任何滥用责任。
# 克隆项目
git clone https://github.com/Fighting05/KeyAttacker.git
cd KeyAttacker
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装开发依赖
pip install -r requirements.txt- 🐛 Bug修复: 发现问题请提交Issue
- 💡 新功能: 算法改进和功能扩展
- 📝 文档完善: 使用指南和API文档
- 🎹 键盘支持: 新增键盘型号支持
- 🚀 性能优化: 速度和准确率提升
本项目采用MIT许可证,详见 LICENSE 文件。
MIT License - Copyright (c) 2024 Fighting05
- 🐛 问题反馈: GitHub Issues
- 💬 讨论交流: GitHub Discussions
- 📧 邮件联系: 3051528893@qq.com
```