Skip to main content

Universal Radio Hacker: investigate wireless protocols like a boss

Project description

URH image

Build Status 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 to perform 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.8.8.tar.gz (3.0 MB view details)

Uploaded Source

Built Distributions

urh-2.8.8-cp38-cp38-manylinux2014_x86_64.whl (27.0 MB view details)

Uploaded CPython 3.8

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m Windows x86

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

Uploaded CPython 3.7m

urh-2.8.8-cp37-cp37m-macosx_10_14_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: urh-2.8.8.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.46.0 CPython/3.7.7

File hashes

Hashes for urh-2.8.8.tar.gz
Algorithm Hash digest
SHA256 8c05637f7090958a03b3c67cb824252fa8a3677622f0c9e60aac91f0d0af07ca
MD5 373fd89a2d5acb768535dcc6e4f1b8dd
BLAKE2b-256 ef9cb023e69e2de551fe2250d2e374a62e41719d6bb491f96c6bc9c689fb1d28

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 27.0 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.46.0 CPython/3.8.2

File hashes

Hashes for urh-2.8.8-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 85749c0cd8c4e8c6394d37604ba238f13e67b46f5ca7915b3f4915d9340b05a8
MD5 8bae80892aee3e9f80c89575b275fba4
BLAKE2b-256 9ec124c0f577f5779cc62d5590c06bac932f327652264d1abb1af36da1019198

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-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.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for urh-2.8.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 82cdc8381dd1de9ae070dd73c1c96ecfc2bb474674f7cbdd5eae211b419f196c
MD5 448f2b1fce9ccf96d71894b283c3432c
BLAKE2b-256 af9afdbc8df6052dff673d60da1d1017afa0ef47eea946953fdde1febed6ccb2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-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.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for urh-2.8.8-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 f83e5b0cc7468abed5453c372b2c1ee67edda000a08e3495691860e78520fd39
MD5 30799e2c530a39a9626f3e40b96a1f35
BLAKE2b-256 897313f88bc29891c35d851f4fd320e46b786092a2cfd5ec31e2dc2e4c49cea0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-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.46.0 CPython/3.7.7

File hashes

Hashes for urh-2.8.8-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50147441da81c57ea216f8e159833d44c38950285de8fb0320fd3b9939922c97
MD5 9807d57b505fe8527fa60d228e0f4946
BLAKE2b-256 bf6b392c371068b4491b8432f6ebf87645997a352d06e811c814720ce2d8cb7b

See more details on using hashes here.

File details

Details for the file urh-2.8.8-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: urh-2.8.8-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for urh-2.8.8-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c8b39dff69c073dbd8ae79b3811a9c994bf8040120eaeaf00b8f34ea8b8108e7
MD5 9755ca240cd3866f0d2de46796e4af54
BLAKE2b-256 f3409fd5352d68fc45af50c697d1e7f5c32c2bdac5bd92633f06ea0b0ff66f2b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-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.46.0 CPython/3.6.10

File hashes

Hashes for urh-2.8.8-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb28078f9a4a3192194a40928ec584f895ca2257851c2df3c79756ba2cce7c70
MD5 f6d32f83a3d34fa19a429a7622802917
BLAKE2b-256 3585c676529fb6676b6ec7b0094dac516baa8e73f88bac66c66e13288bc31ef4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.8.8-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.46.0 CPython/3.5.9

File hashes

Hashes for urh-2.8.8-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6f530fb932c7a8dff0541c0408c541cf9c7eec247f97a3f163c5f2e20fe065d
MD5 1ce47e4739d124dd32fc62fc6d5ead84
BLAKE2b-256 0c8e2b9e5bf971adcece2d4feda179dc2f48e8b40081999642b6b7a5994f3fea

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