当前位置:   article > 正文

HackRF One—LTE基站扫描_hackrf c语言调用 lte信号 嗅探

hackrf c语言调用 lte信号 嗅探

本教程参考了James Evrytania和焦现军老师的GitHub开源项目,以及基本内容。可以说就是其内容的部署和实现。其中James Evrytania的程序仅支持RTL2832和FDD解码,不支持HackRF One以及国内中国移动使用的TDD。但焦老师的程序是在Evrytania老师的项目上继续的,因此我先从Evrytania开始做起,本文不涉及代码分析,仅是将作者的程序成功运行了而已,后面还需要对其C++语言和Matlab代码进行详细分析才能完全了解其中的奥秘。

https://github.com/Evrytania/LTE-Cell-Scannerhttps://github.com/Evrytania/LTE-Cell-ScannerGitHub - JiaoXianjun/LTE-Cell-Scanner: OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board)OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board) - GitHub - JiaoXianjun/LTE-Cell-Scanner: OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board)https://github.com/JiaoXianjun/LTE-Cell-Scanner

安装Evrytania程序过程

1、检查依赖包是否均安装成功

sudo apt install libblas-dev librtlsdr-dev libncurses5-dev libitpp-dev -y

2、clone下Evrytania的程序。

https://github.com/Evrytania/LTE-Cell-Scanner.git

3、进行编辑,如果顺利,就是如下几行指令,但我还是遇到了各种问题,第4和第5步分别是我遇到的两个错误。

  1. cd LTE-Cell-Scanner-master
  2. mkdir build
  3. cd build
  4. cmake ../
  5. make

 4、cmake时报错,无法找到ITPP等包,根据GitHub中的解答,我找到了解决方法。首先找到这个包的路径,使用以下指令。

  1. cd /usr/lib
  2. find | grep -i itpp

例如我查出包的路径为/usr/lib/x86_64-linux-gnu,记录下这个路径,打开/LTE-Cell-Scanner-master/cmake/Modules,可以看到三个cmake文件,依次打开并将该路径加入到FIND_LIBRARY()中。这三个文件分别是找ITPP、FTTW和RTLSDR包,直接都加入,防止其它的报错。之后再cmake ..应该就不会报错了。

5、make时报错,我截取了GitHub上别人报告,和我的是一样的。

  1. [ 5%] Building CXX object src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o
  2. In file included from /root/LTE-Cell-Scanner/src/capbuf.cpp:29:0:
  3. /root/LTE-Cell-Scanner/include/dsp.h: In function ‘itpp::cvec fshift(const cvec&, double, double)’:
  4. /root/LTE-Cell-Scanner/include/dsp.h:47:25: error: lvalue required as left operand of assignment
  5. coeff.real()=cos(kt);
  6. ^
  7. /root/LTE-Cell-Scanner/include/dsp.h:48:25: error: lvalue required as left operand of assignment
  8. coeff.imag()=sin(kt);
  9. ^
  10. /root/LTE-Cell-Scanner/include/dsp.h: In function ‘void fshift_inplace(itpp::cvec&, double, double)’:
  11. /root/LTE-Cell-Scanner/include/dsp.h:64:25: error: lvalue required as left operand of assignment
  12. coeff.real()=cos(kt);
  13. ^
  14. /root/LTE-Cell-Scanner/include/dsp.h:65:25: error: lvalue required as left operand of assignment
  15. coeff.imag()=sin(kt);
  16. ^
  17. src/CMakeFiles/LTE_MISC.dir/build.make:62: recipe for target 'src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o' failed
  18. make[2]: *** [src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o] Error 1
  19. CMakeFiles/Makefile2:121: recipe for target 'src/CMakeFiles/LTE_MISC.dir/all' failed
  20. make[1]: *** [src/CMakeFiles/LTE_MISC.dir/all] Error 2
  21. Makefile:138: recipe for target 'all' failed
  22. make: *** [all] Error 2

这个解决方法也可以在GigHub的问答中找到,打开/LTE-Cell-Scanner-master/CMakeLists.txt,

讲第11行的代码进行修改,增加-std=c++03 ,修改完后,再次make,就不会报错了。

SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03 -ggdb -Wall")

至此按理来说就可以正常去使用CellSearch和LTE-Tracker了。

但我并没有RTL2832来进行实验,所以并不保证完全可用,但大家可以进行参考。

安装Jiao xianjun程序过程

1、仍然需要安装依赖包、clone程序、进行编译。因为我们设备是HackRF One,所以在cmake后加参数,其它设备也需要加相应参数进行编译,默认设备是RTL2832。

  1. sudo apt install libblas-dev librtlsdr-dev libncurses5-dev libitpp-dev -y
  2. git clone https://github.com/JiaoXianjun/LTE-Cell-Scanner.git
  3. cd LTE-Cell-Scanner-master
  4. mkdir build
  5. cd build
  6. cmake ../ -DUSE_HACKRF=1
  7. make

2、在这次执行cmake和make时均为出现错误,不需要去修改上述的那些文件了。但在安装完毕后使用CellSearch时,出现了报错,说找不到设备,或配置错误,报错如下。

  1. PPM: 0
  2. correction: 1
  3. usb_claim_interface error -6
  4. config_rtlsdr Error: unable to open Hackrf device
  5. Hackrf device not FOUND!

遇到这个原因,我找了好久原因,因为其在cmake和make期间没有报任何错误,让我摸不着头脑,后来我仔细查看了cmake时候的信息,发现Hackrf Lib没有找到,我又去看了/LTE-Cell-Scanner-master/cmake/Modules/FindHACKRF.cmake文件,发现其在查找Hackrf时,需要找两个位置,一个是hackrf.h的位置,另一个是libhackrf的位置。libhackrf我肯定是安装了,但haackrf.h我并没有,这一看就是C++程序的头文件。想到焦老师以及Evrytania的程序均是C++编写的,所以应该是需要hackrf的C++包,知道原因之后,解决起来也不难。

3、安装hackrf的C++包。

  1. git clone https://github.com/mossmann/hackrf.git
  2. cd hackrf/host
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make
  7. sudo make install

4、至此就可以链接HackRF One,来使用CellSearch和LTE-Tracker了。

  1. ./CellSearch --freq-start 2644400000
  2. try peak 0 tdd_flag 0
  3. try peak 0 tdd_flag 1
  4. Detected a TDD cell! At freqeuncy 2644.4MHz, try 0
  5. cell ID: 487
  6. PSS ID: 1
  7. RX power level: -5.87175 dB
  8. residual frequency offset: -421.115 Hz
  9. k_factor: 1

至此运行成功,找到了TDD基站。“CellSearch”程序可用于在一定频率范围内搜索 LTE 运营商。一旦定位了 LTE 频率,可以使用“LTE-Tracker”对基站小区进行搜索和追踪。使用该程序搭配地图,可以确定基站小区的覆盖范围。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/813045
推荐阅读
相关标签
  

闽ICP备14008679号