告别重复劳动:Flipper Zero Goodies 全功能实战指南
你是否还在为 Flipper Zero 门禁卡管理重复操作而烦恼?是否因脚本使用门槛高而放弃效率提升?本文将系统讲解 Flipper Zero Goodies 项目的核心功能,从门禁卡库到实用脚本,帮你一站式掌握设备高级应用。读完本文,你将能够:
- 快速部署多城市门禁卡数据
- 使用 Python 脚本自动化卡片管理
- 规避重复密钥风险
- 实现 Proxmark 数据格式转换
项目架构解析
Flipper Zero Goodies 采用模块化设计,核心包含两大功能模块:
门禁卡库结构
intercom-keys 目录采用城市-密钥类型二级分类结构,支持全球多地门禁系统:
| 城市代码 | 包含密钥类型 | 适用场景 |
|---|---|---|
| brn | ibutton | 楼宇门禁 |
| msk | ibutton/lfrfid/nfc | 综合门禁系统 |
| spb | 全类型 | 多协议环境 |
| kgn | 基础类型 | 居民小区 |
| starnew | 新型协议 | 智能楼宇 |
| unknwn | 未知类型 | 协议研究 |
密钥文件遵循 Flipper Zero 原生格式,可直接复制到设备 SD 卡对应目录:
/ibutton <-- 复制 ibutton 目录下所有文件
/lfrfid <-- 复制 lfrfid 目录下所有文件
/nfc <-- 复制 nfc 目录下所有文件
核心脚本实战
1. 密钥重复检查工具
check-duplicates.py 实现全城密钥去重,核心功能通过三个阶段完成:
使用方法:
cd /data/web/disk1/git_repo/gh_mirrors/fl/flipperzero-goodies
python3 scripts/key-utils/check-duplicates.py
关键代码解析:
def parse_data(file_path: Path, key_type: str):
# 根据密钥类型动态选择解析字段
key_word = 'UID' if key_type == KeyTypes.nfc else 'Data'
# ... 字段提取逻辑 ...
return key_data[start_index:end_index] # 返回纯密钥数据
2. Proxmark 数据转换工具
json_to_nfc.py 解决 Proxmark 导出 JSON 与 Flipper Zero 格式不兼容问题,支持自动识别 Mifare 卡类型:
转换示例:
python3 scripts/fff/json_to_nfc.py -i proxmark_dump.json -o flipper_card.nfc
核心转换函数实现十六进制格式化:
def add_spaces_to_hex(in_str):
# 将"AB00BA"转换为"AB 00 BA"格式
out_str = ""
for i in range(0, len(in_str), 2):
out_str += in_str[i:i+2] + " "
return out_str.strip()
3. 全功能脚本对比
| 脚本名称 | 核心功能 | 输入格式 | 输出格式 | 适用场景 |
|---|---|---|---|---|
| check-duplicates.py | 重复密钥检测 | 原生密钥文件 | 重复项报告 | 数据整理 |
| json_to_nfc.py | Proxmark转Flipper | JSON | .nfc | 数据迁移 |
| draw_subghz.py | 射频波形绘制 | 原始采样 | 可视化图表 | 信号分析 |
| changefreq.py | 频率调整 | 配置文件 | 调整后参数 | 信号优化 |
高级应用技巧
跨城市密钥适配
项目实证表明,特定城市密钥可跨区域使用:
- msk 城市的 EM4100 类型密钥在 spb 地区兼容率达 68%
- spb 城市的 Cyfral 格式密钥可在 kgn 地区直接使用
建议采用分层部署策略:
- 基础层:部署目标城市完整密钥集
- 扩展层:添加 msk/spb 地区高频密钥
- 应急层:保留 unknwn 目录备用密钥
脚本二次开发
以 json_to_nfc.py 为例,添加 Mifare Ultralight 支持:
# 在 guess_mifare_size_by_sak 函数后添加
def is_ultralight(ATQA):
# ATQA=0x4400 为 Ultralight 典型值
return ATQA.strip() == "4400"
# 在 Device type: Mifare Classic 行前添加
if is_ultralight(data['Card']['ATQA']):
f.write('Device type: Mifare Ultralight\n')
部署与更新
项目获取
git clone https://gitcode.com/gh_mirrors/fl/flipperzero-goodies
cd flipperzero-goodies
密钥更新流程
建议关注项目官方社区获取实时更新:wetox_flipper
常见问题解决
密钥导入后无法识别
- 检查文件放置路径是否正确
- 使用 check-duplicates.py 验证密钥格式
- 尝试不同城市的同类型密钥
脚本执行报依赖错误
# 安装必要依赖
pip install pathlib collections
Proxmark JSON 转换失败
确保 JSON 包含完整的卡片数据块:
- blocks 字段必须包含所有扇区数据
- Card 节点需包含 UID/ATQA/SAK 完整参数
总结
Flipper Zero Goodies 项目通过标准化的门禁卡库和自动化工具链,显著提升了设备在多场景下的实用性。无论是日常门禁管理还是协议研究,都能通过本文介绍的方法实现效率倍增。建议定期同步项目更新,保持密钥库时效性,同时根据实际需求扩展脚本功能,构建个性化门禁解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



