Skip to content

KeyAttacker-按键敲击识别攻击,简单来说可以识别键盘敲击按键。是结合侧信道声学识别模型以及基于Seq2Seq的口令猜测模型搭建的键盘按键识别-《音落留痕-基于⼝令猜测模型的键盘声学安全检测系统》,第十八届全国大学生信息安全作品赛-全国二等奖,小组第五(前四为一等)

License

Notifications You must be signed in to change notification settings

Fighting05/KeyAttacker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zread Ask DeepWiki

🎖️ 第十八届全国大学生信息安全作品赛 · 全国二等奖(小组第5名,每组前4为一等奖) Award

🎹 KeyAttacker

基于高级音频分析的声学击键识别系统

Python 许可证: MIT GitHub Issues GitHub Stars

🚀 快速开始📖 使用指南🔬 项目架构🤝 贡献指南📄 开源许可


🎯 项目概述

KeyAttacker 是一个先进的声学击键识别系统,能够通过分析键盘击键声音来识别输入的口令。该系统结合了传统信号处理技术与现代深度学习方法,支持多种键盘型号,提供完整的训练、测试和预测管道。 image

✨ 核心特性

  • 🎵 高级音频处理:支持多种音频格式转换,具备智能击键检测与分割
  • 🧠 混合机器学习架构:结合随机森林、梯度提升与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/
image

🚀 快速开始

环境要求

  • Python 3.8+
  • 音频处理库(自动安装)
  • 可选:GPU支持(用于深度学习加速)

安装步骤

# 克隆仓库
git clone https://github.com/Fighting05/KeyAttacker.git
cd KeyAttacker

# 安装依赖
pip install -r requirements.txt

# 启动增强版主程序
python main_enhanced.py

快速体验

🎮 启动Web界面(推荐)

python start_web_interface.py
# 在浏览器中访问 http://localhost:5000
# 体验"音落留痕"可视化测试平台

💻 命令行使用(最好了解一下代码结构再使用)

python main_enhanced.py
# 按照菜单提示选择功能:
# 1. 处理音频文件
# 2. 创建匿名测试集  
# 3. 训练模型
# 4. 测试模型性能
# 5. 预测单个文件
# 6. 可视化结果

📖 使用指南

数据准备流程

1️⃣ 音频格式转换

python m4a.py split_data.py
# 输入源目录(支持m4a等格式)
# 自动转换为wav并分割训练/测试集

2️⃣ 数据集组织

系统支持以下数据组织方式:

你的数据目录/
├── 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:测试模型性能
# 输入测试目录路径
# 获得详细的准确率统计

result.txt就是一个样例输出结果。

🔬 项目架构

核心模块结构

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能量
  • 小波特征: 离散小波变换

算法流程

音频输入 → 预处理 → 击键检测 → 特征提取 → 模型集成 → 序列校正 → 最终预测
  1. 音频预处理: 重采样、归一化、带通滤波
  2. 击键检测: 基于能量阈值的自动分割
  3. 特征提取: 多域特征计算(40+维度)
  4. 模型预测: 传统ML + 深度学习集成
  5. 序列校正: N-gram语言模型优化
  6. 结果输出: 置信度评估和可视化

自定义键盘支持

  1. 创建键盘专用目录
mkdir my_keyboard
mkdir my_keyboard_models
mkdir my_keyboard_train  
mkdir my_keyboard_test
  1. 组织训练数据
# 将音频文件放入训练目录
# 文件名应包含对应的数字序列
cp *.wav my_keyboard_train/
  1. 训练专用模型
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

📞 支持与联系


⭐ 如果这个项目对你有帮助,请给我一个星标!⭐

🔝 回到顶部


声明:本项目仅用于研究和教育目的,请合法合规使用

```

About

KeyAttacker-按键敲击识别攻击,简单来说可以识别键盘敲击按键。是结合侧信道声学识别模型以及基于Seq2Seq的口令猜测模型搭建的键盘按键识别-《音落留痕-基于⼝令猜测模型的键盘声学安全检测系统》,第十八届全国大学生信息安全作品赛-全国二等奖,小组第五(前四为一等)

Resources

License

Stars

Watchers

Forks

Packages

No packages published