当前位置: 首页 > article >正文

别再只会插卡开机了!手把手带你用APDU命令探索手机SIM卡里的文件迷宫

解码SIM卡文件系统用APDU命令探索移动通信的微观世界当你把SIM卡插入手机时它就像一把打开移动网络大门的钥匙。但鲜为人知的是这张小小的芯片内部运行着一个完整的文件系统其复杂程度堪比微型操作系统。本文将带你用APDU命令直接与SIM卡对话揭开这个隐藏世界的面纱。1. 准备工作搭建你的SIM卡实验室要开始这次探索之旅你需要准备以下工具智能卡读卡器推荐使用ACR122U或PC/SC兼容设备开发环境Python pyscard库或Java javax.smartcardio测试用SIM卡建议使用预付费卡或开发测试卡安装Python环境后用以下命令安装必要依赖pip install pyscard连接读卡器后可以通过这段代码检测卡片from smartcard.System import readers r readers() print(可用读卡器:, r)注意操作商用SIM卡可能违反运营商条款建议使用专门测试卡2. SIM卡文件系统架构解析SIM卡采用分层文件系统结构主要包含三类关键元素文件类型标识符范围典型示例访问方式主文件(MF)3F00根目录自动选择专用文件(DF)7FXXDFTELECOM(7F10)SELECT by FID基本文件(EF)6FXX/4FXXEFICCID(2FE2)READ BINARY重要系统文件分布EF_DIR(2F00)应用目录索引EF_ICCID(2FE2)卡唯一标识EF_PL(2F05)首选语言设置3. APDU命令实战从基础查询到数据提取3.1 选择主文件每个会话都从选择MF开始这是进入文件系统的起点SELECT_MF [0x00, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00] response, sw1, sw2 connection.transmit(SELECT_MF) print(f状态码: {sw1:02X}{sw2:02X})典型响应分析90 00成功6A 82文件未找到6A 86参数错误3.2 遍历应用目录读取EF_DIR获取所有应用列表SELECT_EF_DIR [0x00, 0xA4, 0x00, 0x00, 0x02, 0x2F, 0x00] READ_EF_DIR [0x00, 0xB0, 0x00, 0x00, 0x0F]响应数据采用TLV格式解析示例Tag 61 - Application Template - Tag 4F - AID (USIM应用通常以A000000087开头) - Tag 50 - 应用标签(可读名称)3.3 读取关键文件实战获取ICCIDSELECT_EF_ICCID [0x00, 0xA4, 0x00, 0x00, 0x02, 0x2F, 0xE2] READ_ICCID [0x00, 0xB0, 0x00, 0x00, 0x0A]ICCID采用BCD编码需要转换iccid_hex .join([f{x:02X} for x in response_data]) iccid .join([iccid_hex[i] for i in range(0, len(iccid_hex)) if i%2 ! 0])4. 高级技巧处理复杂文件结构4.1 线性定长记录文件如EF_SMS(6F3C)采用线性定长结构读取方法SELECT_EF_SMS [0x00, 0xA4, 0x00, 0x00, 0x02, 0x6F, 0x3C] READ_RECORD_1 [0x00, 0xB2, 0x01, 0x04, 0x00] # 读取第1条记录关键参数P1记录号(01~FE)P204表示简单读取模式4.2 循环文件处理如EF_LOCI(6F7E)存储位置信息采用循环更新机制SELECT_EF_LOCI [0x00, 0xA4, 0x00, 0x00, 0x02, 0x6F, 0x7E] READ_LAST_RECORD [0x00, 0xB2, 0x00, 0x02, 0x00] # 读取最新记录5. 安全机制与错误处理5.1 常见错误代码解析状态码含义可能原因6982安全条件不满足未通过PIN验证6A81功能不支持卡片类型不符6A86参数错误P1/P2设置无效6A88引用数据未找到错误文件ID5.2 PIN验证流程VERIFY_PIN [0x00, 0x20, 0x00, 0x01, 0x08] list(b1234) [0x08]重要连续三次错误将导致卡片锁定6. 实战案例构建SIM卡信息提取工具完整工作流程示例def get_sim_info(connection): # 选择MF transmit(connection, SELECT_MF) # 读取ICCID iccid read_ef(connection, 0x2FE2, 10) # 读取运营商信息 select_df_telecom(connection) imsi read_ef(connection, 0x6F07, 9) return { ICCID: decode_bcd(iccid), IMSI: decode_bcd(imsi[1:]) # 跳过首字节长度 }在最近一次物联网设备调试中我发现某运营商SIM卡的EF_IMSI实际存储在DF_GSM(7F20)而非标准的DF_TELECOM下。这种特殊情况提醒我们实际开发中需要灵活应对不同厂商的实现差异。

相关文章:

别再只会插卡开机了!手把手带你用APDU命令探索手机SIM卡里的文件迷宫

解码SIM卡文件系统:用APDU命令探索移动通信的微观世界 当你把SIM卡插入手机时,它就像一把打开移动网络大门的钥匙。但鲜为人知的是,这张小小的芯片内部运行着一个完整的文件系统,其复杂程度堪比微型操作系统。本文将带你用APDU命令…...

0502光刻机破局 第五卷:EUV光源系统(S级 长期死磕突破)第2小节:国内外技术参数差距

第五卷:EUV光源系统(S级 长期死磕突破) 第2小节:国内外技术参数差距(全量化对标,ASML vs 国产,死磕数据) 前置硬核声明 本节100%量化、100%对标、100%无修饰,直接把 ASML…...

AI Agent设计模式:从ReAct到Plan-and-Execute

Agent 设计模式:ReAct 与 Plan-Execute 讲透Function Calling 让 Agent 会用工具,但真正让 Agent「聪明」的,是它的思考模式。这就像给你一本字典不意味着你会写文章——你需要方法论。ReAct 和 Plan-Execute 就是 Agent 的两种核心方法论。一…...

OpenClaw 上下文瘦身:3 个实验

这篇不是讲“提示词怎么写得更优雅”。我只看一个更硬的问题:Agent 跑久以后,上下文到底是怎么胖起来的,哪一刀最值得先砍。实验脚本和结果都放在本地目录里,可以复跑。你大概见过这种故障: Agent 前 10 分钟很听话&am…...

避坑指南:解决RK3588编译ZLMediaKit时OpenSSL等依赖库路径找不到的问题

RK3588交叉编译ZLMediaKit实战:系统性解决OpenSSL依赖路径问题 第一次在RK3588开发板上尝试编译ZLMediaKit时,我遇到了一个看似简单却令人抓狂的问题——CMake死活找不到OpenSSL库。屏幕上不断跳出的Could NOT find OpenSSL错误提示,让我意识…...

前端开发自救指南:不用写测试代码,5分钟用Playwright录制生成E2E测试脚本

前端开发自救指南:5分钟零代码生成E2E测试脚本的Playwright实战 最近在重构公司后台管理系统时,我遇到了一个典型的前端开发困境:每次修改表单验证逻辑后,都需要手动点击十几个字段组合来验证是否会影响其他功能。直到团队里的测…...

华为擎云L420变身MCU开发主力机:VSCode + Cortex-Debug + 自编译工具链玩转雅特力AT32

华为擎云L420打造高效MCU开发环境:VSCodeCortex-Debug全流程实战 在嵌入式开发领域,效率工具的选择往往能决定项目的成败。当国产化浪潮席卷技术圈,越来越多的开发者开始尝试在纯国产硬件上构建完整的工作流。华为擎云L420作为一款基于ARM架构…...

如何高效使用AutoHotkey编译器:Ahk2Exe完整指南与实战技巧

如何高效使用AutoHotkey编译器:Ahk2Exe完整指南与实战技巧 【免费下载链接】Ahk2Exe Official AutoHotkey script compiler - written itself in AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/ah/Ahk2Exe 对于Windows自动化脚本开发者而言&#xff…...

ESPHome安装后,你的第一个智能设备可以不是开关或灯

ESPHome创意实践:从温控风扇到植物管家,解锁智能设备的无限可能 当你完成ESPHome的基础安装后,脑海中浮现的第一个项目是什么?大多数人会想到开关或灯泡——这些确实是智能家居的经典起点。但ESP8266/ESP32开发板的潜力远不止于此…...

AMP插件开发者工具完全指南:如何快速诊断和修复AMP验证问题

AMP插件开发者工具完全指南:如何快速诊断和修复AMP验证问题 【免费下载链接】amp-wp Enable AMP on your WordPress site, the WordPress way. 项目地址: https://gitcode.com/gh_mirrors/am/amp-wp 你是否正在为WordPress网站的AMP验证问题而烦恼&#xff1…...

AI Agent的推理能力边界:大模型之外的关键技术突破

AI Agent的推理能力边界:大模型之外的关键技术突破 关键词:AI Agent、推理能力边界、工具增强推理、神经符号推理、自主规划、多Agent协同、幻觉抑制 摘要:本文针对当前行业普遍存在的「大模型参数堆得越高,AI Agent推理能力就越强」的认知误区,系统拆解了大模型原生推理能…...

51c自动驾驶~合集57

我自己的原文哦~ https://blog.51cto.com/whaosoft/13960249 #端到端自动驾驶算法实现原理 1从传感器数据到控制策略的端到端方法 端到端自动驾驶基本流程: (1)子任务模型被更大规模的神经网络模型取代,最终即为端到端神经网络模型; (2)…...

长期使用Taotoken聚合API在服务稳定性方面的体验分享

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken聚合API在服务稳定性方面的体验分享 作为一家长期依赖大模型能力进行产品开发的团队,我们在过去数月里…...

PTA天梯赛L2-007家庭房产题解:用C++并查集+结构体搞定复杂家庭关系统计(附完整代码)

PTA天梯赛L2-007家庭房产题解:C并查集与结构体的高效应用 在算法竞赛中,处理复杂关系网络是常见挑战。PTA天梯赛L2-007"家庭房产"题目正是这类问题的典型代表,要求选手统计每个家庭的人口、房产套数和人均面积。这道题看似简单&am…...

深入理解LZFSE核心技术:Lempel-Ziv与FSE编码的完美结合

深入理解LZFSE核心技术:Lempel-Ziv与FSE编码的完美结合 【免费下载链接】lzfse LZFSE compression library and command line tool 项目地址: https://gitcode.com/gh_mirrors/lz/lzfse LZFSE(Lempel-Ziv Finite State Entropy)是苹果…...

别再手动改文献了!手把手教你定制Mendeley的GB/T 7714-2005引用格式(附常见问题修复)

深度定制Mendeley文献引用格式:GB/T 7714-2005实战指南 科研写作中,文献引用格式的规范性直接影响论文的专业程度。许多研究者在使用Mendeley内置的GB/T 7714-2005格式时,常遇到作者名全大写、et al.显示异常等问题。本文将提供一套完整的解…...

WordPress Playground部署实战:从开发到生产的完整流程指南

WordPress Playground部署实战:从开发到生产的完整流程指南 【免费下载链接】wordpress-playground Run WordPress in the browser via WebAssembly PHP 项目地址: https://gitcode.com/gh_mirrors/wo/wordpress-playground WordPress Playground 是一个革命…...

抖音视频收藏革命:从水印困扰到纯净收藏的完美蜕变

抖音视频收藏革命:从水印困扰到纯净收藏的完美蜕变 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 你是否曾经在抖…...

CLI-Anything与MCP服务器:打造强大后端的实战教程

CLI-Anything与MCP服务器:打造强大后端的实战教程 【免费下载链接】CLI-Anything "CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/ 项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything CLI-A…...

Few-shot vid2vid自定义数据集训练指南:从标签图到真实视频的转换

Few-shot vid2vid自定义数据集训练指南:从标签图到真实视频的转换 【免费下载链接】few-shot-vid2vid Pytorch implementation for few-shot photorealistic video-to-video translation. 项目地址: https://gitcode.com/gh_mirrors/fe/few-shot-vid2vid Few…...

Jupyter Notebook 云GPU配置全解析(含实操+选型指南)

一、前言:为什么需要Jupyter Notebook云GPU配置?Jupyter Notebook作为交互式编程工具,广泛应用于AI训练、数据建模、算法调试等场景,其“代码文本”一体化特性,大幅提升开发效率。但本地环境存在明显局限:普…...

国产多模态大模型:产业协同全景与实战指南

国产多模态大模型:产业协同全景与实战指南 引言 在人工智能浪潮席卷全球的背景下,国产多模态大模型正从技术探索迈向广泛的产业协同应用。与只能处理文本或图像的单一模态模型相比,多模态大模型能同时理解、关联和生成文本、图像、音频、视频…...

智慧树自动刷课插件终极指南:如何3分钟实现免手动学习

智慧树自动刷课插件终极指南:如何3分钟实现免手动学习 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的重复性操作而烦恼吗?智…...

vscode-mssql架构设计器:无代码可视化建模数据库架构的终极工具

vscode-mssql架构设计器:无代码可视化建模数据库架构的终极工具 【免费下载链接】vscode-mssql Visual Studio Code SQL Server extension. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-mssql vscode-mssql是Visual Studio Code的SQL Server扩展&am…...

如何在 5 分钟内集成 human-panic:为你的 Rust CLI 应用添加专业级错误处理

如何在 5 分钟内集成 human-panic:为你的 Rust CLI 应用添加专业级错误处理 【免费下载链接】human-panic Panic messages for humans. 项目地址: https://gitcode.com/gh_mirrors/hu/human-panic human-panic 是一个专为 Rust CLI 应用设计的错误处理库&…...

掌握视频时间:如何用3个步骤将视频学习效率提升300%

掌握视频时间:如何用3个步骤将视频学习效率提升300% 【免费下载链接】videospeed HTML5 video speed controller (for Google Chrome) 项目地址: https://gitcode.com/gh_mirrors/vi/videospeed 你是否曾经在观看在线课程时感到节奏太慢?是否在回…...

JetBrains IDE试用期重置终极指南:三步实现无限开发体验

JetBrains IDE试用期重置终极指南:三步实现无限开发体验 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?ide-eval-resetter是你的理想解决方案&…...

语义搜索失效?NotebookLM这4类文档结构陷阱正悄悄拖垮你的研究效率,立即排查!

更多请点击: https://intelliparadigm.com 第一章:语义搜索失效?NotebookLM这4类文档结构陷阱正悄悄拖垮你的研究效率,立即排查! NotebookLM 的语义搜索能力依赖于底层文档的语义连贯性与结构清晰度。当文档存在隐性结…...

高效AI专著生成:20万字专著一键搞定,AI写专著工具实测推荐!

学术专著写作挑战与AI工具助力 对于初次尝试编写学术专著的研究者来说,写作过程就像是在“摸索着走过一条未知的小路”,处处都有挑战等待着他们。在选题上常常感到迷惘,难以在“有意义”与“可操作性”之间找到合适的平衡:有的研…...

终极 Node.js 路径管理神器:module-alias 完全指南

终极 Node.js 路径管理神器:module-alias 完全指南 【免费下载链接】module-alias Register aliases of directories and custom module paths in Node 项目地址: https://gitcode.com/gh_mirrors/mo/module-alias 你是否厌倦了在 Node.js 项目中看到像 requ…...