Skip to main content

Universal Radio Hacker: investigate wireless protocols like a boss

Project description

URH image

CI Code style: black 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. See below for OS specific 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

Installation with pipx

URH is available on PyPi so you can install it, for example, with pipx:

pipx 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.

Docker Images

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 12 when using the DMG available here.

With brew

URH is available as a homebrew formula so you can install it with

brew install urh

Running from source (OS-agnostic)

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

Uploaded Source

Built Distributions

urh-2.9.7-cp312-cp312-manylinux_2_28_x86_64.whl (22.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

urh-2.9.7-cp311-cp311-win_amd64.whl (10.9 MB view details)

Uploaded CPython 3.11 Windows x86-64

urh-2.9.7-cp311-cp311-win32.whl (10.1 MB view details)

Uploaded CPython 3.11 Windows x86

urh-2.9.7-cp311-cp311-manylinux_2_28_x86_64.whl (22.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

urh-2.9.7-cp311-cp311-macosx_10_9_universal2.whl (4.9 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

urh-2.9.7-cp310-cp310-manylinux_2_28_x86_64.whl (21.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

urh-2.9.7-cp39-cp39-manylinux_2_28_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

urh-2.9.7-cp38-cp38-manylinux_2_28_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

File details

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

File metadata

  • Download URL: urh-2.9.7.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for urh-2.9.7.tar.gz
Algorithm Hash digest
SHA256 b8ce59551cbfc6550e690a1c58b0ebeb7482d8f34e11761899eb825c54fd1557
MD5 7535e755606caad9fab4d9c784feaee7
BLAKE2b-256 8042707edc767d7867d1f272c9b82467fa9f97439c5be167d8104b1d94e53f7e

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2e56f0133031cb082dfca4803c7c30328882d9e5dd6470c352fb95d475418c18
MD5 fd2fcdd2282d9dc0e4bd679b7c193b27
BLAKE2b-256 a5dc7d94c55e56b42c2fa8496237ae66ecec24bafd0f2e45a413ba21b22c750b

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: urh-2.9.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 10.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for urh-2.9.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ce76be640002ebe068337b5def07c97945782eb2352696a2dc9aef0bdf4bc381
MD5 be38ea6ce25bf8606149e7157271cf3b
BLAKE2b-256 dac30ce0c9518383420ba7c208b858b2d52a0b53e94d7432b8ebe20929b6affa

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp311-cp311-win32.whl.

File metadata

  • Download URL: urh-2.9.7-cp311-cp311-win32.whl
  • Upload date:
  • Size: 10.1 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for urh-2.9.7-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 34b8502741221e8d0edafbc666778f83551dd180cab6c6c6e06cac71cf8e4d09
MD5 26aaeb4bedcad076d4ede73826c88c99
BLAKE2b-256 983eac7d400bd892a743e46fc6bbddf80b40f680281d2ad136bbedb3c1fe3b14

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 53054a5a8775b4b03bd4aada14f12b95635a877381eef365c5c57d3d94c5dcfa
MD5 48db38440a634a23b23ad5edce0ada6a
BLAKE2b-256 979c2470cf368f166b573e77c07494f77382af948b741599a35827c79f6a67e5

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 62f113150e52e927a11e06b2689e3327219d447c9059364d1cb67ce4729e57d1
MD5 8c7504939f95737589d4a489583bd24d
BLAKE2b-256 466e1e7f1a60317b9ae36518e2776020af260e192db7b01ee527526af46ce8d9

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6042c322a07f6b897352338db67dfbc260605dd472b58857261291539667a9a8
MD5 18926d34053aa511b7c38051220f10b9
BLAKE2b-256 87cb4670c8c7578011aeac3fa3e194716fc963b1d47fea437e67cdc75bdb658d

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 66758077f730f97c3756c3f027d06ea99c3d56220bf5bd7180036fa82ad3b09f
MD5 968a2aa010b1c7376755786d08fd97b5
BLAKE2b-256 8f2da689a2716b338b312b2300529929a2a682d41462ad5c4ac5002cca21c948

See more details on using hashes here.

File details

Details for the file urh-2.9.7-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for urh-2.9.7-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d6f9bea78f4d1bd6d1f7874b3c1df55f857774d13a14409e89aa79b6cc54943f
MD5 dcea0bc09b099758ddccbd99c62e72d3
BLAKE2b-256 578c27fb10b48d259cf413e17b19fe817afb185315cc107c7f51138fbf87c8db

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