Skip to main content

Universal Radio Hacker: investigate wireless protocols like a boss

Project description

URH image

CI PyPI version Packaging status Blackhat Arsenal 2017 Blackhat Arsenal 2018

The Universal Radio Hacker (URH) is a complete suite for wireless protocol investigation with native support for many common Software Defined Radios. URH allows easy demodulation of signals combined with an automatic detection of modulation parameters making it a breeze to identify the bits and bytes that fly over the air. As data often gets encoded before transmission, URH offers customizable decodings to crack even sophisticated encodings like CC1101 data whitening. When it comes to protocol reverse-engineering, URH is helpful in two ways. You can either manually assign protocol fields and message types or let URH automatically infer protocol fields with a rule-based intelligence. Finally, URH entails a fuzzing component aimed at stateless protocols and a simulation environment for stateful attacks.

Getting started

In order to get started

If you like URH, please :star: this repository and join our Slack channel. We appreciate your support!

Citing URH

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

URH BibTeX entry for your research paper
@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

URH runs on Windows, Linux and macOS. Click on your operating system below to view installation instructions.

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.

In order to access your SDR as non-root user, install the according udev rules. You can find them in the wiki.

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.

Snap

URH is available as a snap: https://snapcraft.io/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 python3 -m pip install --upgrade urh.

Running 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 URH from source you need to have python-setuptools installed. You can get them with python3 -m pip install setuptools. Once the setuptools are installed execute:

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

Uploaded Source

Built Distributions

urh-2.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

urh-2.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

urh-2.9.4-cp39-cp39-macosx_10_15_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

urh-2.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

urh-2.9.4-cp37-cp37m-win_amd64.whl (10.8 MB view details)

Uploaded CPython 3.7m Windows x86-64

urh-2.9.4-cp37-cp37m-win32.whl (10.0 MB view details)

Uploaded CPython 3.7m Windows x86

urh-2.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.1 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: urh-2.9.4.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for urh-2.9.4.tar.gz
Algorithm Hash digest
SHA256 da5ee5acf9af62a8261e35cf2f2e40c37dc0898f0d84a3efd5f4ea21e5fb9ced
MD5 90b7dd0f8c81cb886ec4d97bdaedf834
BLAKE2b-256 1c2045c108e7c89db910d68b8cccd988603789b1886acb94f79a716b89dffa19

See more details on using hashes here.

File details

Details for the file urh-2.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4bb56d73690a4480f4581662269d7e5383b9ddb7adbaa092a20b83b803f5e92
MD5 f6c46fafdaac0822f603c3fa11dd12a1
BLAKE2b-256 1b2ff5d995425ae32d400db092ee56c0f134c631c3ae4985dc1dddd06d9005f0

See more details on using hashes here.

File details

Details for the file urh-2.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6556f9c7ee8e2d48328fae443fdc9ae74c38d6d4c1d57bf6a2d4e48e4e17222
MD5 476f801fd6702bf1f8beda96a1513168
BLAKE2b-256 f779959487c00adaab8d67612992e516e68fc70c11826daf298b40cec62de91a

See more details on using hashes here.

File details

Details for the file urh-2.9.4-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5e4643470e5fb0f5198001c0af8b15d6d79a35386546af6e045ab1145bcc9d76
MD5 a37aef86c417920eb7d7746aba994f62
BLAKE2b-256 4f790892179e8718e92bad0f36b6a3e4c6f9e041d46c192e1d2b033860ebe0e1

See more details on using hashes here.

File details

Details for the file urh-2.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac36429f6d2b88fa5cd6d04fb8d196457673d370284962aadf89075a68e7dd2c
MD5 4aebdaa4213af6b911939f1bf784796e
BLAKE2b-256 22ceb8debe97156df9b903fa43506d74f862ed951779bff7d4755c97979c1ccb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 10.8 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for urh-2.9.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f6da791f5c6b2b08e9d478b7e5eed01afa5184c5ce28dc85377750f80ab4741b
MD5 c3488843b5a39aed5585ba73615a88df
BLAKE2b-256 c1599be4b30b3c58b236e227c2f4c8af312265aa15dfdbc8385b6e8e69f08f56

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.4-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for urh-2.9.4-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 3d6f9f102c9968180d698d0d5c2627c39adf4ba27c4f70e16139f58c39858098
MD5 6fec9780fdf2f8ff5c0d482421a86775
BLAKE2b-256 02e3cfc1f9008afe10dcdac566b16948aaad13287e6196627f04f122a7cf1915

See more details on using hashes here.

File details

Details for the file urh-2.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 811f46f4146cad0ee89e4a7c7b559e6741af0cc8f299d15ac63a5854b2f721e5
MD5 55c4c24d697bc3a141105009448cf437
BLAKE2b-256 6d38626a149b85a68bdecfbc79b52f7618b1bd1f0c9f1fa9800a4a987751b8a4

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