很多IoT設備都在使用4G網卡,但測4G鏈路安全時候,畢竟不像WIFI測試那麼方便,CMW500的價格還是很貴的,尤其是想IoT安全愛好者童鞋,或者其他移動端需要測試4G鏈路的,其實可以使用低成本SDR方案,也就是這裡要介紹的。
最低成本可以使用LimeSDR Mini+PC機,也可以使用BladeRF x40或者x115來實現。如果條件允許,還是使用USRP B200mini、B210或者N210甚至X310比較舒服。
srsLTE 是軟體無線電系統(SRS)的開源SDR LTE軟體套件。是由愛爾蘭SoftwareRadioSystems (SRS)公司開發實現的免費開源LTE SDR平臺,在AGPLv3 license許可下發布,並且在實現中使用了OpenLTE的相關功能。有關文檔,指南和項目新聞,請參見srsLTE項目頁面(www.srslte.com)
srsLTE包括以下組件:
srsUE - 完整的 SDR LTE UE 應用,支持從 PHY 到 IP 層特性
srsENB - 完整的 SDR LTE eNodeB 應用
srsEPC - 輕量級 LTE 核心網絡實現,支持 MME, HSS 和 S/P-GW
高度模塊化的共用庫 PHY, MAC, RLC, PDCP, RRC, NAS, S1AP 和 GW層
通用特性:
支持 LTE Release 10
測試頻率: 1.4, 3, 5, 10, 15 and 20 MHz
傳輸模式1(單天線),2(發射分集),3(CCD)和4(閉環空間復用)
基於頻率的ZF和MMSE均衡器
演進的多媒體廣播和多播服務(eMBMS)
高度優化的Turbo解碼器,採用Intel SSE4.1 / AVX2(+100 Mbps)和標準C(+25 Mbps)
支持 MAC, RLC, PDCP, RRC, NAS, S1AP 和 GW 層
具有每層日誌級別和十六進位轉儲的詳細日誌系統
MAC層wireshark數據包捕獲
命令行跟蹤指標
詳細的輸入配置文件
用於EPA,EVA和ETU 3GPP頻道的信道模擬器
基於ZeroMQ的偽RF驅動器,用於IPC/網絡上的 I/Q
srsUE 特性:
FDD 和 TDD 配置
運營商聚合支持
UE的小區搜索和同步過程
軟USIM支持Milenage和XOR身份驗證
使用PCSC框架的硬USIM支持
在網絡連接時創建的虛擬網絡接口tun_srsue
QoS 支持
i7四核CPU中20 MHz MIMO TM3 / TM4配置中的150 Mbps DL。
i7四核CPU中20 MHz SISO配置中的75 Mbps DL。
i5雙核CPU中10 MHz SISO配置中的36 Mbps DL。
srsUE 在如下網絡設備中測試和驗證通過:
Amarisoft LTE100 eNodeB 和 EPC
諾基亞FlexiRadio系列FSMF系統模塊具有1800MHz FHED無線電模塊和TravelHawk EPC模擬器
Huawei DBS3900
Octasic Flexicell LTE-FDD NIB
srsENB 特性:
FDD 配置
循環MAC調度程序,具有類似FAPI的C ++ API
SR 支持
定期和非周期性CQI反饋支持
標準S1AP和GTP-U與核心網絡接口
具有商用UE的20MHz MIMO TM3 / TM4中的150Mbps DL
具有商用UE的SISO配置中的75 Mbps DL
20 MHz的50 Mbps UL,商用US
用戶平面加密
srsENB已通過以下手機進行測試和驗證:
LG Nexus 5 and 4
Motorola Moto G4 plus and G5
Huawei P9/P9lite, P10/P10lite, P20/P20lite
Huawei dongles: E3276 and E398
srsEPC 特性:
單個二進位、輕量級LTE EPC實現,具有:
MME(移動性管理實體)具有到eNB的標準S1AP和GTP-U接口
標準SGi的S/P-GW暴露為虛擬網絡接口(TUN設備)
HSS(歸屬訂戶伺服器),具有CSV格式的可配置用戶資料庫
支持分頁
硬體支持:
支持如下硬體:
USRP B200
USRP B210
USRP B200mini
USRP B205mini
USRP N210
USRP X310
limeSDR
bladeRF
Github網址:https://github.com/srsLTE/srsLTE
安裝部署srsLTE建議用物理機,因為一些指令優化、時序要求非常精準,比如雙向驗證鑑權的時候,差一點都不行,如果不使用USRP N210或者X310一類通過網絡的SDR硬體穩定性,而使用USB接口的話虛擬機穩定性略差。
這裡使用Ubuntu 16.04搭配USRP B210進行測試,使用root帳戶直接安裝配置。
先安裝低延時內核,之後重啟加載新內核:
apt-get install linux-lowlatencyapt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatencyapt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatencyreboot需要注意的是,之後如果升級內核,需要手動再安裝低延遲內核!
先安裝UHD,使用pybombs安裝或者源碼直接安裝都可以,具體如前文所述,這裡不再重複。如果是BladeRF、LimeSDR也一樣,先裝驅動。
在Ubuntu下也可以選擇用apt安裝:
add-apt-repository ppa:srslte/releasesapt-get updateapt-get install srsepc srcenb srsue stelte但需要注意的是,uhd驅動不能用最新的,否則加載usrp會失敗。所以,還是建議使用源碼編譯安裝。
這裡再講下用源碼安裝。
安裝srsGUI:
apt-get install cmake g++ libpython-dev python-numpy swig git libsqlite3-dev libi2c-dev libusb-1.0-0-dev libwxgtk3.0-dev freeglut3-dev libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-dev libqt4-devgit clone https://github.com/srsLTE/srsGUI.gitcd srsGUImkdir buildcd buildcmake ../make -j4make installldconfig安裝SoapySDR:
git clone https://github.com/pothosware/SoapySDR.gitcd SoapySDRgit checkout soapy-sdr-0.7.2mkdir buildcd buildcmake ..make -j4make installldconfig安裝srsLTE:
git clone https://github.com/srsLTE/srsLTE.gitcd srsLTEmkdir buildcd buildcmake ../make -j8make testmake installldconfig安裝完成後生成配置文件,配置文件user生成到用戶路徑~/.config/srsLTE/,service生成到/etc/srsLTE路徑:
srslte_install_configs.sh user配置網絡接口,參數是默認能上網的網口,這裡是eth0:
最後再添加SIM卡的配置,主要是IMSI、KI、OPC,編輯~/.config/srsLTE/user_db.csv文件,格式為:
(ue_name),(algo),(imsi),(K),(OP/OPc_type),(OP/OPc_value),(AMF),(SQN),(QCI),(IP_alloc)ue3,mil,221010123456789,6874736969202073796D4B2079650A76,opc,504F20634F6320504F50206363500A4F,8000,000000001234,7,dynamic
再將這些參數寫入SIM卡,這裡建議使用GPSIMWrite,簡單便捷,相比pysim還是方便不少,缺點是只能在Windows下。寫卡器可以使用MCR3512、M100等營業廳所用寫卡器都可以,用Bludrive IISIM也可以。
白卡選擇LTE卡就可以,很多手機或者終端廠商需要用白卡配合CMW500一類綜合測試儀進行測試,所以檢索測試白卡關鍵字能買到,價格不便宜。僅供學習使用,請勿用於非法用途!
具體可以設置完LTE的IMSI15、KI和OPC之後,點擊Same With LTE,之後點擊Write Card寫入白卡:
把寫好的卡裝入手機,再分別啟動srsepc和srsenb:
這樣srsLTE就啟動了,下行2685MHz上行2565MHz。如果不使用USRP,使用BladerRF或者LimeSDR也類似,在啟動時候會自動加載。
註:如果USRP、BladeRF驅動都安裝了,個別人的環境會出現從USRP換BladeRF無法加載的問題,進入srsLTE的build目錄,檢查CMakeCache.txt文件中BLADERF_FOUND是TRUE。如果是FALSE,就刪掉CMakeCache.txt再重新「cmake..」,按照前面的步驟重新編譯安裝srsLTE。
註:為了獲得最佳性能,建議禁用CPU頻率動態調整,比如以下腳本:
for f in /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_governor ; do echo performance > $fdone
在srsenb界面可以輸入t回車來實時查看snr、bler等性能指標參數,如圖所示:
如果電腦配置高的話,可以打開星座圖,修改enb.conf,將enable設置為true,會增加CPU負載:
打開手機的網絡選擇界面,將手機註冊進入網絡:
如果手機無法搜索到信號,或者搜到了無法加入,先用其他SDR或者頻譜儀檢查下是否有信號發出,其次檢查信號是否有頻偏,因為每種手機對頻偏的容忍度是不一樣的。筆者實測中,華為的兼容性是最好的。
如果有頻偏,修改「ue.conf」中的「freq_offset」參數,如圖所示。正常情況下如果使用官方原版SDR設備,而不是山寨SDR設備,很少出現這種情況。另外,使用GPSDO或者其他穩定的時鐘輸入,也能避免這種問題。
如果還是無法搜索到信號,那就可能是手機的基帶問題,比如在默認配置下,測試發現小米MIX就無法搜索到,可以修改下頻段,也就是「EARFCN」參數,也可以直接在srsenb執行時加參數:
srsenb ~/.config/srslte/enb.conf --rf.dl_earfcn 1575
再測試就能搜索到了,如圖所示。
EARFCN和頻段對照關係如下圖所示:
當然,註冊進網絡後,還需要在電腦上配置nat轉發:
echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
在手機上配置APN,也就是epc.conf中默認設置的srsapn:
手機上APN設置裡新建,只需要設置名稱和APN即可:
然後手機就可以愉快地上網了:
再進行一次測速:
受限於家裡寬帶的速度,總體還可以。
同時,在部署的電腦上可以使用wireshark進行抓包,可以對手機的4G流量進行分析,用於手機、平板、工控機等使用4G網絡的設備進行分析研究。
除了enb用於手機,還可以使用ue讓電腦與電腦連接,這裡使用另一臺電腦外接一個USRP B210,安裝部署流程一致,只是執行應用的時候不是srsepc和srsenb,直接執行srsue即可:
相當於這個USRP就是一個LTE基帶,連上基站後會創建一個虛擬網卡tun_srsue,分配的IP是172.16.0.2和srsenb做創建的虛擬網卡在一個網段,可以互相ping一下:
和srsenb類似srsue也可以打開星座圖,修改ue.conf,將enable設置為true,如圖所示。同樣會增加CPU負載,效果如圖所示。
相比OAI,srsLTE對電腦的性能要求更高一些,但配置更加簡便。
更多內容可以看官方文檔:https://docs.srslte.com/en/latest/index.html
最後附一個淘寶的參考購買連結:
https://item.taobao.com/item.htm?id=615846456252
這篇文章轉載自簡老師的博客:
https://www.white-alone.com/%E4%BD%BF%E7%94%A8srsLTE%E6%90%AD%E5%BB%BA4G%E5%9F%BA%E7%AB%99%E7%94%A8%E4%BA%8E%E6%97%A5%E5%B8%B8%E6%B5%8B%E8%AF%95/
歡迎大家關注簡老師的博客