gnu: tunctl: Fix source URI.
[jackhill/guix/guix.git] / gnu / packages / password-utils.scm
CommitLineData
de63b20e
SS
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
e1a94fe0 3;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
7e9b07bd 4;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
3d4f9d5c 5;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
c285a400
JT
6;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
7;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
6d32dd8c 8;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
55541556 9;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
f339f277 10;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
60628f54 11;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
9081333b 12;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
a1714ff5 13;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
e57c7dd7 14;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
7f7fadb5 15;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
763269f9 16;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
dcf12172 17;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
c06bf6a3 18;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
649eb8b5 19;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
d4e0ebd0 20;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
20b51b17 21;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
4715f92e 22;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
037d1851 23;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
747aa6c4 24;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
872da48e 25;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
f59ea3a7 26;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
d823fd96 27;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
de63b20e
SS
28;;;
29;;; This file is part of GNU Guix.
30;;;
31;;; GNU Guix is free software; you can redistribute it and/or modify it
32;;; under the terms of the GNU General Public License as published by
33;;; the Free Software Foundation; either version 3 of the License, or (at
34;;; your option) any later version.
35;;;
36;;; GNU Guix is distributed in the hope that it will be useful, but
37;;; WITHOUT ANY WARRANTY; without even the implied warranty of
38;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39;;; GNU General Public License for more details.
40;;;
41;;; You should have received a copy of the GNU General Public License
42;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
43
44(define-module (gnu packages password-utils)
45 #:use-module ((guix licenses) #:prefix license:)
e8647227 46 #:use-module (guix build-system cmake)
de63b20e 47 #:use-module (guix build-system gnu)
f59ea3a7 48 #:use-module (guix build-system trivial)
de63b20e 49 #:use-module (guix download)
7d4b3e1e 50 #:use-module (guix git-download)
e8647227 51 #:use-module (guix packages)
53dcbbec 52 #:use-module (gnu packages)
c285a400 53 #:use-module (gnu packages admin)
81635fb6 54 #:use-module (gnu packages aidc)
54b41d2d 55 #:use-module (gnu packages authentication)
c285a400 56 #:use-module (gnu packages base)
ac257f12 57 #:use-module (gnu packages check)
e8647227 58 #:use-module (gnu packages compression)
da1b30bd 59 #:use-module (gnu packages crypto)
d823fd96 60 #:use-module (gnu packages cryptsetup)
da1b30bd 61 #:use-module (gnu packages curl)
7d4b3e1e 62 #:use-module (gnu packages file)
a1714ff5 63 #:use-module (gnu packages freedesktop)
7d4b3e1e 64 #:use-module (gnu packages gettext)
f339f277 65 #:use-module (gnu packages glib)
e8647227 66 #:use-module (gnu packages gnupg)
0050876b 67 #:use-module (gnu packages gtk)
dd24e906 68 #:use-module (gnu packages guile)
eb28a777 69 #:use-module (gnu packages kerberos)
0751fddd 70 #:use-module (gnu packages libffi)
c285a400 71 #:use-module (gnu packages linux)
3d4f9d5c 72 #:use-module (gnu packages man)
eb28a777 73 #:use-module (gnu packages multiprecision)
7e9b07bd 74 #:use-module (gnu packages ncurses)
aff0cce9 75 #:use-module (gnu packages nss)
c10aa278 76 #:use-module (gnu packages opencl)
eb4ffe9b 77 #:use-module (gnu packages perl)
7e9b07bd 78 #:use-module (gnu packages pkg-config)
3d4f9d5c 79 #:use-module (gnu packages python)
20b51b17 80 #:use-module (gnu packages python-web)
44d10b1f 81 #:use-module (gnu packages python-xyz)
24adcbab 82 #:use-module (gnu packages readline)
e57c7dd7 83 #:use-module (gnu packages ruby)
24adcbab 84 #:use-module (gnu packages security-token)
177475cf 85 #:use-module (gnu packages suckless)
54b41d2d 86 #:use-module (gnu packages tcl)
7e9b07bd 87 #:use-module (gnu packages tls)
e8647227 88 #:use-module (gnu packages qt)
c285a400 89 #:use-module (gnu packages version-control)
7d4b3e1e 90 #:use-module (gnu packages wxwidgets)
dd24e906 91 #:use-module (gnu packages xdisorg)
3d4f9d5c 92 #:use-module (gnu packages xorg)
d4e0ebd0 93 #:use-module (gnu packages xml)
3d4f9d5c 94 #:use-module (guix build-system python))
de63b20e
SS
95
96(define-public pwgen
97 (package
98 (name "pwgen")
5a2c4b3b 99 (version "2.08")
de63b20e
SS
100 (source
101 (origin
102 (method url-fetch)
de67e922
LF
103 (uri (string-append "mirror://sourceforge/pwgen/pwgen/" version
104 "/pwgen-" version ".tar.gz"))
de63b20e 105 (sha256
5a2c4b3b 106 (base32 "0yy90pqrr2pszzhb5hxjishq9qc7dqd290amiibqx9fm1b9kvc6s"))))
de63b20e
SS
107 (build-system gnu-build-system)
108 (arguments
109 `(#:tests? #f)) ; no test suite
110 (home-page "http://pwgen.sourceforge.net/")
111 (synopsis "Password generator")
112 (description "Pwgen generates passwords which can be easily memorized by a
113human.")
114 (license license:gpl2)))
e8647227 115
99672f7b
EF
116(define-public keepassxc
117 (package
118 (name "keepassxc")
71ffa528 119 (version "2.5.3")
99672f7b
EF
120 (source
121 (origin
122 (method url-fetch)
e2d14ee9 123 (uri (string-append "https://github.com/keepassxreboot/keepassxc"
99672f7b
EF
124 "/releases/download/" version "/keepassxc-"
125 version "-src.tar.xz"))
126 (sha256
71ffa528 127 (base32 "1sx647mp1xikig50p9bb6vxv18ymdfj3wkxj6qfdr1zfcv7gn005"))))
99672f7b 128 (build-system cmake-build-system)
da1b30bd 129 (arguments
24adcbab 130 '(#:configure-flags '("-DWITH_XC_ALL=YES"
0f3794fb 131 "-DWITH_XC_UPDATECHECK=NO")))
99672f7b 132 (inputs
3374dcc7
EF
133 `(("argon2" ,argon2)
134 ("libgcrypt" ,libgcrypt)
0e5d66ab 135 ("libsodium" ,libsodium) ; XC_BROWSER
24adcbab 136 ("libyubikey" ,libyubikey) ; XC_YUBIKEY
99672f7b
EF
137 ("libxi" ,libxi)
138 ("libxtst" ,libxtst)
0f3794fb 139 ("qrencode" ,qrencode)
99672f7b 140 ("qtbase" ,qtbase)
0f3794fb 141 ("qtsvg" ,qtsvg)
99672f7b 142 ("qtx11extras" ,qtx11extras)
24adcbab
EF
143 ("quazip" ,quazip) ; XC_KEESHARE
144 ("readline" ,readline)
145 ("yubikey-personalization" ,yubikey-personalization) ; XC_YUBIKEY
99672f7b
EF
146 ("zlib" ,zlib)))
147 (native-inputs
148 `(("qttools" ,qttools)))
149 (home-page "https://www.keepassxc.org")
150 (synopsis "Password manager")
151 (description "KeePassXC is a password manager or safe which helps you to
152manage your passwords in a secure way. You can put all your passwords in one
153database, which is locked with one master key or a key-file which can be stored
154on an external storage device. The databases are encrypted using the
155algorithms AES or Twofish.")
24adcbab
EF
156 ;; While various parts of the software are licensed under different licenses,
157 ;; the combined work falls under the GPLv3.
99672f7b
EF
158 (license license:gpl3)))
159
e8647227
EF
160(define-public keepassx
161 (package
162 (name "keepassx")
a00fbe8a 163 (version "2.0.3")
e8647227
EF
164 (source
165 (origin
166 (method url-fetch)
e5be0e01
EF
167 (uri (string-append "https://www.keepassx.org/releases/" version
168 "/keepassx-" version ".tar.gz"))
e8647227 169 (sha256
2c5e4976 170 (base32
a00fbe8a 171 "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3"))))
e8647227
EF
172 (build-system cmake-build-system)
173 (inputs
174 `(("libgcrypt" ,libgcrypt)
a00fbe8a 175 ("libxi" ,libxi)
e8647227
EF
176 ("libxtst" ,libxtst)
177 ("qt" ,qt-4)))
178 (native-inputs
179 `(("zlib" ,zlib)))
180 (home-page "https://www.keepassx.org")
181 (synopsis "Password manager")
182 (description "KeePassX is a password manager or safe which helps you to
183manage your passwords in a secure way. You can put all your passwords in one
184database, which is locked with one master key or a key-file which can be stored
185on an external storage device. The databases are encrypted using the
186algorithms AES or Twofish.")
187 ;; Non functional parts use various licences.
b7ac10e6
EF
188 (license license:gpl3)
189 (properties `((superseded . ,keepassxc)))))
dd24e906 190
7d4b3e1e
TG
191(define-public pwsafe
192 (package
193 (name "pwsafe")
747aa6c4
TG
194 (version "3.50.0")
195 (home-page "https://www.pwsafe.org/")
7d4b3e1e
TG
196 (source
197 (origin
198 (method git-fetch)
199 (uri (git-reference
200 (url "https://github.com/pwsafe/pwsafe.git")
201 (commit version)))
747aa6c4
TG
202 (sha256
203 (base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs"))
204 (file-name (git-file-name name version))))
7d4b3e1e 205 (build-system cmake-build-system)
50bfb70b
EF
206 (native-inputs
207 `(("gettext" ,gettext-minimal)
208 ("gtest" ,googletest)
209 ("perl" ,perl)
210 ("zip" ,zip)))
7d4b3e1e
TG
211 (inputs `(("curl" ,curl)
212 ("file" ,file)
7d4b3e1e
TG
213 ("libuuid" ,util-linux)
214 ("libxt" ,libxt)
215 ("libxtst" ,libxtst)
216 ("openssl" ,openssl)
217 ("qrencode" ,qrencode)
218 ("wxwidgets" ,wxwidgets)
219 ("xerces-c" ,xerces-c)))
220 (arguments '(#:configure-flags (list "-DNO_GTEST=YES")
221 #:phases (modify-phases %standard-phases
222 (add-after 'unpack 'add-gtest
223 (lambda* (#:key inputs #:allow-other-keys)
224 (chmod "CMakeLists.txt" #o644)
225 (let ((cmake-port (open-file "CMakeLists.txt"
226 "a")))
227 (display "find_package(GTest)
228add_subdirectory(src/test)\n" cmake-port)
229 (close cmake-port)
230 #t)))
231 (add-after 'add-gtest 'patch-executables
232 (lambda* (#:key inputs #:allow-other-keys)
233 (chmod "src/test/OSTest.cpp" #o644)
234 (substitute* "src/os/unix/media.cpp"
235 (("/usr/bin/file")
236 (string-append (assoc-ref inputs "file")
237 "/bin/file")))
238 #t)))))
239 (synopsis "Password safe with automatic input and key generation")
240 (description "pwsafe is a password manager originally designed by Bruce
241Schneier. It offers a simple UI to manage passwords for different services.
242There are other programs that support the file format on different
243platforms.")
244 (license license:artistic2.0)))
245
dd24e906
DT
246(define-public shroud
247 (package
248 (name "shroud")
7dff3225 249 (version "0.1.2")
dd24e906
DT
250 (source (origin
251 (method url-fetch)
a652eb93 252 (uri (string-append "https://files.dthompson.us/shroud/shroud-"
dd24e906
DT
253 version ".tar.gz"))
254 (sha256
255 (base32
7dff3225 256 "1l2shrhvcwfzkar9qiwb75nhcqmx25iz55lzmz0c187nbjhqzi9p"))))
dd24e906 257 (build-system gnu-build-system)
7dff3225
AS
258 (native-inputs
259 `(("pkg-config" ,pkg-config)))
df0e8a23 260 (arguments
7dff3225
AS
261 `(#:modules ((guix build gnu-build-system)
262 (guix build utils)
263 (ice-9 popen)
264 (ice-9 rdelim))
265 #:phases
df0e8a23
SB
266 (modify-phases %standard-phases
267 (add-after 'install 'wrap-shroud
7dff3225 268 (lambda* (#:key inputs outputs #:allow-other-keys)
df0e8a23 269 (let* ((out (assoc-ref outputs "out"))
7dff3225
AS
270 (guile (assoc-ref inputs "guile"))
271 (effective (read-line
272 (open-pipe* OPEN_READ
273 (string-append guile "/bin/guile")
274 "-c" "(display (effective-version))")))
275 (ccachedir (string-append out
276 "/lib/guile/" effective "/site-ccache"))
df0e8a23
SB
277 (prog (string-append out "/bin/shroud")))
278 (wrap-program prog
279 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))
280 #t))))))
dd24e906 281 (inputs
7dff3225 282 `(("guile" ,guile-2.2)
dd24e906
DT
283 ("gnupg" ,gnupg)
284 ("xclip" ,xclip)))
285 (synopsis "GnuPG-based secret manager")
286 (description "Shroud is a simple secret manager with a command line
287interface. The password database is stored as a Scheme s-expression and
288encrypted with a GnuPG key. Secrets consist of an arbitrary number of
289key/value pairs, making Shroud suitable for more than just password storage.
290For copying and pasting secrets into web browsers and other graphical
291applications, there is xclip integration." )
59d915ac 292 (home-page "https://dthompson.us/projects/shroud.html")
dd24e906 293 (license license:gpl3+)))
7e9b07bd
AP
294
295(define-public yapet
296 (package
297 (name "yapet")
988f53e1
TGR
298 (version "2.3")
299 (source
300 (origin
301 (method url-fetch)
302 (uri (string-append "https://yapet.guengel.ch/downloads/yapet-"
303 version ".tar.xz"))
304 (sha256
305 (base32 "1fl4s7v1psl52ndd6i7716i9f493aj8ipl6lgmraadnn5h26l3pm"))))
7e9b07bd
AP
306 (build-system gnu-build-system)
307 (inputs
988f53e1
TGR
308 `(("argon2" ,argon2)
309 ("ncurses" ,ncurses)
7e9b07bd
AP
310 ("openssl" ,openssl)))
311 (native-inputs
988f53e1
TGR
312 `(("cppunit" ,cppunit)
313 ("pkg-config" ,pkg-config)))
7e9b07bd
AP
314 (synopsis "Yet Another Password Encryption Tool")
315 (description "YAPET is a text based password manager using the Blowfish
316encryption algorithm. Because of its small footprint and very few library
317dependencies, it is suited for installing on desktop and server systems alike.
318The text based user interface allows you to run YAPET easily in a Secure Shell
319session. Two companion utilities enable users to convert CSV files to YAPET
320and vice versa.")
321 (home-page "http://www.guengel.ch/myapps/yapet/")
322 (license license:gpl3+)))
72029c8b
SB
323
324(define-public cracklib
325 (package
326 (name "cracklib")
9081333b
TGR
327 (version "2.9.7")
328 (source
329 (origin
330 (method url-fetch)
331 (uri (string-append "https://github.com/cracklib/cracklib/"
332 "releases/download/v" version "/"
333 "cracklib-" version ".tar.bz2"))
334 (sha256
335 (base32 "1rimpjsdnmw8f5b7k558cic41p2qy2n2yrlqp5vh7mp4162hk0py"))))
72029c8b 336 (build-system gnu-build-system)
27faad22
FP
337 (arguments
338 `(#:phases
339 (modify-phases %standard-phases
340 (add-after 'install 'install-dict
341 (lambda* (#:key make-flags #:allow-other-keys)
342 (begin
343 (chmod (string-append "util/cracklib-format") #o755)
344 (apply invoke "make" "dict" make-flags)
345 #t))))))
72029c8b
SB
346 (synopsis "Password checking library")
347 (home-page "https://github.com/cracklib/cracklib")
348 (description
349 "CrackLib is a library containing a C function which may be used in a
b1a686bb
TGR
350@command{passwd}-like program. The idea is simple: try to prevent users from
351choosing passwords that could easily be guessed (or \"cracked\") by filtering
352them out, at the source.")
72029c8b 353 (license license:lgpl2.1)))
c2fb2076
SB
354
355(define-public libpwquality
356 (package
357 (name "libpwquality")
6bd856d1 358 (version "1.4.2")
c2fb2076
SB
359 (source (origin
360 (method url-fetch)
361 (uri (list
2f6a158b
TGR
362 (string-append "https://github.com/libpwquality/libpwquality"
363 "/releases/download/libpwquality-" version
364 "/libpwquality-" version ".tar.bz2")
c2fb2076
SB
365 (string-append "https://launchpad.net/libpwquality/trunk/"
366 version "/+download/"
2f6a158b 367 "libpwquality-" version ".tar.bz2")))
c2fb2076
SB
368 (sha256
369 (base32
6bd856d1 370 "13hw532fmzc5xjpy75d74rlfdlxf2a8ibb4hyy9c0s92wsgf0qsj"))))
c2fb2076
SB
371 (build-system gnu-build-system)
372 (arguments
373 ;; XXX: have RUNPATH issue.
374 '(#:configure-flags '("--disable-python-bindings")))
375 (inputs
376 `(("cracklib" ,cracklib)))
377 (synopsis "Password quality checker")
c18594dd 378 (home-page "https://github.com/libpwquality/libpwquality")
c2fb2076
SB
379 (description
380 "Libpwquality is a library for password quality checking and generation of
381random passwords that pass the checks.")
382 (license license:gpl2+)))
3d4f9d5c
CAW
383
384(define-public assword
385 (package
386 (name "assword")
d504de26 387 (version "0.11")
3d4f9d5c
CAW
388 (source (origin
389 (method url-fetch)
390 (uri (list
391 (string-append
392 "http://http.debian.net/debian/pool/main/a/assword/"
393 "assword_" version ".orig.tar.gz")))
394 (sha256
395 (base32
d504de26 396 "03gkb6kvsghznbcw5l7nmrc6mn3ixkjd5jcs96ni4zs9l47jf7yp"))))
3d4f9d5c 397 (arguments
f339f277 398 `(;; irritatingly, tests do run but not there are two problems:
3d4f9d5c
CAW
399 ;; - "import gtk" fails for unknown reasons here despite it the
400 ;; program working (indeed, I've found I have to do a logout and log
401 ;; back in in after an install order for some mumbo jumbo environment
402 ;; variable mess to work with pygtk and assword... what's up with
403 ;; that?)
404 ;; - even when the tests fail, they don't return a nonzero status,
405 ;; so I'm not sure how to programmatically get that information
406 #:tests? #f
407 #:phases
408 (modify-phases %standard-phases
0050876b
SB
409 (add-after 'install 'wrap-assword
410 (lambda* (#:key outputs #:allow-other-keys)
411 (let ((prog (string-append
412 (assoc-ref outputs "out")
413 "/bin/assword"))
414 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
415 (wrap-program prog
416 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
417 #t)))
3d4f9d5c
CAW
418 (add-after 'install 'manpage
419 (lambda* (#:key outputs #:allow-other-keys)
3692cffe
RW
420 ;; Without this substitution, it fails with
421 ;; ImportError: No module named 'gpg'
422 (substitute* "Makefile"
423 (("PYTHONPATH=.") ""))
424 (invoke "make" "assword.1")
425 (install-file
426 "assword.1"
427 (string-append (assoc-ref outputs "out") "/share/man/man1")))))))
3d4f9d5c
CAW
428 (build-system python-build-system)
429 (native-inputs
f339f277 430 `(("txt2man" ,txt2man)))
3d4f9d5c 431 (inputs
0050876b
SB
432 `(("gtk+" ,gtk+)
433 ("python-xdo" ,python-xdo)
f339f277
LF
434 ("python-gpg" ,python-gpg)
435 ("python-pygobject" ,python-pygobject)))
3d4f9d5c
CAW
436 (propagated-inputs
437 `(("xclip" ,xclip)))
438 (home-page "https://finestructure.net/assword/")
439 (synopsis "Password manager")
440 (description "assword is a simple password manager using GPG-wrapped
441JSON files. It has a command line interface as well as a very simple
442graphical interface, which can even \"type\" your passwords into
443any X11 window.")
444 (license license:gpl3+)))
c285a400
JT
445
446(define-public password-store
447 (package
448 (name "password-store")
3e9aa5cf 449 (version "1.7.3")
c285a400
JT
450 (source (origin
451 (method url-fetch)
452 (uri
453 (string-append "https://git.zx2c4.com/password-store/snapshot/"
454 name "-" version ".tar.xz"))
455 (sha256
456 (base32
3e9aa5cf 457 "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b"))))
c285a400
JT
458 (build-system gnu-build-system)
459 (arguments
460 '(#:phases
461 (modify-phases %standard-phases
462 (delete 'configure)
619f98fa 463 (delete 'build)
55541556
AG
464 (add-before 'install 'patch-system-extension-dir
465 (lambda* (#:key outputs #:allow-other-keys)
466 (let* ((out (assoc-ref outputs "out"))
467 (extension-dir (string-append out "/lib/password-store/extensions")))
468 (substitute* "src/password-store.sh"
469 (("^SYSTEM_EXTENSION_DIR=.*$")
470 ;; lead with whitespace to prevent 'make install' from
471 ;; overwriting it again
472 (string-append " SYSTEM_EXTENSION_DIR=\""
473 "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-"
474 extension-dir
475 "}\"\n"))))
476 #t))
177475cf
JL
477 (add-before 'install 'patch-passmenu-path
478 (lambda* (#:key inputs #:allow-other-keys)
479 (substitute* "contrib/dmenu/passmenu"
480 (("dmenu") (string-append (assoc-ref inputs "dmenu")
481 "/bin/dmenu"))
482 (("xdotool") (string-append (assoc-ref inputs "xdotool")
483 "/bin/xdotool")))
484 #t))
485 (add-after 'install 'install-passmenu
486 (lambda* (#:key outputs #:allow-other-keys)
e9ce6425
TGR
487 (let* ((out (assoc-ref outputs "out"))
488 (bin (string-append out "/bin")))
489 (install-file "contrib/dmenu/passmenu" bin)
177475cf 490 #t)))
61201e46
AG
491 (add-after 'install 'wrap-path
492 (lambda* (#:key inputs outputs #:allow-other-keys)
493 (let ((out (assoc-ref outputs "out"))
494 (path (map (lambda (pkg)
495 (string-append (assoc-ref inputs pkg) "/bin"))
81635fb6 496 '("coreutils" "getopt" "git" "gnupg" "qrencode"
61201e46
AG
497 "sed" "tree" "which" "xclip"))))
498 (wrap-program (string-append out "/bin/pass")
718c1278
MB
499 `("PATH" ":" prefix (,(string-join path ":"))))
500 #t)))
501 (add-after 'wrap-path 'install-shell-completions
502 (lambda* (#:key outputs #:allow-other-keys)
503 (let* ((out (assoc-ref outputs "out"))
504 (bashcomp (string-append out "/etc/bash_completion.d")))
505 ;; TODO: install fish and zsh completions.
506 (mkdir-p bashcomp)
507 (copy-file "src/completion/pass.bash-completion"
508 (string-append bashcomp "/pass"))
509 #t))))
c285a400 510 #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
a77f0360
CB
511 ;; Parallel tests may cause a race condition leading to a
512 ;; timeout in some circumstances.
513 #:parallel-tests? #f
c285a400 514 #:test-target "test"))
55541556
AG
515 (native-search-paths
516 (list (search-path-specification
517 (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR")
869a4c0f 518 (separator #f) ;single entry
55541556 519 (files '("lib/password-store/extensions")))))
61201e46 520 (inputs
177475cf
JL
521 `(("dmenu" ,dmenu)
522 ("getopt" ,util-linux)
61201e46
AG
523 ("git" ,git)
524 ("gnupg" ,gnupg)
81635fb6 525 ("qrencode" ,qrencode)
61201e46
AG
526 ("sed" ,sed)
527 ("tree" ,tree)
528 ("which" ,which)
177475cf
JL
529 ("xclip" ,xclip)
530 ("xdotool" ,xdotool)))
62ab60aa 531 (home-page "https://www.passwordstore.org/")
c285a400
JT
532 (synopsis "Encrypted password manager")
533 (description "Password-store is a password manager which uses GnuPG to
534store and retrieve passwords. The tool stores each password in its own
535GnuPG-encrypted file, allowing the program to be simple yet secure.
536Synchronization is possible using the integrated git support, which commits
537changes to your password database to a git repository that can be managed
538through the pass command.")
539 (license license:gpl2+)))
6d32dd8c 540
54b41d2d
AG
541(define-public pass-otp
542 (package
543 (name "pass-otp")
544 (version "1.2.0")
545 (source
546 (origin
547 (method url-fetch)
548 (uri
549 (string-append "https://github.com/tadfisher/pass-otp/releases/"
550 "download/v" version "/pass-otp-" version ".tar.gz"))
551 (sha256
552 (base32
553 "0rrs3iazq80dn0wbl20xkh270428jd8l99m5gd7hl93s4r4sc82p"))))
554 (build-system gnu-build-system)
555 (arguments
556 '(#:make-flags
557 (let* ((out (assoc-ref %outputs "out"))
558 (bashcomp (string-append out "/etc/bash_completion.d")))
559 (list (string-append "PREFIX=" %output)
560 (string-append "BASHCOMPDIR=" bashcomp)))
561 #:phases
562 (modify-phases %standard-phases
563 (delete 'configure)
564 (add-after 'build 'patch-oath-path
565 (lambda* (#:key inputs #:allow-other-keys)
566 (substitute* "otp.bash"
567 (("^OATH=.*$")
568 (string-append
569 "OATH="
570 (assoc-ref inputs "oath-toolkit")
571 "/bin/oathtool\n")))
572 #t)))
573 #:test-target "test"))
574 (inputs
575 `(("oath-toolkit" ,oath-toolkit)))
576 (native-inputs
577 `(("password-store" ,password-store)
578 ("expect" ,expect)
579 ("git" ,git)
580 ("gnupg" ,gnupg)
581 ("which" ,which)))
582 (home-page "https://github.com/tadfisher/pass-otp")
583 (synopsis "Pass extension for managing one-time-password (OTP) tokens")
584 (description
585 "Pass OTP is an extension for password-store that allows adding
586one-time-password (OTP) secrets, generating OTP codes, and displaying secret
587key URIs using the standard otpauth:// scheme.")
588 (license license:gpl3+)))
589
872da48e
JM
590(define-public qtpass
591 (package
592 (name "qtpass")
593 (version "1.2.3")
594 (source
595 (origin
596 (method git-fetch)
597 (uri (git-reference
598 (url "https://github.com/IJHack/QtPass.git")
599 (commit (string-append "v" version))))
600 (file-name (git-file-name name version))
601 (sha256
602 (base32
603 "1vfhfyccrxq9snyvayqfzm5rqik8ny2gysyv7nipc91kvhq3bhky"))))
604 (build-system gnu-build-system)
605 (arguments
606 `(#:phases
607 (modify-phases %standard-phases
608 (replace 'configure
609 (lambda* (#:key inputs outputs #:allow-other-keys)
610 (let ((out (assoc-ref outputs "out")))
611 ;; lupdate/lrelease need to find qmake.
612 (setenv "QMAKE" "qmake")
613 ;; qmake needs to find lrelease/lupdate.
614 (invoke "qmake"
615 "QMAKE_LRELEASE=lrelease"
616 "QMAKE_LUPDATE=lupdate"
617 (string-append "PREFIX=" out)))))
618 (add-after 'configure 'reset-resource-timestamps
619 ;; Reset timestamps on localization files for a reproducible build.
620 (lambda _
621 (with-directory-excursion "localization"
622 (for-each (lambda (file)
623 (let* ((base (basename file ".qm"))
624 (src (string-append base ".ts"))
625 (st (stat src)))
626 (set-file-time file st)))
627 (find-files "." ".*\\.qm")))
628 #t))
629 (add-after 'install 'install-auxilliary
630 ;; Install man-page, icon and .desktop file.
631 (lambda* (#:key inputs outputs #:allow-other-keys)
632 (let* ((out (assoc-ref outputs "out"))
633 (applications (string-append out "/share/applications"))
634 (icons (string-append out "/share/icons/hicolor/scalable/apps"))
635 (man (string-append out "/share/man/man1")))
636 (install-file "qtpass.desktop" applications)
637 (install-file "artwork/icon.svg" icons)
638 (rename-file (string-append icons "/icon.svg")
639 (string-append icons "/qtpass-icon.svg"))
640 (install-file "qtpass.1" man)
641 #t)))
642 (add-before 'check 'check-setup
643 ;; Make Qt render "offscreen", required for tests.
644 (lambda _
645 (setenv "QT_QPA_PLATFORM" "offscreen")
646 #t)))))
647 (native-inputs
648 `(("qttools" ,qttools)))
649 (inputs
650 `(("qtbase" ,qtbase)
651 ("qtsvg" ,qtsvg)))
652 (home-page "https://qtpass.org")
653 (synopsis "GUI for password manager password-store")
654 (description
655 "Qt-based graphical user interface for the password manager
656password-store also known as pass. Can use either pass or gpg to interact
657with password-store files. Features configurable password generation,
658templates, clipboard handling, and per folder settings for multi-recipient
659encryption.")
660 (license license:gpl3+)))
661
f59ea3a7
TLC
662(define-public rofi-pass
663 (package
664 (name "rofi-pass")
665 (version "2.0.2")
666 (source
667 (origin
668 (method url-fetch)
669 (uri
670 (string-append "https://raw.githubusercontent.com/carnager/rofi-pass/"
671 version "/rofi-pass"))
672 (sha256
673 (base32 "0msldkndqp40nx1s5s7ggcr97ir4nshpmnyzvj5hqw1l7m3gvw6j"))
674 (file-name name)))
675 (build-system trivial-build-system)
676 (arguments
677 `(#:modules ((guix build utils))
678 #:builder
679 (begin
680 (use-modules (guix build utils))
681 (let ((source (string-append (assoc-ref %build-inputs "source")))
682 (script "rofi-pass")
683 (out (assoc-ref %outputs "out")))
684 (copy-file source script)
685 (chmod script #o555)
686 (install-file script (string-append out "/bin"))))))
687 (propagated-inputs
688 `(("password-store" ,password-store)
689 ("rofi" ,rofi)
690 ("xdotool" ,xdotool)))
691 (home-page "https://github.com/carnager/rofi-pass")
692 (synopsis "Rofi frontend for password-store")
693 (description "Rofi-pass provides a way to manipulate information stored
694using password-store through rofi interface:
695@enumerate
696@item open URLs of entries with hotkey;
697@item type any field from entry;
698@item auto-typing of user and/or password fields;
699@item auto-typing username based on path;
700@item auto-typing of more than one field, using the autotype entry;
701@item bookmarks mode (open stored URLs in browser, default: Alt+x).
702@end enumerate")
703 (license license:gpl3)))
704
6d32dd8c
LG
705(define-public argon2
706 (package
707 (name "argon2")
fe109349 708 (version "20190702")
6d32dd8c
LG
709 (source
710 (origin
c600cf2a
EF
711 (method git-fetch)
712 (uri (git-reference
713 (url "https://github.com/P-H-C/phc-winner-argon2")
714 (commit version)))
715 (file-name (git-file-name name version))
6d32dd8c
LG
716 (sha256
717 (base32
fe109349 718 "01rwanr4wmr9vm6c712x411wig543q195z2icn388z892a93lc7p"))))
6d32dd8c
LG
719 (build-system gnu-build-system)
720 (arguments
721 `(#:test-target "test"
fe109349
EF
722 #:make-flags (list "CC=gcc"
723 (string-append "PREFIX=" (assoc-ref %outputs "out"))
724 "LIBRARY_REL=lib"
725 (string-append "ARGON2_VERSION=" ,version)
726 "OPTTEST=1") ; disable CPU optimization
6d32dd8c
LG
727 #:phases
728 (modify-phases %standard-phases
fe109349 729 (delete 'configure)))) ; No configure script.
6d32dd8c
LG
730 (home-page "https://www.argon2.com/")
731 (synopsis "Password hashing library")
732 (description "Argon2 provides a key derivation function that was declared
733winner of the 2015 Password Hashing Competition.")
c06bf6a3
MB
734 ;; Argon2 is dual licensed under CC0 and ASL 2.0. Some of the source
735 ;; files are CC0 only; see README.md and LICENSE for details.
736 (license (list license:cc0 license:asl2.0))))
153e58c5 737
a1714ff5
JL
738(define-public pass-git-helper
739 (package
740 (name "pass-git-helper")
b70f9ad1 741 (version "1.1.0")
a1714ff5
JL
742 (source
743 (origin
df58cc9c
EF
744 (method git-fetch)
745 (uri (git-reference
746 (url "https://github.com/languitar/pass-git-helper")
b70f9ad1 747 (commit (string-append "v" version))))
df58cc9c 748 (file-name (git-file-name name version))
a1714ff5
JL
749 (sha256
750 (base32
b70f9ad1 751 "18nvwlp0w4aqj268wly60rnjzqw2d8jl0hbs6bkwp3hpzzz5g6yd"))))
a1714ff5
JL
752 (build-system python-build-system)
753 (arguments
754 `(#:phases
755 (modify-phases %standard-phases
756 (add-before 'build 'patch-pass-path
757 (lambda* (#:key inputs #:allow-other-keys)
758 (let* ((password-store (assoc-ref inputs "password-store"))
759 (pass (string-append password-store "/bin/pass")))
54bcc27f
EF
760 (substitute* '("passgithelper.py"
761 "test_passgithelper.py")
a1714ff5 762 (("'pass'") (string-append "'" pass "'")))
b70f9ad1 763 #t)))
54bcc27f 764 (replace 'check
b70f9ad1
EF
765 (lambda _
766 (setenv "HOME" (getcwd))
54bcc27f 767 (invoke "pytest"))))))
a1714ff5
JL
768 (inputs
769 `(("python-pyxdg" ,python-pyxdg)
770 ("password-store" ,password-store)))
b70f9ad1
EF
771 (native-inputs
772 `(("python-pytest" ,python-pytest)
773 ("python-pytest-mock" ,python-pytest-mock)))
a1714ff5
JL
774 (home-page "https://github.com/languitar/pass-git-helper")
775 (synopsis "Git credential helper interfacing with pass")
776 (description "pass-git-helper is a git credential helper which allows to
777use pass, the standard unix password manager, as the credential backend for
778your git repositories. This is achieved by explicitly defining mappings
779between hosts and entries in the password store.")
780 (license license:lgpl3+)))
eb28a777
EB
781
782(define-public john-the-ripper-jumbo
e57c7dd7 783 (let ((official-version "1.9.0")
eb28a777
EB
784 (jumbo-version "1"))
785 (package
786 (name "john-the-ripper-jumbo")
787 (version (string-append official-version "-" jumbo-version))
788 (source
789 (origin
790 (method url-fetch)
791 (uri (string-append "http://www.openwall.com/john/j/john-"
792 official-version "-jumbo-" jumbo-version ".tar.xz"))
793 (sha256
794 (base32
e57c7dd7 795 "0fvz3v41hnaiv1ggpxanfykyfjq79cwp9qcqqn63vic357w27lgm"))))
eb28a777 796 (build-system gnu-build-system)
e57c7dd7
EB
797 (native-inputs
798 `(("perl" ,perl)))
eb28a777
EB
799 (inputs
800 `(("gmp" ,gmp)
eb28a777
EB
801 ("libpcap" ,libpcap)
802 ("nss" ,nss)
1a58e1d4 803 ("openssl" ,openssl-1.0)
e57c7dd7
EB
804 ("python" ,python-2) ; For "python" and "python2" shebangs
805 ("ruby" ,ruby) ; For genincstats.rb
eb28a777
EB
806 ("zlib" ,zlib)))
807 (arguments
808 `(#:configure-flags
e57c7dd7
EB
809 (list "--with-systemwide"
810 ;; Do not test for instruction set in configure, and do not
811 ;; pass '-march=native' to gcc:
eb28a777 812 "--disable-native-tests"
e57c7dd7
EB
813 "--disable-native-march"
814 ,(string-append
815 "--enable-simd="
816 (let ((system (or (%current-target-system)
817 (%current-system))))
818 (cond
819 ((or (string-prefix? "x86_64" system)
820 (string-prefix? "i686" system)) "sse2")
821 ((string-prefix? "aarch" system) "neon")
822 (else "no")))))
eb28a777
EB
823 #:phases
824 (modify-phases %standard-phases
825 (add-before 'configure 'chdir-src
e57c7dd7 826 (lambda _ (chdir "src") #t))
eb28a777
EB
827 (replace 'install
828 (lambda _
829 (let ((bindir (string-append %output "/bin"))
830 (docdir (string-append %output "/share/doc/john"))
831 (execdir (string-append %output "/libexec/john"))
e57c7dd7 832 (datadir (string-append %output "/share/john"))
eb28a777
EB
833 (install-file-to (lambda (dir)
834 (lambda (f) (install-file f dir))))
835 (symlink? (lambda (_ s) (eq? (stat:type s) 'symlink))))
836 (with-directory-excursion "../run"
e57c7dd7
EB
837 (for-each (install-file-to bindir)
838 (cons*
839 "john" "makechr" "cprepair" "SIPdump" "tgtsnarf"
840 "genmkvpwd" "mkvcalcproba" "calc_stat" "raw2dyna"
841 (find-files "." "(to|2)?john(-[^.]*)?$")))
842 (for-each (lambda (f) ; Install symlinked aliases
843 (let ((tgt (string-append bindir "/" (basename f))))
844 ;; The use of install-file above dereferences
845 ;; symlinks. We'd rather have the symlinks
846 ;; for clarity, so remove tgt before linking.
847 (when (file-exists? tgt) (delete-file tgt))
848 (symlink "john" tgt)))
849 (find-files "." symlink?))
eb28a777 850 (for-each (install-file-to execdir)
e57c7dd7
EB
851 (cons* "mailer" "benchmark-unify" "relbench"
852 (find-files "." ".*\\.js")))
853 (for-each (lambda (f)
854 (let* ((base (basename f))
855 (name (substring base 0 (string-index base #\.)))
856 (link (string-append bindir "/" name)))
857 (install-file f execdir)
858 (when (and (executable-file? f)
859 (not (file-exists? link)))
860 (symlink (string-append execdir "/" base) link))))
861 (find-files "." ".*\\.(pl|py|rb|lua)"))
862 (for-each (install-file-to datadir)
eb28a777
EB
863 (append (find-files "." "(stats|dictionary.*)")
864 (find-files "." "(.*\\.chr|.*\\.lst)")
865 (find-files "." ".*\\.conf")))
e57c7dd7 866 (copy-recursively "rules" (string-append datadir "/rules")))
eb28a777 867 (copy-recursively "../doc" docdir)
4090dcb2
EB
868 #t)))
869 (delete 'check) ; Tests need installed .conf files; move after install
870 (add-after 'install 'check
871 (lambda args
872 (setenv "HOME" "/tmp") ; Some tests need to write to ~/.john
873 (setenv "OMP_NUM_THREADS" (number->string (parallel-job-count)))
874 (apply (assoc-ref %standard-phases 'check) args))))))
eb28a777
EB
875 (home-page "http://www.openwall.com/john/")
876 (synopsis "Password cracker")
877 (description "John the Ripper is a fast password cracker. Its primary
878purpose is to detect weak Unix passwords. Besides several @code{crypt}
879password hash types most commonly found on various Unix systems, supported out
880of the box are Windows LM hashes, plus lots of other hashes and ciphers. This
881is the community-enhanced, \"jumbo\" version of John the Ripper.")
882 (license license:gpl2+))))
649eb8b5
KH
883
884(define-public sala
885 (package
886 (name "sala")
887 (version "1.3")
888 (source
889 (origin
890 (method url-fetch)
891 (uri (pypi-uri "sala" version))
892 (sha256
893 (base32
894 "13qgmc3i2a0cqp8jqrfl93lnphfagb32pgfikc1gza2a14asxzi8"))))
895 (build-system python-build-system)
896 (arguments
897 ;; Sala is supposed to work with Python 3.2 or higher,
898 ;; but it doesn't work with Python 3.6. Better stick
899 ;; to Python 2, which works fine.
900 `(#:python ,python-2))
901 (propagated-inputs
902 `(("gnupg" ,gnupg)
903 ("pwgen" ,pwgen)))
904 (home-page "http://www.digip.org/sala/")
905 (synopsis "Encrypted plaintext password store")
906 (description
907 "Store passwords and other bits of sensitive plain-text information
908to encrypted files on a directory hierarchy. The information is protected
909by GnuPG's symmetrical encryption.")
910 (license license:expat)))
d4e0ebd0
T
911
912(define-public fpm2
913 (package
914 (name "fpm2")
915 (version "0.79")
916 (source (origin
917 (method url-fetch)
918 (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
919 version ".tar.bz2"))
920 (sha256
921 (base32
922 "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
923 (build-system gnu-build-system)
924 (inputs `(("gtk2" ,gtk+-2)
925 ("gnupg" ,gnupg)
926 ("libxml2" ,libxml2)))
927 (native-inputs `(("pkg-config" ,pkg-config)
928 ("intltool" ,intltool)))
929 (arguments
930 `(#:phases
931 (modify-phases %standard-phases
932 (add-before 'configure 'pre-configure
933 ;; The file po/POTFILES.in ends up missing for some reason in
934 ;; both nix and guix builds. Adding the file with contents
935 ;; found during troubleshooting.
936 (lambda _
937 (call-with-output-file "po/POTFILES.in"
938 (lambda (port)
939 (format port "data/fpm2.desktop.in
940data/fpm2.desktop.in.in
941fpm2.glade
942src/callbacks.c
943src/fpm.c
944src/fpm_file.c
945src/interface.c
946src/support.c
947fpm2.glade
948")))
949 #t)))))
950 (synopsis "Manage, generate and store passwords encrypted")
951 (description "FPM2 is GTK2 port from Figaro's Password Manager
952originally developed by John Conneely, with some new enhancements.
953
954Upstream development seems to have stopped. It is therefore recommended
955to use a different password manager.")
956 (home-page "https://als.regnet.cz/fpm2/")
957 (license license:gpl2+)))
20b51b17
AI
958
959(define-public pass-rotate
960 (package
961 (name "pass-rotate")
962 (version "0.1")
963 (source
e1a94fe0
EF
964 (origin
965 (method git-fetch)
966 (uri (git-reference
659204ff 967 (url "https://github.com/ddevault/pass-rotate")
e1a94fe0
EF
968 (commit version)))
969 (file-name (git-file-name name version))
970 (sha256
971 (base32
972 "1m067vvdlc85csbpkp8aw4s3ags7q8s3jszrr32kmj9qhk5c254f"))))
20b51b17
AI
973 (build-system python-build-system)
974 (inputs
975 `(("python-beautifulsoup4" ,python-beautifulsoup4)
976 ("python-docopt" ,python-docopt)
977 ("python-html5lib" ,python-html5lib)
978 ("python-requests" ,python-requests)))
659204ff 979 (home-page "https://github.com/ddevault/pass-rotate")
20b51b17
AI
980 (synopsis "Rotate password on online services")
981 (description "pass-rotate is a command line utility and python library for
982rotating passwords on various web services. It makes it easier to rotate your
983passwords, one at a time or in bulk, when security events or routine upkeep of
984your online accounts makes it necessary.")
985 (license license:expat)))
c10aa278
PN
986
987(define-public hashcat
988 (package
989 (name "hashcat")
45ee3fde 990 (version "5.1.0")
c10aa278
PN
991 (source
992 (origin
993 (method url-fetch)
994 (uri (string-append "https://hashcat.net/files/hashcat-"
995 version ".tar.gz"))
996 (sha256
997 (base32
45ee3fde 998 "0f73y4cg8c7a6q7x34qvpfi4g3lw6j9bnn0a13g43aqyiskflfr8"))))
c10aa278
PN
999 (native-inputs
1000 `(("opencl-headers" ,opencl-headers)))
1001 (build-system gnu-build-system)
1002 (arguments
1003 '(#:tests? #f ;no tests
1004 #:make-flags (list (string-append "PREFIX=" %output))
1005 #:phases
1006 (modify-phases %standard-phases
1007 (delete 'configure))))
1008 (home-page "https://hashcat.net/hashcat/")
1009 (synopsis "Advanced password recovery utility")
1010 (description "Hashcat is an password recovery utility, supporting five
1011unique modes of attack for over 200 highly-optimized hashing algorithms.
1012Hashcat currently supports CPUs, GPUs, and other hardware accelerators on
1013Linux, Windows, and macOS, and has facilities to help enable distributed
1014password cracking.")
1015 (license license:expat)))
eb4ffe9b
PN
1016
1017(define-public hashcat-utils
1018 (package
1019 (name "hashcat-utils")
2b9b4b1f 1020 (version "1.9")
eb4ffe9b
PN
1021 (source
1022 (origin
1023 (method url-fetch)
2b9b4b1f
TGR
1024 (uri (string-append "https://github.com/hashcat/hashcat-utils/releases/"
1025 "download/v" version "/"
1026 "hashcat-utils-" version ".7z"))
eb4ffe9b 1027 (sha256
2b9b4b1f 1028 (base32 "0kq555kb338691qd7zjmi8vhq4km3apnsl2w63zh0igwzcjx6lx1"))))
eb4ffe9b
PN
1029 (native-inputs
1030 `(("p7zip" ,p7zip)))
1031 (inputs
1032 `(("perl" ,perl)))
1033 (build-system gnu-build-system)
1034 (arguments
1035 `(#:tests? #f ;no tests
1036 #:make-flags (list "CC=gcc"
1037 ;; Upstream bug(?): "make all" seems to remove the
1038 ;; Perl scripts from the source.
1039 "native")
1040 #:phases
1041 (modify-phases %standard-phases
1042 (replace 'unpack
1043 (lambda* (#:key source #:allow-other-keys)
1044 (invoke "7z" "x" source)
1045 (chdir (string-append "hashcat-utils-" ,version "/src"))
1046 #t))
1047 (delete 'configure)
1048 (replace 'install
1049 (lambda* (#:key outputs #:allow-other-keys)
1050 (let ((out (string-append (assoc-ref outputs "out") "/bin")))
1051 (mkdir-p out)
2b9b4b1f
TGR
1052 (for-each
1053 (lambda (file)
1054 (copy-file file (string-append out "/"
1055 (basename file ".bin"))))
1056 (find-files "." "\\.bin$"))
1057 (for-each
1058 (lambda (file)
1059 (copy-file file (string-append out "/"
1060 (basename file ".pl"))))
1061 (find-files "../bin" "\\.pl$"))
eb4ffe9b
PN
1062 #t))))))
1063 (home-page "https://github.com/hashcat/hashcat-utils/")
1064 (synopsis "Small utilities that are useful in advanced password cracking")
1065 (description "Hashcat-utils are a set of small utilities that are useful
1066in advanced password cracking. They all are packed into multiple stand-alone
1067binaries. All of these utils are designed to execute only one specific
1068function. Since they all work with @code{STDIN} and @code{STDOUT} you can
1069group them into chains.")
1070 (license license:expat)))
d823fd96
GLV
1071
1072(define-public bruteforce-luks
1073 (package
1074 (name "bruteforce-luks")
1075 (version "1.4.0")
1076 (source
1077 (origin
1078 (method url-fetch)
1079 (uri (string-append "https://github.com/glv2/bruteforce-luks/releases/download/"
1080 version
1081 "/bruteforce-luks-"
1082 version
1083 ".tar.lz"))
1084 (sha256
1085 (base32 "0yawrlbbklhmvwr99wm7li3r0d5kxvpkwf33a12rji7z0ya5p340"))))
1086 (build-system gnu-build-system)
1087 (native-inputs
1088 `(("lzip" ,lzip)))
1089 (inputs
1090 `(("cryptsetup" ,cryptsetup)))
1091 (synopsis "LUKS encrypted volume cracker")
1092 (description
1093 "This is a cracker for LUKS encrypted volumes. It can be used either in
1094exhaustive mode to try every password given a charset or in dictionary mode to
1095try every password contained in a file.")
1096 (home-page "https://github.com/glv2/bruteforce-luks")
1097 (license license:gpl3+)))