Skip to main content

Universal Radio Hacker: investigate wireless protocols like a boss

Project description

Universal Radio Hacker Blackhat Arsenal 2017 Blackhat Arsenal 2018

Tests status Coverage PyPI version Packaging status Average time to resolve an issue Percentage of issues still open 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.

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.5.tar.gz (2.9 MB view details)

Uploaded Source

Built Distributions

urh-2.8.5-cp38-cp38-manylinux2014_x86_64.whl (25.4 MB view details)

Uploaded CPython 3.8

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m Windows x86

urh-2.8.5-cp37-cp37m-manylinux2014_x86_64.whl (24.8 MB view details)

Uploaded CPython 3.7m

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

Uploaded CPython 3.7m macOS 10.13+ x86-64

urh-2.8.5-cp36-cp36m-manylinux2014_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.6m

urh-2.8.5-cp35-cp35m-manylinux2014_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: urh-2.8.5.tar.gz
  • Upload date:
  • Size: 2.9 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.43.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.5.tar.gz
Algorithm Hash digest
SHA256 fd9300a0ccf07413380c40829fadd7e8543d96434dd79772316c939ad932cbf3
MD5 189d59261db54275053ab6f6c1ed901a
BLAKE2b-256 6b20d44aa59f02256afd73489b365a0d328f0a69aa5a0024aa3f92df386d896c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 25.4 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.43.0 CPython/3.8.2

File hashes

Hashes for urh-2.8.5-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8734a13b49f82280b580d5907b28e1dbf7a3a26801deafa42637e24b72f15c93
MD5 104b78bcd3f7528cb2b49754747fcc35
BLAKE2b-256 1421f6f5f5a26eb5551fc4bf56d36a7a973e030a56b0740458f1d290f077127e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-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.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 fd23b1d53675909076e47fca71d6e8b82d56ba32fbe675f4401818dd65dc89c4
MD5 95e5bc02177dcbc80a181cb404a57aa2
BLAKE2b-256 f55bb8037f79c26f5327589c31d78042bb31e034bec86fb5b90be65d74542cd2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-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.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.5-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 1e843b640e0e6258df3d4484d2cb2b476d76ffc76f6cc4618e293cd492b4030d
MD5 aac6c44f0160f82e2d2d0e2cbdbf3493
BLAKE2b-256 b16211e7df4cda08eb7399a71b841cbd3fa8c8cdc684368351c3d741d9797df4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 24.8 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.43.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.5-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf084d655196a8419ac40c8c2f3f424a78df696dca63c9fba4fd0e92916b74ad
MD5 d40d9d03dc5c0d46a4ca2cf0c7403d40
BLAKE2b-256 b74e69c8f001746812189f11fcfe9b7ff3900fe154df73aaa7bc18f6d6873b93

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-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.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for urh-2.8.5-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 fee8bcd9e8aa8be182c80bb91132717d72e74905ddc36f60d42c893d05d857a5
MD5 183c7e380ce9b31cd1fc8bac43e94f01
BLAKE2b-256 5b8f261fe9c0ae51c73d517afe33c276e3f27d1c666cf92c8cfac3a07fd75a51

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 24.7 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.43.0 CPython/3.6.10

File hashes

Hashes for urh-2.8.5-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 701094ebbd7cce25d65da7c9a927ae44dc9b48c349300f0b22025452770ce2bc
MD5 df2ed4a89ee39f9f2c20626f412ecf79
BLAKE2b-256 1bda293641f658fab2378160abb3514c7428bd7e1fc07a7c1cf546be3baa0432

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.5-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 24.7 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.43.0 CPython/3.5.9

File hashes

Hashes for urh-2.8.5-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4fea1d0e4233fc2e173fcb3f8b0520c7723c29ca766a57f1e16be08a5c15e5ea
MD5 2d4fd73438f0d70626244e6b85f7e16a
BLAKE2b-256 658f940671c1b22dbcfa9736ca0c67b042b8276228404c85fbbb006ba729a081

See more details on using hashes here.

Supported by

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