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 21:21] – [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 24: | Line 24: | ||
**BE WARNED, this project is NIGHTMARE level of difficulty** to get things running. | **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 52: | Line 54: | ||
===== 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 (20 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 per RX/TX port, so 2x61.4MHz RX; 2 RX and 2 TX ports, RX ports have 3 antennas each, TX ports have 2 antennas each) | * 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 each, TX ports have 2 antennas each) | ||
- | * 1x LimeSDR mini | + | * 1x LimeSDR mini (not tested yet) |
Currently working with Pluto, HackRF and LimeSDR. | 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:** | **Antennas in use:** | ||
Line 272: | 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 356: | 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 363: | Line 414: | ||
* Lime SDR | * Lime SDR | ||
* Hack RF | * Hack RF | ||
+ | |||
+ | Only LimeSDR seems to work with LTESniffer and only in downlink mode (ENB-> | ||
+ | |||
+ | 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). | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 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/ | I obtained uplink/ | ||
- | 20 MHz is bandwidth that fits Pluto SDR, Lime SDR and also HackRF. | + | === LTE channel sniff manual without decode === |
+ | |||
+ | 20 MHz is LTE channel | ||
Used tools: [[https:// | Used tools: [[https:// |
project/srsranda.1701897703.txt.gz · Last modified: 2023/12/06 21:21 by abyssal