diff --git a/README.md b/README.md index c2fbad5bcd..4f72180777 100644 --- a/README.md +++ b/README.md @@ -6,33 +6,37 @@ [![Packaging status](https://repology.org/badge/tiny-repos/urh.svg)](https://repology.org/project/urh/versions) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/jopohl/urh.svg)](http://isitmaintained.com/project/jopohl/urh "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/jopohl/urh.svg)](http://isitmaintained.com/project/jopohl/urh "Percentage of issues still open") +[![Slack](https://img.shields.io/badge/chat-on%20slack-blue.svg?logo=slack)](https://join.slack.com/t/stralsundsecurity/shared_invite/enQtMjEwOTIxNzMzODc3LTk3NmE4MGVjYjEyYTMzYTdmN2RlNzUzYzg0NTNjNTQ2ODBkMzI3MDZlOWY3MjE4YjBkNTM4ZjJlNTJlZmJhNDg) 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 overview of your data +* __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 inject the data back into the system +* __modulation support__ to send the data back to the target * __simulation environment__ to perform stateful attacks -To get started, download the [official userguide (PDF)](https://github.com/jopohl/urh/releases/download/v2.0.0/userguide.pdf), watch the [demonstration videos (YouTube)](https://www.youtube.com/watch?v=kuubkTDAxwA&index=1&list=PLlKjreY6G-1EKKBs9sucMdk8PwzcFuIPB) -or check out the [wiki](https://github.com/jopohl/urh/wiki) for more information and supported devices. Scroll down this page to learn how to install URH on your system. +#### Getting started +In order to get started + - view the [installation instructions](#Installation) on this page, + - download the [official userguide (PDF)](https://github.com/jopohl/urh/releases/download/v2.0.0/userguide.pdf), + - watch the [demonstration videos (YouTube)](https://www.youtube.com/watch?v=kuubkTDAxwA&index=1&list=PLlKjreY6G-1EKKBs9sucMdk8PwzcFuIPB), + - check out the [wiki](https://github.com/jopohl/urh/wiki) for more information such as supported devices or + - read some [articles about URH](#Articles) for inspiration. -Want to stay in touch? [![Slack](https://img.shields.io/badge/chat-on%20slack-blue.svg?logo=slack)](https://join.slack.com/t/stralsundsecurity/shared_invite/enQtMjEwOTIxNzMzODc3LTk3NmE4MGVjYjEyYTMzYTdmN2RlNzUzYzg0NTNjNTQ2ODBkMzI3MDZlOWY3MjE4YjBkNTM4ZjJlNTJlZmJhNDg) +If URH is useful for you, please consider giving this repository a :star: or [make donation via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6WDFF59DL56Z2). We appreciate your support! -If you find URH useful, please consider giving this repository a :star: or even [donate via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6WDFF59DL56Z2). We appreciate your support! +Want to stay in touch? :speech_balloon: [Join our Slack channel!](https://join.slack.com/t/stralsundsecurity/shared_invite/enQtMjEwOTIxNzMzODc3LTk3NmE4MGVjYjEyYTMzYTdmN2RlNzUzYzg0NTNjNTQ2ODBkMzI3MDZlOWY3MjE4YjBkNTM4ZjJlNTJlZmJhNDg) -If you use URH in your research paper, please cite [this](https://www.usenix.org/conference/woot18/presentation/pohl) WOOT'18 paper, or directly use the following BibTeX entry. -
- - BibTeX entry for citing URH - + +#### Citing URH +We encourage researchers who work with URH to cite [this](https://www.usenix.org/conference/woot18/presentation/pohl) WOOT'18 paper or directly use the following BibTeX entry. - ```latex + ```latex @inproceedings {220562, author = {Johannes Pohl and Andreas Noack}, title = {Universal Radio Hacker: A Suite for Analyzing and Attacking Stateful Wireless Protocols}, @@ -43,9 +47,8 @@ url = {https://www.usenix.org/conference/woot18/presentation/pohl}, publisher = {{USENIX} Association}, } ``` -
-# Installation +## 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](#windows) @@ -60,22 +63,22 @@ Below you find more specific installation instructions for: - [Running from source](#running-from-source) -## Windows -On Windows, URH can be installed with it's [MSI Installer](https://github.com/jopohl/urh/releases). No further dependencies are required. +### Windows +On Windows, URH can be installed with it [MSI Installer](https://github.com/jopohl/urh/releases). 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](https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows). +If you get an error about missing ```api-ms-win-crt-runtime-l1-1-0.dll```, run Windows Update or directly install [KB2999226](https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows). -## Linux -### Install via Package Manager +### Linux +#### 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. -### Generic Installation with pip (Ubuntu/Debian) +#### Generic Installation with pip (Ubuntu/Debian) URH you can also be installed with using ```python3 -m pip install urh```. In case you are running __Ubuntu__ or __Debian__ read on for more specific instructions. -In order to use native device backends, make sure you install the __-dev__ package for your desired SDRs, that is ``` libairspy-dev ```, ``` libhackrf-dev ```, ``` librtlsdr-dev ```, ``` libuhd-dev ```. +In order to use native device backends, make sure you install the __-dev__ package for your desired SDRs, that is ```libairspy-dev```, ```libhackrf-dev```, ```librtlsdr-dev```, ```libuhd-dev```. -If your device does not have a ``` -dev ``` package, e.g. LimeSDR, you need to manually create a symlink to the ``` .so ```, like this: +If your device does not have a ```-dev``` package, e.g. LimeSDR, you need to manually create a symlink to the ```.so```, like this: ```bash sudo ln -s /usr/lib/x86_64-linux-gnu/libLimeSuite.so.17.02.2 /usr/lib/x86_64-linux-gnu/libLimeSuite.so ``` @@ -88,33 +91,33 @@ sudo apt-get install python3-numpy python3-psutil python3-zmq python3-pyqt5 g++ sudo pip3 install urh ``` -### Docker Image +#### Docker Image The official URH docker image is available [here](https://hub.docker.com/r/jopohl/urh/). -## MacOS -### Using DMG +### MacOS +#### Using DMG It is recommended to use __at least macOS 10.14__ when using the DMG available [here](https://github.com/jopohl/urh/releases). -### With pip +#### With pip 1. Install [Python 3 for Mac OS X](https://www.python.org/downloads/mac-osx/). _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 +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. +3. In a terminal, type: ```pip3 install urh```. +4. Type ```urh``` in a terminal to get it started. -## Update your installation -### Updating with pip -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 ```. +### Update your installation +#### Updating with pip +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 ```. -### Updating with MSI -If you experience issues after updating URH using the ``` .msi ``` installer on Windows, please perform a __full uninstallation__. That is, uninstall URH via Windows and after that remove the installation folder (something like ``` C:\Program Files\Universal Radio Hacker ```). Now, install the new version using the recent ```.msi ```. +#### Updating with MSI +If you experience issues after updating URH using the ```.msi``` installer on Windows, please perform a __full uninstallation__. That is, uninstall URH via Windows and after that remove the installation folder (something like ```C:\Program Files\Universal Radio Hacker```). Now, install the new version using the recent ```.msi```. -## Running from source +### Running from source If you like to live on bleeding edge, you can run URH from source. -### Without installation +#### Without installation To execute the Universal Radio Hacker without installation, just run: ```bash git clone https://github.com/jopohl/urh/ @@ -124,8 +127,8 @@ cd urh/src/urh 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 ```. +#### 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: ```bash git clone https://github.com/jopohl/urh/ @@ -133,7 +136,7 @@ cd urh python setup.py install ``` -And start the application by typing ``` urh ``` in a terminal. +And start the application by typing ```urh``` in a terminal. ## Articles ### Hacking stuff with URH diff --git a/src/urh/cythonext/analyze.py b/src/urh/cythonext/analyze.py index cf77684a2f..37ee5b6590 100644 --- a/src/urh/cythonext/analyze.py +++ b/src/urh/cythonext/analyze.py @@ -1,7 +1,14 @@ from subprocess import call, Popen MODULES = ["path_creator", "signal_functions", "util", "auto_interpretation"] +COMPILER_DIRECTIVES = {'language_level': 3, + 'cdivision': True, + 'wraparound': False, + 'boundscheck': False, + 'initializedcheck': False, + } for module in MODULES: - call(["cython", "-a", "--cplus", "-3", module + ".pyx"]) + call(["cython", "-a", "-X", ",".join("{}={}".format(key, val) for key, val in COMPILER_DIRECTIVES.items()), + "--cplus", "-3", module + ".pyx"]) Popen(["firefox", module + ".html"])