0×00 关于SIM卡

众所周知SIM卡是一张插在手机上的小卡,其全称为Subscriber Identity Module 客户识别模块。不过,这个世界上并没有多少人知道SIM卡中的操作系统是基于jvm的。该系统简称SCF(Smart Card Filesystem)又称SAT(SIM Application Toolkit)。

那么这个系统能够做什么呢?

允许运营商给你的SIM卡下载固件
加密解密
读取手机数据
获取用户输入
甚至截取你的微信聊天记录

SAT系统中的文件不像Windows或Linux,它的文件名是一串8或16字节的编号,它的文件结构也十分独特,如下图:

SAT中的系统指令

READ 读取
SELECT 修改
DOWN 下载
GET 接收
等等等等....

那么你一定会说:既然是系统就一定会安全问题

确实,根据国外媒体,曾有黑客通过自制发射器录制运营商加密信息后修改,造成巴西大量市民SIM卡属性泄露,之后便再也没有报道

说了那么多,那怎么访问这个系统呢?

0×01 SIMtrace介绍

这块板使用T=0 线+ AT91SAM7 微控.

它主动接收SIM卡与手机间交流的内容并上传到电脑通过电脑程序解密转换成TCP/UDP协议的包,可以通过Wireshark获得可视化内容。

特性:

完全的主动式扫描器
能够检测到RST和ATR
支持PPS / PTS
能够分割APDUs
作为手机与卡的中间人

0×02 使用方法

将SIMtrace如下连接:

安装:

sudo apt-get install libusb-1.0--dev
git clone git://git.osmocom.org/simtrace.git
cd simtrace/host/
make
sudo groupadd osmocom
sudo adduser $USERNAME osmocom
sudo tee /etc/udev/rules.d/-osmocom.rules << EOF
# to use, install this file in /etc/udev/rules.d as -osmocom.rules
# rule to grant read/write access on SIMtrace to group named osmocom.
SUBSYSTEM=="usb", ATTR{idProduct}=="", ATTRS{idVendor}=="16c0", MODE="", GROUP="osmocom"
EOF
sudo service udev reload

运行:

sudo ./simtrace

APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 c0   0f     6f            78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 c0   0f     6f            78APDU: ():  a0 b0    ff 3f ff ff   3f    78APDU: ():  a0 a4    6f ad 9f 0fAPDU: ():  a0 b0      78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 b0              78APDU: ():  a0 a4    6f 7e 9f 0fAPDU: ():  a0 b0   0b ff ff ff ff  f0  ff fe    78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 b0       78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 b0                     78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 b0    ff ff ff ff ff ff ff ff   78APDU: ():  a0 a4    6f  9f 0fAPDU: ():  a0 c0   0f    f0 6f            

使用wireshark

socat -u udp-recv: /dev/null
./simtrace -i 192.168.0.1

接下来,就能看见你的手机和SIM卡是怎么交流的

比如SIM卡告诉手机他能干嘛

有兴趣的朋友可以继续深入研究,如给SIM卡刷入系统等,不过这一领域是毫无资料的

附上simtrace购买地址:

simtrace之探秘SIM卡中的世界的更多相关文章

  1. sim卡中的汉字存储格式

    Sim卡中的ucs2格式 Sim卡中的中文都是以ucs2格式存储的,ucs2和unicode只是字节序不同,unicode是小头在前,ucs2是大头在前. Ucs2与GB2312互换可以用VC中的Wi ...

  2. SIM卡中UCS2编码的三种格式(80,81,82)分析

    网上看到一篇比较好的说ucs2编码的文章,保存一下,原文地址: http://hi.baidu.com/youren4548/blog/item/fa08bd1bf61005058618bf1d.ht ...

  3. android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...

  4. 十九、android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...

  5. Android向手机通讯录中的所有的联系人(包括SIM卡),向手机通讯录中插入联系人

    package com.example.myapi.phonepersion; import java.util.ArrayList; import java.util.List; import an ...

  6. Android 判断SIM卡属于哪个移动运营商

    第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServic ...

  7. Android本机号码及Sim卡状态的获取

    SIM卡存储的数据可分为四类:第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等.第二类是暂时存放的有关 ...

  8. SIM卡应用-OPN,PLMN,SPN

    SIM卡应用 移动运营商已经将SIM卡用於很多不同的应用,下面列出了其中最主要的应 用∶ ·漫游应用∶确保手机可以在漫游之後选择缺省的运营商网络.一个SIM应用是可以在手机漫游到某个合作夥伴运营商网络 ...

  9. SIM卡里的文件

    SIM卡里的所有文件按树来组织:主文件MF(Master File)——每一块SIM卡只有一个唯一的主文件, 其他所有文件都是它的子孙, 主文件只有文件头,里面存放着整个SIM卡的控制和管理信息专用文 ...

随机推荐

  1. Echart 商业级数据图表

    简介 最近工作上用到这个图表库,图表丰富,用起来也很方便.纯javascript,可以流畅得运行在PC和移动设备上,兼容大部分浏览器. 支持折线图(区域图).柱状图(条状图).散点图(气泡图).K线图 ...

  2. CSS3:不可思议的border属性&Web字体图标Font Awesome

     CSS3:不可思议的border属性 转载至——译文:不可思议的CSS border属性 原文:Magic of CSS border property Web字体图标Font Awesome 转载 ...

  3. hdu 4009 Transfer water(最小型树图)

    Transfer water Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)To ...

  4. nyoj 115------城市平乱( dijkstra // bellman )

    城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...

  5. 服务订单SO创建

    FUNCTION Z_SD_SALESORDER_CREATE. *"------------------------------------------------------------ ...

  6. Testin

    http://www.testin.cn/ http://news.ccidnet.com/art/66/20150416/5815927_1.html 百度百科上面的   Testin是全球最大的移 ...

  7. ocument的createDocumentFragment()方法

    在<javascript高级程序设计>一书的6.3.5:创建和操作节点一节中,介绍了几种动态创建html节点的方法,其中有以下几种常见方法: · crateAttribute(name): ...

  8. Spring的web应用启动加载数据字典方法

    在一个基于Spring的web项目中,当我们需要在应用启动时加载数据字典时,可写一个监听实现javax.servlet.ServletContextListener 实现其中的contextIniti ...

  9. javascript密码强度验证!

    //CharMode函数 //测试某个字符是属于哪一类 function CharMode(iN) { if (iN>=48 && iN <=57) //数字 return ...

  10. jQuery实现图片延迟加载

    html: <img src ="占位图路径" data-original="真实图片路径" /> js: $("img").l ...