project:srsranda
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
project:srsranda [2023/12/06 16:50] – [LTE sniffing download and upload via SDR] abyssal | project:srsranda [2025/03/13 14:21] (current) – fix templatere plugin invocation root | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== SrsRANda ====== | ====== SrsRANda ====== | ||
- | {{template> | + | {{template> |
name=Srsranda| | name=Srsranda| | ||
image=srsranda_project_logo.png? | image=srsranda_project_logo.png? | ||
Line 23: | Line 23: | ||
* ENB = base station (BTS) | * ENB = base station (BTS) | ||
+ | **BE WARNED, this project is NIGHTMARE level of difficulty** to get things running. | ||
+ | |||
+ | I repeat, **NIGHTMARE difficulty**. Still somehow easier than '' | ||
===== Why the name SrsRANda ===== | ===== Why the name SrsRANda ===== | ||
Line 44: | Line 47: | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | Almost all software listed below is based on SrsRAN 4G, be warned that things like Falcon have modified version of SrsRAN | ||
+ | |||
+ | **Extremely hard, nightmare mode** to configure correctly (see below). | ||
===== Radios supported (SDRs), currently available ===== | ===== Radios supported (SDRs), currently available ===== | ||
- | * 1x ADALM PLUTO SDR (56 MHz bandwidth) | + | * 1x ADALM PLUTO SDR (56 MHz bandwidth) |
- | * 2x HackRF (24 MHz bandwidth, only half-duplex) | + | * 2x HackRF (20 MHz bandwidth, only half-duplex, not suitable for some functions) |
* 1x BladeRF (112 MHz bandwidth) | * 1x BladeRF (112 MHz bandwidth) | ||
- | * 1-2x LimeSDR (61.44 MHz, 4 RX/TX antennas | + | * 1-2x LimeSDR (61.44 MHz per RX/TX port, so 2x61.4MHz RX; 2 RX and 2 TX ports, RX ports have 3 antennas |
- | * 1x LimeSDR mini | + | * 1x LimeSDR mini (not tested yet) |
+ | |||
+ | Currently working with Pluto, HackRF and LimeSDR. | ||
+ | |||
+ | < | ||
+ | Pluto is not supported out-of-the-box. It has drifting oscillator and no timestamping. There is a fix (requires flashing firmware, rebuild of soapy, changing or using GPSDO as clock) - [[https:// | ||
+ | </ | ||
+ | |||
+ | **Antennas in use:** | ||
+ | * 12x [[https:// | ||
+ | * one 700-2700 MHz, copper body, around +5 dBi | ||
+ | * one 700-2700 Mhz light coiled antenna, maybe +3 dBi | ||
===== Software ===== | ===== Software ===== | ||
Line 59: | Line 77: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
Line 260: | Line 278: | ||
</ | </ | ||
- | ==== Running | + | ==== Running |
- | Use '' | + | First, |
- | Example of **incorrect** output: | + | You need to run it as root because it create TUN/TAP interface. Seems to work in docker. |
+ | |||
+ | Default DB contains only few entries, if you want different MCC, MNC, LAC, TAC, PCI, you'll have to add it to DB/ | ||
+ | |||
+ | < | ||
+ | # srsepc | ||
+ | |||
+ | Built in Release mode using commit fa56836b1 on branch master. | ||
+ | |||
+ | |||
+ | --- Software Radio Systems EPC --- | ||
+ | |||
+ | Couldn' | ||
+ | Reading configuration file / | ||
+ | Couldn' | ||
+ | HSS Initialized. | ||
+ | MME S11 Initialized | ||
+ | MME GTP-C Initialized | ||
+ | MME Initialized. MCC: 0xf001, MNC: 0xff01 | ||
+ | SPGW GTP-U Initialized. | ||
+ | SPGW S11 Initialized. | ||
+ | SP-GW Initialized. | ||
+ | Received S1 Setup Request. | ||
+ | S1 Setup Request - eNB Name: srsenb01, eNB id: 0xZZZ | ||
+ | S1 Setup Request - MCC:ZZZ, MNC:ZZ | ||
+ | S1 Setup Request - TAC ZZZZ, B-PLMN 0xf110 | ||
+ | S1 Setup Request - Paging DRX v128 | ||
+ | Sending S1 Setup Response | ||
+ | SCTP Association Shutdown. Association: | ||
+ | Deleting eNB context. eNB Id: 0xZZZ | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Then use '' | ||
- | TODO: get ENB working | ||
< | < | ||
% srsenb | % srsenb | ||
- | Active RF plugins: libsrsran_rf_uhd.so libsrsran_rf_soapy.so libsrsran_rf_zmq.so | + | $ ./ |
+ | Active RF plugins: libsrsran_rf_uhd.so libsrsran_rf_soapy.so | ||
Inactive RF plugins: | Inactive RF plugins: | ||
--- Software Radio Systems LTE eNodeB | --- Software Radio Systems LTE eNodeB | ||
- | Couldn' | + | Couldn' |
- | Reading configuration file [...]/ | + | Reading configuration file / |
- | Couldn' | + | Couldn' |
- | Couldn' | + | Couldn' |
- | Couldn' | + | Couldn' |
WARNING: cpu0 scaling governor is not set to performance mode. Realtime processing could be compromised. Consider setting it to performance mode before running the application. | WARNING: cpu0 scaling governor is not set to performance mode. Realtime processing could be compromised. Consider setting it to performance mode before running the application. | ||
Failed to `mlockall`: {} | Failed to `mlockall`: {} | ||
- | Built in Release mode using commit | + | Built in Release mode using commit |
Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | ||
Opening 1 channels in RF device=default with args=default | Opening 1 channels in RF device=default with args=default | ||
- | connect(): Connection refused | + | Supported RF device list: UHD soapy file |
- | Supported RF device list: UHD soapy zmq file | + | |
Trying to open RF device ' | Trying to open RF device ' | ||
- | Failed to initiate S1 connection. Attempting reconnection in 10 seconds | + | [INFO] [UHD] linux; GNU C++ version |
- | [INFO] [UHD] linux; GNU C++ version | + | |
[INFO] [LOGGING] Fastpath logging disabled at runtime. | [INFO] [LOGGING] Fastpath logging disabled at runtime. | ||
- | + | [ERROR] avahi_client_new() failed: Daemon not running | |
- | RtApiAlsa:: | + | [ERROR] avahi_client_new() failed: Daemon not running |
+ | [WARNING] Unable to scan ip: -19 | ||
Opening USRP channels=1, args: | Opening USRP channels=1, args: | ||
[INFO] [UHD RF] RF UHD Generic instance constructed | [INFO] [UHD RF] RF UHD Generic instance constructed | ||
+ | [ERROR] avahi_client_new() failed: Daemon not running | ||
+ | [WARNING] Unable to scan ip: -19 | ||
- | RtApiAlsa:: | + | [INFO] [UHDSoapyDevice] Make connection: ' |
- | + | [INFO] [UHDSoapyDevice] Reference clock 30.72 MHz | |
- | + | [INFO] [UHDSoapyDevice] Device name: LimeSDR-USB | |
- | RtApiAlsa:: | + | [INFO] [UHDSoapyDevice] Reference: 30.72 MHz |
- | + | [INFO] [UHDSoapyDevice] LMS7002M register cache: Disabled | |
- | + | [INFO] [UHDSoapyDevice] RX LPF configured | |
- | RtApiAlsa:: | + | [INFO] [UHDSoapyDevice] RX LPF configured |
- | + | [INFO] [UHDSoapyDevice] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active | |
- | [INFO] [UHDSoapyDevice] | + | [INFO] [UHDSoapyDevice] TX LPF configured |
- | [INFO] [UHDSoapyDevice] | + | [INFO] [UHDSoapyDevice] |
+ | [INFO] [UHDSoapyDevice] | ||
RF device ' | RF device ' | ||
- | [...]/ | + | Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted |
+ | Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | ||
+ | Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | ||
Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | Warning: Failed to create thread with real-time priority. Creating it with normal priority: Operation not permitted | ||
==== eNodeB started === | ==== eNodeB started === | ||
Type <t> to view trace | Type <t> to view trace | ||
- | [INFO] [UHDSoapyDevice] | + | [INFO] [UHDSoapyDevice] |
- | [INFO] [UHDSoapyDevice] | + | [INFO] [UHDSoapyDevice] RX LPF configured |
- | Setting frequency: | + | [INFO] [UHDSoapyDevice] Filter calibrated. Filter order-4th, filter bandwidth set to 11.52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active |
- | [ERROR] [UHD RF] UHDSoapyRxStream:: | + | [INFO] [UHDSoapyDevice] |
+ | [INFO] [UHDSoapyDevice] Filter calibrated. Filter order-4th, filter bandwidth set to 11.52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active | ||
+ | [INFO] [UHDSoapyDevice] TX LPF configured | ||
+ | Setting frequency: ... | ||
+ | [INFO] [UHDSoapyDevice] Tx calibration finished | ||
+ | [INFO] [UHDSoapyDevice] Rx calibration finished | ||
+ | [INFO] [UHD RF] Tx while waiting for EOB, timed out... 64.2848 >= 64.2843. Starting new burst... | ||
</ | </ | ||
+ | |||
+ | TODO: signal drifted | ||
===== Waterfall examples for UE (cellphones) and ENB (base stations) ===== | ===== Waterfall examples for UE (cellphones) and ENB (base stations) ===== | ||
Line 344: | Line 407: | ||
===== LTE sniffing ===== | ===== LTE sniffing ===== | ||
- | ==== LTE sniffing | + | ==== LTE sniffing |
These experiments were carried out using 3 SDR radios: | These experiments were carried out using 3 SDR radios: | ||
Line 352: | Line 415: | ||
* Hack RF | * Hack RF | ||
- | I obtained uplink/downlink of my own phone' | + | Only LimeSDR seems to work with LTESniffer and only in downlink |
- | Cellular Z sample screenshot: | + | Example output showing a UE (phone) disconnecting from ENB and losing security context where it can be attacked by fake base station (such ENB can be made from srsENB). |
- | {{:project:cellular_z_bands.png?300|}} | + | {{:project:ltesniffer_limesdr_downlink.png?800|}} |
- | 20 MHz is bandwidth that fits Pluto SDR, Lime SDR and also HackRF. | + | Uplink requires 2 RX chains because modulation of UE needs to be bruteforced (it's secret value, but only few values are possible). LimeSDR theoretically could be used, but would require code change and preparation for the clock sync. At the moment only USRP X310 or two USRP B200 with GPSDO are known to work. LimeSDR can be flashed to work as USRP B200, but you'd need two without changing code (also it's not the main branch, but separate multi-usrp branch in LTESniffer) |
+ | |||
+ | I obtained uplink/ | ||
+ | |||
+ | === LTE channel sniff manual without decode === | ||
+ | |||
+ | 20 MHz is LTE channel | ||
Used tools: [[https:// | Used tools: [[https:// | ||
Line 364: | Line 433: | ||
Example of download and upload as seen on frequency spectrum, this is uplink channel, but since TCP/IP requires sending data back, download is visible on uplink channel as well: | Example of download and upload as seen on frequency spectrum, this is uplink channel, but since TCP/IP requires sending data back, download is visible on uplink channel as well: | ||
- | **Download** | + | **Download, recorded with PlutoSDR and LimeSDR** |
+ | |||
+ | Hence 20 MHz vs 61 MHz bandwidth difference | ||
{{: | {{: | ||
- | **Upload** | + | {{: |
+ | |||
+ | **Upload, recorded with PlutoSDR and LimeSDR** | ||
+ | |||
+ | Hence again 20 MHz vs 61 MHz bandwidth difference | ||
{{: | {{: | ||
+ | |||
+ | {{: | ||
===== Images of SDRs and antennas' | ===== Images of SDRs and antennas' | ||
Line 382: | Line 459: | ||
{{: | {{: | ||
- | **LimeSDR | + | **LimeSDR |
- | {{: | + | ===== LTE Cell tracker HOWTO ===== |
project/srsranda.1701881450.txt.gz · Last modified: 2023/12/06 16:50 by abyssal