設備清單:
-
摩托羅拉 C118 (25塊)
-
FT232RL USB TO TTL (30元)
-
摩托羅拉 Motorola C118專用數據連接線 (10塊)
-
MiniUSB 鏈接線(10元,這個大家手里應該都有)
如下圖:
淘寶購買地址就放在文章結尾吧.
外圍設備是上面那些,現在還需要一台PC以及裝有Linux操作系統的虛擬機,當然PC上面直接裝的linux更好
還有一個主角:OsmocomBB
這里稍微介紹下OsmocomBB,OsmocomBB是GSM協議棧(Protocols stack)的開源實現,全稱是Open source mobile communication Baseband.
目的是要實現手機端從物理層(layer1)到layer3的三層實現。
但是目前來看,真正的物理層(physical layer)並沒有真正的開源實現,暫時也沒看到實施計划。只有物理層控制。
因為真正的物理層是運行在baseband processor的DSP core上,涉及到許多信號處理算法的實現,而且還要牽扯很多硬件RF的東西。
額好吧,上面這段OsmocomBB介紹文字來自百度~~
我自己的實驗環境為:
os x 10.9 + VirtualBox + Ubuntu 12.04 (32位)
操作系統各個平台都無所謂,我想大多數都用虛擬機來測的,所以建議使用Ubuntu 12.04 至少按照我這里介紹的做下來應該不會出錯。
虛擬機里面如何安裝Ubuntu 12.04我這里幾不操作了,網上教程一大堆。
首先我們安裝交叉編譯環境:
1. 用戶目錄下建立source/arm
2. 進入arm目錄再創建三個目錄 build、 install 、src
3. 進入src目錄分別下載這三個文件包:
http://ftp.gnu.org/gnu/gcc/gcc-4.5.2/gcc-4.5.2.tar.bz2
http://ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz
4. 下載 gnu-arm-build.2.sh 文件到arm目錄 http://bb.osmocom.org/trac/raw-attachment/wiki/GnuArmToolchain/gnu-arm-build.2.sh
目錄結構如圖所示:
編譯前需要安裝相應的庫文件執行如下命令:
1 |
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 |
安裝完
在arm根目錄執行如下命令:
1 |
chmod +x gnu-arm-build.2.sh ./ gnu-arm-build.2.sh |
解釋下這兩條命令的意思,chmod +x 是給與 gnu-arm-build.2.sh 可執行權限 , ./ gnu-arm-build.2.sh 是執行它
執行 gnu-arm-build.2.sh后會提示你是否繼續,ctrl+c 則取消,直接回車。如下圖所示:
完成后會看到arm/install目錄結構如圖所示:
我們需要將 arm/install/bin目錄加入環境變量中,注意這里最好直接填寫絕對路徑
獲取絕對路徑命令,在arm/install/bin目錄下執行pwd命令。如下圖
加入環境變量的方法用vi打開 ~/.bashrc 在最后一樣加入 export PATH=$PATH:/home/creturn/source/arm/install/bin
注意$PATH:冒號后面接的是你自己的絕對路徑,有的同學不會用vi的話我就把具體命令寫出來
1 |
cd 回車 #切換到主目錄 vi ./.bashrc #打開文件 shift+g #按shift和g 跳轉到最后一樣 o #輸入小寫字母o換行並進入插入模式,然后把上面需要加入的代碼加入進去 esc # 按esc鍵進入命令模式 :wq #按冒號然后輸入回車編輯完成 |
為照顧linux新手對寫點東西,汗~~
重新打開終端或者直接執行source ~/.bashrc 讓環境變量生效
在終端中輸入arm然后按tab鍵,如果出現 arm-開頭的如下圖所示就說明編譯環境搞定了:
好了累了半死才把編譯環境搞定,接下來下載 OsmocomBB 源碼
在source目錄下執行下面兩條命令:
1 |
git clone git://git.osmocom.org/osmocom-bb.git git clone git://git.osmocom.org/libosmocore.git |
先編譯osmocom核心庫文件,進入libosmocore 執行如下命令:
1 |
autoreconf -i ./configure make sudo make install |
然后進入osmocom/src下目錄
git checkout –track origin/luca/gsmmap 切換到這個分支
執行make命令
如果不出意外你所需軟件環境和固件都編譯好了。Ubuntu12.04 默認能夠識別FT232R所以不用裝驅動。
接下來鏈接硬件, FT232RL USB TO TTL 和 摩托的數據線鏈接注意上面對應的標識接入GND、RX、TX 所以不用擔心接錯,我也第一次摸板子。
鏈接完成后需要注意,如果鏈接正常下載板上面的藍色的燈和紅色的燈都要亮,不然肯定是接觸不良,
我之前由於接觸不良導致固件寫入一半就會停止,或者包其他錯誤。所以這里需要特別注意。
插入硬件后在虛擬機菜單中把接入下載板子的usb接口分配給虛擬機如圖:
在終端中輸入lsusb 如果驅動正常就能看到usb-serial
看下分配前和分配后的區別如下圖:
接下來我們寫入固件到手機中,這里需要說明的一點,很多人說是刷入固件,導致很多人誤認為是刷機,其實只是把
固件加載到手機raw中執行而已,所以也不要擔心輸入固件后手機就不能用了。
切換到 osmocom-bb/src/host/osmocon/目錄 執行如下命令:
1 |
/osmocon -m c123 -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin |
這里同樣需要說明下有的 -m 后面接的是 c123xor 區別是是否檢測數據總和
注意上面命令需要在關機下執行,然后短按開機鍵,注意不要長按不然就開機了
如果不出意外就能看到如下圖:
這里需要提醒下,由於買的手機都是二手的,所以接口處有可能會有松動,所以如果看到數據寫入被取消就多試幾次
調整下接口看看是否有松動,我機會每次都要試4-5次才能正常寫入固件,看到staring up 基本就成功了,同事可以看到
手機上面也顯示了 Layer 1 osmocom-bb 字樣
1 |
接下來在 /osmocom-bb/src/host/layer23/src/misc/ 目錄執行 ./cell_log |
輸出日志信息,在里面可以看到基站信息
找到類似信息
cell_log.c:248 Cell: ARFCN=117 PWR=-62dB MCC=460 MNC=01
如下圖:
記住ARFCN后面的編號
然后在同樣目錄下輸入下面命令把數據流導入本地4729端口
1 |
./ccch_scan -i 127.0.0.1 -a 117 # 注意這里的117就是上面的ARFCN后面的編號 |
如下圖:
接下來用wireshark 抓包,輸入如下命令:
1 |
sudo wireshark -k -i lo -f 'port 4729' |
然后在wireshark里面過濾gsm_sms協議數據,里面就包含了短信數據