From 4693278e0b249d3edb0556d507d8eeb6ee5d2c4b Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Sat, 6 Apr 2019 14:44:44 +0530 Subject: [PATCH 2/2] gnu: Add urh. * gnu/packages/ham-radio.scm (urh): New variable. --- gnu/packages/ham-radio.scm | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/gnu/packages/ham-radio.scm b/gnu/packages/ham-radio.scm index e9521032cc..58a8161851 100644 --- a/gnu/packages/ham-radio.scm +++ b/gnu/packages/ham-radio.scm @@ -20,12 +20,15 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (gnu packages algebra) + #:use-module (gnu packages check) #:use-module (gnu packages gtk) #:use-module (gnu packages libusb) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) #:use-module (gnu packages xml) #:use-module (guix build-system cmake) #:use-module (guix build-system python)) @@ -115,3 +118,68 @@ memory contents between them.") (description "@code{hackrf} provides drivers for HackRF, a general purpose software defined radio (SDR).") (license license:gpl2+))) + +(define-public urh + (package + (name "urh") + (version "2.5.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jopohl/urh") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "110fwlj2fw8jgrsgqfkha7lx8f06w0ymh51mgpckx8a0wycznhcy")))) + (build-system python-build-system) + (inputs + `(("hackrf" ,hackrf) + ("python-numpy" ,python-numpy) + ("python-psutil" ,python-psutil) + ("python-pyqt" ,python-pyqt) + ("python-pyzmq" ,python-pyzmq) + ("rtl-sdr" ,rtl-sdr))) + (native-inputs + `(("python-cython" ,python-cython) + ("python-pytest" ,python-pytest))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure-compiler + (lambda _ + ;; Use gcc as compiler + (substitute* "src/urh/dev/native/ExtensionHelper.py" + (("compiler = ccompiler\\.new_compiler\\(\\)\n" all) + (string-append + all " compiler.set_executables(compiler='gcc'," + " compiler_so='gcc', linker_exe='gcc', linker_so='gcc -shared')\n"))) + #t)) + (replace 'build + (lambda _ + (invoke "python" "setup.py" "build" "build_ext") + (invoke "python" "src/urh/cythonext/build.py"))) + (replace 'check + (lambda _ + ;; Run X server tests offscreen in headless mode + (setenv "QT_QPA_PLATFORM" "offscreen") + (setenv "HOME" "/tmp") + ;; Fix permissions + (with-directory-excursion "tests/data" + (for-each (lambda (file) + (chmod file #o755)) + (list "decode.py" "encode.py"))) + ;; Run tests + (invoke "pytest")))))) + (home-page "https://github.com/jopohl/urh") + (synopsis "Investigate unknown wireless protocols") + (description "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 an overview of your data, customizable +decodings to crack even sophisticated encodings like CC1101 data whitening, +assigning labels to reveal the logic of the protocol, a fuzzing component to +find security leaks, modulation support to inject data back into the system +and a simulation environment to perform stateful attacks.") + (license license:gpl3+))) -- 2.21.0