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

Uploaded Source

Built Distributions

urh-2.9.1-cp39-cp39-manylinux2014_x86_64.whl (28.0 MB view details)

Uploaded CPython 3.9

urh-2.9.1-cp38-cp38-manylinux2014_x86_64.whl (28.2 MB view details)

Uploaded CPython 3.8

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m Windows x86

urh-2.9.1-cp37-cp37m-manylinux2014_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.7m

urh-2.9.1-cp37-cp37m-macosx_10_14_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

urh-2.9.1-cp36-cp36m-manylinux2014_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.6m

urh-2.9.1-cp35-cp35m-manylinux2014_x86_64.whl (27.4 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: urh-2.9.1.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.7.9

File hashes

Hashes for urh-2.9.1.tar.gz
Algorithm Hash digest
SHA256 b93df6f8c67bbb1c08d4b837aa3783f6fa79d2bd69cb725744f9e01bd81aefe2
MD5 4823e127a19bc4acb88d27fdddf77d6b
BLAKE2b-256 eaecf091b8dd7636c1999a0cef0d6d0c5fe011e12e9a4c1809526bfa58c39197

See more details on using hashes here.

File details

Details for the file urh-2.9.1-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: urh-2.9.1-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.0 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.9.1

File hashes

Hashes for urh-2.9.1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3a9127f199c61150560220ccac8f285aeeaece1d47c5cf0026f222f41fe12b9
MD5 354811de8022e385a07e72f0f7c85ee2
BLAKE2b-256 3d4eb087c2d4829885cd23dfc832bcaaf82e6ed8984a95bfb6a24b95cde77be4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.2 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.6

File hashes

Hashes for urh-2.9.1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf73f470e8824fecc6e219e0352e28ca6c3227e557427d5098f7aff7c0055154
MD5 70de1b123bdd87fb610bc1d3cfe5900d
BLAKE2b-256 767e269814c81dc3e768c491f2d5c572f1529f91795cbc638de87875dbf4cda1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-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.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.7.9

File hashes

Hashes for urh-2.9.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 670af78a0ac8da95427a162750db212bccd028deccf3a7ce949de3092ff56631
MD5 89cb02bb5ee807da9700c489002d86b6
BLAKE2b-256 790a634e1f10d59b9a3036997ff70d3bbf4b733aeced6537a8f7172ea5710e37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-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.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.7.9

File hashes

Hashes for urh-2.9.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 50db1c1ee1780495e6d9b42de4b573f85062ca591910fc8aa01f238781d2496a
MD5 cf5d6080546fd6b02abfc66636b56241
BLAKE2b-256 57e1711a0b3368a39417323ec94f399a2aae63e10d69a71b46cdb2633ba41145

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 27.5 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.7.9

File hashes

Hashes for urh-2.9.1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc77bc3b8a3b0f96c638f5ded118de40463e649e247d2436d05d1d4cff1a274d
MD5 01adb68f24b351a06bd731f2fcaf9dfb
BLAKE2b-256 dbeeb9220789e066e55e9cee436e89aa1776ad73f8a5d4cd73cf3bbfd26f5baf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.7.9

File hashes

Hashes for urh-2.9.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 b5f89402532d90172b37b90f593e644ac9eded0df59f30f977bad3d472bf43f6
MD5 834964b292eca16f8d2d1cf28da0c371
BLAKE2b-256 f8380b0c65fdce9c3f109de5cd0ad38bdc2502fa7bc4f6097f00cfaee9357e0c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 27.5 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.6.12

File hashes

Hashes for urh-2.9.1-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be02b16f0017866d11667d55c74934dbc7033c5a284ed534d1387eba5786c734
MD5 e4d95b6a107daf063dbe734364fdeb20
BLAKE2b-256 15b98c812176df9264c030a46ed19b26c7c53b0ce2456ceb35048402cf4bd109

See more details on using hashes here.

File details

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

File metadata

  • Download URL: urh-2.9.1-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 27.4 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.1 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.5.10

File hashes

Hashes for urh-2.9.1-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa2e95d9cd24da766b453772f8f4376079ff2e0eb2b81d1ffa678a2f4aef784e
MD5 6814b0d61d7175419b43e834ffb4e8b1
BLAKE2b-256 7d9f1bc4b0eb8ea0002d585605aa231bbf229ce96e187c99bfd38ea285560360

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