diff options
Diffstat (limited to 'gnu/packages/cybersecurity.scm')
-rw-r--r-- | gnu/packages/cybersecurity.scm | 106 |
1 files changed, 86 insertions, 20 deletions
diff --git a/gnu/packages/cybersecurity.scm b/gnu/packages/cybersecurity.scm index 9ec0480515..0801c00c4f 100644 --- a/gnu/packages/cybersecurity.scm +++ b/gnu/packages/cybersecurity.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 c4droid <c4droid@foxmail.com> +;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,10 +21,14 @@ (define-module (gnu packages cybersecurity) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cmake) #:use-module (guix build-system python) + #:use-module (gnu packages cpp) #:use-module (gnu packages engineering) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages python-crypto) @@ -32,19 +37,81 @@ #:use-module (gnu packages bioinformatics) ;python-intervaltree #:use-module (gnu packages emulators)) +(define-public blacksmith + (package + (name "blacksmith") + (version "0.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/comsec-group/blacksmith") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kyp71wndf527dgza5iks5m5vj543mvxp5w7cjd8x0pilmd1xrls")) + (modules '((guix build utils))) + (snippet `(begin + (delete-file-recursively "external") + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(external\\)") "") + (("[ \t]*FetchContent_MakeAvailable\\(asmjit\\)") + (string-append + "find_package(asmjit)\n" + "find_package(nlohmann_json)"))))))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test-suite + #:imported-modules + ((guix build copy-build-system) + ,@%cmake-build-system-modules) + #:modules + (((guix build copy-build-system) #:prefix copy:) + (guix build cmake-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-build + (lambda _ + (substitute* "CMakeLists.txt" + ;; Use default C++ standard instead. + (("cxx_std_17") "") + ;; This project tries to link argagg library, which doesn't + ;; exist, as argagg project is a single header file. + (("argagg") "")))) + (replace 'install + (lambda args + (apply (assoc-ref copy:%standard-phases 'install) + #:install-plan + '(("." "bin" #:include ("blacksmith")) + ("." "lib" #:include-regexp ("\\.a$"))) + args)))))) + (native-inputs + (list pkg-config)) + (inputs + (list argagg asmjit json-modern-cxx)) + (home-page "https://comsec.ethz.ch/research/dram/blacksmith") + (synopsis "Rowhammer fuzzer with non-uniform and frequency-based patterns") + (description + "Blacksmith is an implementation of Rowhammer fuzzer that crafts novel +non-uniform Rowhammer access patterns based on the concepts of frequency, +phase, and amplitude. It is able to bypass recent @acronym{TRR, Target Row +Refresh}in-DRAM mitigations effectively and as such can trigger bit flips.") + (license license:expat))) + (define-public ropgadget (package (name "ropgadget") - (version "6.5") + (version "6.6") (source (origin (method url-fetch) (uri (pypi-uri "ROPGadget" version)) (sha256 - (base32 "0p4h8xi27xcicz8sq6xi40hbj99mcsnnla6ar2r17vqapbr5c3jc")))) + (base32 "08ms7x4af07970ij9899l75sghnxsa7xyx73gkn6gv0l05p1hqfw")))) (build-system python-build-system) (propagated-inputs - `(("python-capstone" ,python-capstone))) + (list python-capstone)) (home-page "http://shell-storm.org/project/ROPgadget/") (synopsis "Semiautomatic return oriented programming") (description @@ -68,23 +135,22 @@ chains of gadgets to execute system calls.") (arguments '(#:tests? #f)) ;XXX: needs a specific version of unicorn (propagated-inputs - `(("capstone" ,capstone) - ("python-dateutil" ,python-dateutil) - ("python-intervaltree" ,python-intervaltree) - ("python-mako" ,python-mako) - ("python-packaging" ,python-packaging) - ("python-paramiko" ,python-paramiko) - ("python-psutil" ,python-psutil) - ("python-pyelftools" ,python-pyelftools) - ("python-pygments" ,python-pygments) - ("python-pyserial" ,python-pyserial) - ("python-pysocks" ,python-pysocks) - ("python-requests" ,python-requests) - ("ropgadget" ,ropgadget) - ("python-six" ,python-six) - ("python-sortedcontainers" - ,python-sortedcontainers) - ("unicorn" ,unicorn))) + (list capstone + python-dateutil + python-intervaltree + python-mako + python-packaging + python-paramiko + python-psutil + python-pyelftools + python-pygments + python-pyserial + python-pysocks + python-requests + ropgadget + python-six + python-sortedcontainers + unicorn)) (home-page "https://github.com/Gallopsled/pwntools") (synopsis "Capture-the-flag (CTF) framework and exploit development library") |