但都不说最终能干啥,滚屏完了就没了,大牛都太低调了,最近有朋友也在搞这个,了解了一下,以下描述都是我最近查阅的大量鸟文资料及少量中文资料之后的理解,如有误望指出。
相关链接:
http://bb.osmocom.org/trac/wiki/TitleIndex
硬件部分
支持的手机
-
- MotorolaC123/C121/C118 (E88) -- our primary target
- MotorolaC140/C139 (E86)
- MotorolaC155 (E99) -- our secondary target
- MotorolaV171 (E68/E69)
- SonyEricssonJ100i
- Pirelli DP-L10
- Neo 1973 (GTA01)
- OpenMoko - Neo Freerunner (GTA02)
- SciphoneDreamG2 (MT6235 based)
国内比较多的是C118,需要换两个balun,不知道怎么翻译,好像是接收数据过滤用的,不过手艺不好的就算了,不换也可以用,只是没有uplink的数据,只能抓到基站广播的数据。
官方的教程 http://bb.osmocom.org/trac/wiki/Hardware/FilterReplacement
以下贴几个我改的图,有热风枪应该好改一些,反正没有好的工具的话我这辈子是不会再改这个了。
一打开盖子就看到两个大铁壳,傻眼了
这么小真是下不去手啊,有热风枪会好办一点,再来几个改机的图
以下刷的rssi固件,如果没改硬件,uplink信号没有的,图中是downlink,uplink的图没截
刷机线
自己买根T191线或者把带的耳机线改改(下图的红白颜色说的是手机自带的耳机线,别的耳机线可能颜色不同)
下图参考
大家也可以上官网查看手册及相关刷机、编译步骤:
http://bb.osmocom.org/trac/wiki/GettingStarted
不过我按照官网的步骤编译的时候卡在开始下载 交叉编译环境上了,由于时间太久了,文中那个链接已经失效,使用这里的地址:http://bb.osmocom.org/trac/wiki/GnuArmToolchain
下面是完整步骤,我的Ubuntu 12.10 内核3.5.0-17 x86_64编译测试通过,干净的系统按照我下面的步骤一般都不会有什么问题:
-------------------------准备交叉编译环境--------------------------
mkdir osmcombb
cd osmcombb
wget http: // bb.osmocom.org/trac/raw-attachment/wiki/GnuArmToolchain/gnu-arm-build.2.sh
chmod + x gnu - arm - build. 2 .sh
sudo apt - get install build - essential libgmp3 - dev libmpfr - dev libx11 - 6 libx11 - dev texinfo flex bison libncurses5 libncurses5 - dbg libncurses5 - dev libncursesw5 libncursesw5 - dbg libncursesw5 - dev zlibc zlib1g - dev libmpfr4 libmpc - dev
mkdir build install src
cd src /
wget http: // ftp.gnu.org/gnu/gcc/gcc-4.5.2/gcc-4.5.2.tar.bz2
wget http: // ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
wget ftp: // sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz
cd ..
. / gnu - arm - build. 2 .sh
export PATH = $PATH: <YOURPATH >/ install / bin
--------------------------准备libosmocore----------------------
cd libosmocore /
autoreconf - i
. / configure
make
sudo make install
cd ..
sudo ldconfig
---------------------------编译osmocomBB---------------------
我编译了无数遍无数版本,包括master分支,Sylvain/burst_ind分支,sylvain/testing分支,还有另外一个老外存的老版本,需要打patch补丁的版本,最终还是用luca/gsmmap的版本成功,也不能说前面说的几个版本有问题,之前有很多问题,编译器,git等等一团乱麻,可能是我别的地方有出错。
另:Sylvain/burst_ind分支是网上说的比较多的带sniffer功能的分支,但是编译完无法刷固件,需要修改osmocom-bb/src/host/osmocon/osmocon.c,文件中添加定义
ok,我们使用luca/gsmmap分支,
该项目的主要目标是建立GSM网络的地理分布,然后分析 伪造,拦截和跟踪的可能性,会在官网上披露GSM的安全性。
官方提供一个自己的LiveCD,基于Debian,木有xWindow,参加项目的可以傻瓜化的使用并且抓包,用VirtualBOX或者VMware载入,开机后记得把osmocom-bb所用的C1**系列手机和数据线连到虚拟机,然后按照提示输入gsm即可开始。
git clone git: // git.osmocom.org/osmocom-bb.git
cd osmocom - bb
git checkout -- track origin / luca / gsmmap
// git clone git: // git.osmocom.org/osmocom-bb.git
// cd osmocom-bb
// git pull –rebase
如果需要进行实网测试需要打开src/target/firmware/Makefile文件中的编译开关
- #CFLAGS +=- DCONFIG_TX_ENABLE
+ CFLAGS +=- DCONFIG_TX_ENABLE
make
-------------------------运行-------------------------------------------
编译一切OK后,进行刷手机操作,我的C118手机,固件都是在compal_e88目录下的bin文件,会有很多bin文件
其中compalram为我们用来刷手机的,只会写入ram,重启手机就没了,highram是为了加载超过65535的大文件,比如rssi.highram.bin,e88flash和e88loader是用来真实刷入手机固件的,慎用,因为我还想平时打打电话呢。我之前就刷挂了,bootloader还在,还好我买了两个,把另外一个读出来重新写回去了。
layer1和src/host/layer23/src/mobile/mobile程序,实现了从layer1到layer3的功能,我们主要用layer1,rssi是用来测试信号的,不同的信道信号强度等等一些相关信息,需要配合chainload或loader刷入,这几个应用详细说明在这里:http://bb.osmocom.org/trac/wiki/Applications
连上硬件,使用lsusb和dmesg查看端口号,我都是ttyUSB0,c123和c118手机都用c123xor参数,CompalE88(C118/C120/C121/C123),CompalE99(C155)
sudo . / osmocon - p / dev / ttyUSB0 - m c123xor .. / .. / target / firmware / board / compal_e88 / layer1.compalram.bin
然后在手机关机的状态下,点按开机键,不是长按,屏幕就会显示下载刷写固件并执行,如下图就说明成功了
此时手机应该显示layer1的提示
新开一个命令行窗口,进行搜索基站信号,
sudo . / cell_log - O
关于ARFCN号,贴个表供参考
频段 | 名称 | 信道号 | 上行(MHz) | 下行(MHz) | 其他 |
GSM 850 | GSM 850 | 128 - 251 | 824,0 - 849,0 | 869,0 - 894,0 | 美国, 南美洲国家 和 亚洲部分国家。 |
GSM 900 | P-GSM 900 | 1-124 | 890,0 - 915,0 | 935,0 - 960,0 | GSM最先实现的频段,也是使用最广的频段。 |
E-GSM 900 | 975 - 1023 | 880,0 - 890,0 | 925,0 - 935,0 | 900M扩展频段 | |
R-GSM 900 | n/a | 876,0 - 880,0 | 921,0 - 925,0 | 铁路GSM(GSM-R),为铁路调度通信系统开发的特殊版本。 | |
GSM1800 | GSM 1800 | 512 - 885 | 1710,0 - 1785,0 | 1805,0 - 1880,0 | 适用于对信道容量需求大的市场,应用范围仅次于900M。 |
GSM1900 | GSM 1900 | 512 - 810 | 1850,0 - 1910,0 | 1930,0 - 1990,0 | 主要用于美洲国家,由于有频率重叠,与1800M系统不兼容。 |
然后使用ccch_scan进行抓包,-a参数为指定ARFCN号,我们用上图中信号比较强的30
layer23使用src/host/layer23/src/mobile下的mobile程序实现,如果只是抓包数据,下列命令不需要执行
sudo . / mobile - i 127.0 . 0.1
执行了mobile程序之后,本机会开启4247端口,可以使用telnet进行访问,然后配置执行,命令及参数执行方式跟交换机类似
使用wireshark进行抓包分析还是比较方便的
uplink的比较少,不知道是不是因为改机把信号改弱了
有个uplink,估计就在我旁边发的
附:
iphone工程模式:拨号界面 *3001#12345#* 按呼叫键,可查到当前连接的ARFCN号
我的三星三儿子:拨号界面 *#*#4636#*#* ,没有ARFCN,只有cell_id,不用找了,这个手机的android下没有显示arfcn的工具。
thanks to OsmoCarpenteR, a guy in the IRC