Skip to main content

Universal Radio Hacker: investigate wireless protocols like a boss

Project description

URH image

Tests status Coverage PyPI version Packaging status Average time to resolve an issue Percentage of issues still open

Blackhat Arsenal 2017 Blackhat Arsenal 2018 Slack

The Universal Radio Hacker (URH) is a software for investigating unknown wireless protocols. Features include

  • hardware interfaces for common Software Defined Radios
  • easy demodulation of signals
  • assigning participants to keep an overview of your data
  • customizable decodings to crack even sophisticated encodings like CC1101 data whitening
  • assign labels to reveal the logic of the protocol
  • automatic reverse engineering of protocol fields
  • fuzzing component to find security leaks
  • modulation support to send the data back to the target
  • simulation environment to perform stateful attacks

Getting started

In order to get started

If URH is useful for you, please consider giving this repository a :star: or make donation via PayPal. We appreciate your support!

Want to stay in touch? :speech_balloon: Join our Slack channel!

Citing URH

We encourage researchers who work with URH to cite this WOOT'18 paper or directly use the following BibTeX entry.

@inproceedings {220562,
author = {Johannes Pohl and Andreas Noack},
title = {Universal Radio Hacker: A Suite for Analyzing and Attacking Stateful Wireless Protocols},
booktitle = {12th {USENIX} Workshop on Offensive Technologies ({WOOT} 18)},
year = {2018},
address = {Baltimore, MD},
url = {https://www.usenix.org/conference/woot18/presentation/pohl},
publisher = {{USENIX} Association},
}

Installation

Universal Radio Hacker can be installed via pip or using the package manager of your distribution (if included). Below you find more specific installation instructions for:

Windows

On Windows, URH can be installed with its Installer. No further dependencies are required.

If you get an error about missing api-ms-win-crt-runtime-l1-1-0.dll, run Windows Update or directly install KB2999226.

Linux

Generic Installation with pip (recommended)

URH is available on PyPi so you can install it with

# IMPORTANT: Make sure your pip is up to date
sudo python3 -m pip install --upgrade pip  # Update your pip installation
sudo python3 -m pip install urh            # Install URH

This is the recommended way to install URH on Linux because it comes with all native extensions precompiled.

udev rules

In order to access your SDR as non-root user, install the according udev rules. For example, you can install the HackRF udev rules with the following commands.

sudo tee -a /etc/udev/rules.d/52-hackrf.rules >/dev/null <<-EOF
ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="hackrf-dfu-%k", MODE="660", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules

Make sure your current user is in the plugdev group to make these rules work. You find rules for other SDRs by searching for "<SDR name> udev rules" in your favorite search engine.

If you still have problems accessing your SDR the Linux USB autosuspend feature might be interfering. You can disable it by editing your /etc/default/grub as shown here.

Install via Package Manager

URH is included in the repositories of many linux distributions such as Arch Linux, Gentoo, Fedora, openSUSE or NixOS. There is also a package for FreeBSD. If available, simply use your package manager to install URH.

Note: For native support, you must install the according -dev package(s) of your SDR(s) such as hackrf-dev before installing URH.

Docker Image

The official URH docker image is available here. It has all native backends included and ready to operate.

MacOS

Using DMG

It is recommended to use at least macOS 10.14 when using the DMG available here.

With pip

  1. Install Python 3 for Mac OS X. If you experience issues with preinstalled Python, make sure you update to a recent version using the given link.
  2. (Optional) Install desired native libs e.g. brew install librtlsdr for corresponding native device support.
  3. In a terminal, type: pip3 install urh.
  4. Type urh in a terminal to get it started.

Update your installation

If you installed URH via pip you can keep it up to date with pip3 install --upgrade urh, or, if this should not work python3 -m pip install --upgrade urh.

Running from source

If you like to live on bleeding edge, you can run URH from source.

Without installation

To execute the Universal Radio Hacker without installation, just run:

git clone https://github.com/jopohl/urh/
cd urh/src/urh
./main.py

Note, before first usage the C++ extensions will be built.

Installing from source

To install from source you need to have python-setuptools installed. You can get it e.g. with pip install setuptools. Once the setuptools are installed use:

git clone https://github.com/jopohl/urh/
cd urh
python setup.py install

And start the application by typing urh in a terminal.

Articles

Hacking stuff with URH

General presentations and tutorials on URH

External decodings

See wiki for a list of external decodings provided by our community! Thanks for that!

Screenshots

Get the data out of raw signals

Interpretation phase

Keep an overview even on complex protocols

Analysis phase

Record and send signals

Record

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

urh-2.8.6.tar.gz (3.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

urh-2.8.6-cp38-cp38-manylinux2014_x86_64.whl (26.9 MB view details)

Uploaded CPython 3.8

urh-2.8.6-cp37-cp37m-win_amd64.whl (12.5 MB view details)

Uploaded CPython 3.7mWindows x86-64

urh-2.8.6-cp37-cp37m-win32.whl (10.4 MB view details)

Uploaded CPython 3.7mWindows x86

urh-2.8.6-cp37-cp37m-manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.7m

urh-2.8.6-cp37-cp37m-macosx_10_13_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.7mmacOS 10.13+ x86-64

urh-2.8.6-cp36-cp36m-manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.6m

urh-2.8.6-cp35-cp35m-manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.5m

File details

Details for the file urh-2.8.6.tar.gz.

File metadata

  • Download URL: urh-2.8.6.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.6.tar.gz
Algorithm Hash digest
SHA256 b5d1b54c25b2cfa888d6d03c522975f1d0b429fbca1fa423df21b3d916ed59f4
MD5 174d7ed6055eefead13be9b9093d2ecd
BLAKE2b-256 ee51ff68e10f00b29eaea34c03306e4a5cacb3e4564bf1e64c04e2558f0daa53

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: urh-2.8.6-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.9 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for urh-2.8.6-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 860c06395ae9d8ec624766e0cc394568d243c21fef8df88a6177215a9e674abc
MD5 a5a69aa6bc28783b49238b454beac658
BLAKE2b-256 9bfe9406a783c7ee16d3631e6c7f04e3741c459bf705dcc135a742b4a5da9fd4

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: urh-2.8.6-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 12.5 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 43c69460fd988dc50eb619eb3d7e0036065f2090b50cee951d80fe249fa7cf42
MD5 79b18f61079ca5e49413f1ba54d1b1d6
BLAKE2b-256 b7dcb5bd71f1cb627d2b47b9685ed30d7f107c87c7bb45ccda48b3ccbcb33249

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp37-cp37m-win32.whl.

File metadata

  • Download URL: urh-2.8.6-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 10.4 MB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.6-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 4850a263644fea6037142385dfd807dfcfcd832af0ccd4008a9baede5ae88829
MD5 0a279399c49d286f840ce6e86445ca89
BLAKE2b-256 741c51749a6390bd82a4289d7064ed4306e7ffd24ae3a508d83b213c1e8bdbf8

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: urh-2.8.6-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.3 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.6-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d024f9ee9e75ed7f013767aed81e913832dc40faf60d86a62d90b18fc85c2b65
MD5 82aeeda3f8a6be11ee2366b7affc4c65
BLAKE2b-256 5223c0f39da928c0ef1f21f9587558510208bff0abf2e7049d98704b67e9d629

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp37-cp37m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: urh-2.8.6-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: CPython 3.7m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.6-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 92eb6f9d28d5cb82771e9673e2bc3c5c6fec991408c33ca3249d634d8d0d8195
MD5 c848f90a22d168c6408420c816e33fdd
BLAKE2b-256 42a74707545a5a0df803b45c6657be2f84926b05c59586094618be949c71403c

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: urh-2.8.6-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.3 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for urh-2.8.6-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05377ba848c5987724ffedd8a8a1cd310db1ed9fd067d51da2b7cb79e3b5ee59
MD5 916b85fdbfad39f9fe376cbf4ea98a36
BLAKE2b-256 a944a861464475ab0192683f41813e3721fdef77f58e685175d1202c311a2952

See more details on using hashes here.

File details

Details for the file urh-2.8.6-cp35-cp35m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: urh-2.8.6-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.2 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.5.9

File hashes

Hashes for urh-2.8.6-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb24b63e87e352a50a95b27cf6e33b1c1a0e51f1df29c4283353fc2ea1a8ee6d
MD5 961084eadcfe09477935eb0db6bdce3c
BLAKE2b-256 68ea36da0d42b0f2cacf7f5aa23772381282cb37160e55f0e5c28b4308c9dd44

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page