# Contributor: Ivan Tham # Contributor: Francesco Colista # Maintainer: Francesco Colista global pkgname := 'john' global pkgver := '1.8.0' global _pkgrel := 'jumbo-1' global pkgrel := '7' global pkgdesc := '"John the Ripper password cracker'" global url := '"http://www.openwall.com/john'" global arch := '"x86_64 armhf ppc64le'" global license := '"GPL2'" global depends := '"nss'" global options := '"!strip'" global makedepends := '"libpcap-dev libressl-dev gmp-dev yasm-dev zlib-dev'" global install := ''"" global subpackages := ""$pkgname-doc $pkgname-scripts-py:py:noarch $pkgname-scripts-perl:perl:noarch $pkgname-scripts-ruby:ruby:noarch $pkgname-misc::noarch $pkgname-zsh-completion:zshcomp:noarch $pkgname-bash-completion:bashcomp:noarch $pkgname-jumbo:jumbo:noarch "" global source := ""$pkgname-$pkgver.tar.gz::https://github.com/magnumripper/JohnTheRipper/archive/$pkgver-$_pkgrel.tar.gz truecrypt_fmt_plug.patch params-h.patch gcc5-support.patch libressl.patch "" global builddir := ""$srcdir/JohnTheRipper-$pkgver-$_pkgrel"" proc build { cd "$builddir"/src sed -i -e "s/ac_default_prefix.*/ac_default_prefix=\/usr/g" configure export OPENSSL_LIBS="-lssl -lcrypto" ./configure \ --disable-openmp make || return 1 } proc package { cd $builddir mkdir -p "$pkgdir"/usr/bin mkdir -p "$pkgdir"/usr/share/doc/$pkgname install -Dm644 run/john.conf "$pkgdir"/etc/john/john.conf install -Dm644 run/john.local.conf "$pkgdir"/etc/john/john.local.conf install -Dm644 doc/* "$pkgdir"/usr/share/doc/$pkgname install -Dm644 doc/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE rm "$pkgdir"/usr/share/doc/$pkgname/LICENSE* var john_bins = '"john calc_stat genmkvpwd mkvcalcproba relbench tgtsnarf raw2dyna'" for bin in [$(john_bins)] { install -Dm755 run/$(bin) "$pkgdir"/usr/bin } var john_links = '"hccap2john keepass2john mozilla2john pdf2john pfx2john pwsafe2john racf2john rar2john ssh2john unafs unique unsahdow undrop zip2john'" for link in [$(john_links)] { ln -s john "$pkgdir"/usr/bin/$(link) } } proc py { global depends := '"libxml2 libgsf'" _script python "*.py" } proc perl { _script perl "*.pl benchmark-unify" } proc ruby { _script ruby "*.rb" } proc _script { var lang = $1 global depends := ""$depends $lang"" global pkgdesc := ""John the Ripper ($lang scripts)"" _install 755 $2 } proc misc { global pkgdesc := '"Misc tools for John the Ripper: password list and charset files'" var john_pwd = '"password.lst dictionary.rfc2865 stats'" var john_chr = '"*.chr'" var john_cfg = '"dumb*.conf repeats*.conf dynamic*.conf korelogic.conf regex_alphabets.conf'" _install 644 "$john_pwd $john_cfg $john_chr" } proc _install { var perm = $1 var files = $2 mkdir -p "$subpkgdir"/usr/share/$pkgname cd "$builddir"/run for f in [$(files)] { install -Dm$(perm) $(f) "$subpkgdir"/usr/share/john } } proc bashcomp { global depends := ''"" global pkgdesc := ""Bash completions for $pkgname"" global install_if := ""$pkgname=$pkgver-r$pkgrel bash-completion"" cd $builddir install -Dm644 run/john.bash_completion \ "$subpkgdir"/usr/share/bash-completion/completions/$pkgname || return 1 } proc zshcomp { global depends := ''"" global pkgdesc := ""Zsh completions for $pkgname"" global install_if := ""$pkgname=$pkgver-r$pkgrel zsh"" cd $builddir install -Dm644 run/john.zsh_completion \ "$subpkgdir"/usr/share/zsh/site-functions/$pkgname || return 1 } proc jumbo { global pkgdesc := ""$pkgdesc (jumbo pack)"" global depends := ""$pkgname-scripts-py $pkgname-scripts-perl $pkgname-scripts-ruby $pkgname-misc"" mkdir $subpkgdir } global sha512sums := '"8b7fad7a6330b5ff1afc306218ba698aaa27776b566f82c2e76102d5ceb10aeafa69d71fa6fff67c81996ea2c6a04384bab4696ed192306c6d074873562e7089 john-1.8.0.tar.gz 80be6cc1b1b35c6a85392008638b2f8b6d8a518ee35f59405e2f5682e025e4b8beecf964148311e6f62d76b59153f04427024fa81aaf56ee2062ac2dbf0a9bcb truecrypt_fmt_plug.patch a5c22feb8bf11509c306a2f236f2bd4891fdfc3b01882f07d85015e0895d82f28df0dff78ba8d3a3862d8d95877a88a9eb8138e6c407b40881fa1455079b98fc params-h.patch 4ebe8b41b1d0c3839348dcf5348332f9d7ce25919077fa054db64b7106150f299c6b177d117f7c18c1db672a494a6de6be8b5afe502f5ca3639602ba3aef6866 gcc5-support.patch fb46431fe3e42e36c72361c13460e8ac626d2f146fa84c8f6e17e5407e69530a84ceb1de6bc9910c1a03a6e907fc113f7000a2cbc3936ae0860103d3e2d489b0 libressl.patch'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(john)} spids:[9])] spids: [9] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(1.8.0)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_pkgrel) op:Equal rhs:{(jumbo-1)} spids:[15])] spids: [15] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(7)} spids:[18])] spids: [18] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("John the Ripper password cracker"))} spids: [21] ) ] spids: [21] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://www.openwall.com/john"))} spids: [26] ) ] spids: [26] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arch) op: Equal rhs: {(DQ ("x86_64 armhf ppc64le"))} spids: [31] ) ] spids: [31] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (GPL2))} spids:[36])] spids: [36] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ (nss))} spids:[41])] spids: [41] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:options) op:Equal rhs:{(DQ ("!strip"))} spids:[46])] spids: [46] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:makedepends) op: Equal rhs: {(DQ ("libpcap-dev libressl-dev gmp-dev yasm-dev zlib-dev"))} spids: [51] ) ] spids: [51] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:install) op:Equal rhs:{(DQ )} spids:[56])] spids: [56] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("-doc\n") ("\t") ($ VSub_Name "$pkgname") ("-scripts-py:py:noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-scripts-perl:perl:noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-scripts-ruby:ruby:noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-misc::noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-zsh-completion:zshcomp:noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-bash-completion:bashcomp:noarch\n") ("\t") ($ VSub_Name "$pkgname") ("-jumbo:jumbo:noarch\n") ("\t") ) } spids: [60] ) ] spids: [60] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver") (".tar.gz::https://github.com/magnumripper/JohnTheRipper/archive/") ($ VSub_Name "$pkgver") (-) ($ VSub_Name "$_pkgrel") (".tar.gz\n") ("\ttruecrypt_fmt_plug.patch\n") ("\tparams-h.patch\n") ("\tgcc5-support.patch\n") ("\tlibressl.patch\n") ("\t") ) } spids: [88] ) ] spids: [88] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: { (DQ ($ VSub_Name "$srcdir") (/JohnTheRipper-) ($ VSub_Name "$pkgver") (-) ($ VSub_Name "$_pkgrel") ) } spids: [105] ) ] spids: [105] ) (FuncDef name: build body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir")) (/src)}) (C {(sed)} {(-i)} {(-e)} { (DQ ("s/ac_default_prefix.*/ac_default_prefix=") (EscapedLiteralPart token:) (usr/g) ) } {(configure)} ) (C {(export)} {(Lit_VarLike "OPENSSL_LIBS=") (DQ ("-lssl -lcrypto"))}) (C {(./configure)} {(--disable-openmp)}) (AndOr children: [(C {(make)}) (ControlFlow token: arg_word:{(1)})] op_id: Op_DPipe ) ] spids: [119] ) spids: [115 118] ) (FuncDef name: package body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin)}) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/doc/) ($ VSub_Name "$pkgname")} ) (C {(install)} {(-Dm644)} {(run/john.conf)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/john/john.conf)} ) (C {(install)} {(-Dm644)} {(run/john.local.conf)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/john/john.local.conf)} ) (C {(install)} {(-Dm644)} {(doc/) (Lit_Other "*")} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/doc/) ($ VSub_Name "$pkgname")} ) (C {(install)} {(-Dm644)} {(doc/LICENSE)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/licenses/) ($ VSub_Name "$pkgname") (/LICENSE)} ) (C {(rm)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/doc/) ($ VSub_Name "$pkgname") (/LICENSE) (Lit_Other "*") } ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:john_bins) op: Equal rhs: { (DQ ("john calc_stat genmkvpwd mkvcalcproba relbench\n") ("\t\t\ttgtsnarf raw2dyna") ) } spids: [273] ) ] spids: [271] ) (ForEach iter_name: bin iter_words: [{(${ VSub_Name john_bins)}] do_arg_iter: False body: (DoGroup children: [ (C {(install)} {(-Dm755)} {(run/) (${ VSub_Name bin)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin)} ) ] spids: [291 309] ) spids: [285 289] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:john_links) op: Equal rhs: { (DQ ("hccap2john keepass2john mozilla2john pdf2john\n") ("\t\t\tpfx2john pwsafe2john racf2john rar2john ssh2john\n") ("\t\t\tunafs unique unsahdow undrop zip2john") ) } spids: [315] ) ] spids: [313] ) (ForEach iter_name: link iter_words: [{(${ VSub_Name john_links)}] do_arg_iter: False body: (DoGroup children: [ (C {(ln)} {(-s)} {(john)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin/) (${ VSub_Name link)} ) ] spids: [334 352] ) spids: [328 332] ) ] spids: [175] ) spids: [171 174] ) (FuncDef name: py body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ ("libxml2 libgsf"))} spids: [364] ) ] spids: [364] ) (C {(_script)} {(python)} {(DQ ("*.py"))}) ] spids: [361] ) spids: [357 360] ) (FuncDef name: perl body: (BraceGroup children: [(C {(_script)} {(perl)} {(DQ ("*.pl benchmark-unify"))})] spids: [385] ) spids: [381 384] ) (FuncDef name: ruby body: (BraceGroup children:[(C {(_script)} {(ruby)} {(DQ ("*.rb"))})] spids:[403]) spids: [399 402] ) (FuncDef name: _script body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:lang) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [426] ) ] spids: [424] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ ($ VSub_Name "$depends") (" ") ($ VSub_Name "$lang"))} spids: [433] ) ] spids: [433] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("John the Ripper (") ($ VSub_Name "$lang") (" scripts)"))} spids: [441] ) ] spids: [441] ) (C {(_install)} {(755)} {(DQ ($ VSub_Number "$2"))}) ] spids: [421] ) spids: [417 420] ) (FuncDef name: misc body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("Misc tools for John the Ripper: password list and charset files"))} spids: [467] ) ] spids: [467] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:john_pwd) op: Equal rhs: {(DQ ("password.lst dictionary.rfc2865 stats"))} spids: [475] ) ] spids: [473] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:john_chr) op: Equal rhs: {(DQ ("*.chr"))} spids: [483] ) ] spids: [481] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:john_cfg) op: Equal rhs: { (DQ ("dumb*.conf repeats*.conf dynamic*.conf\n") ("\t\t\tkorelogic.conf regex_alphabets.conf") ) } spids: [491] ) ] spids: [489] ) (C {(_install)} {(644)} { (DQ ($ VSub_Name "$john_pwd") (" ") ($ VSub_Name "$john_cfg") (" ") ($ VSub_Name "$john_chr") ) } ) ] spids: [464] ) spids: [460 463] ) (FuncDef name: _install body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:perm) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [522] ) ] spids: [520] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:files) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [530] ) ] spids: [528] ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/share/) ($ VSub_Name "$pkgname")}) (C {(cd)} {(DQ ($ VSub_Name "$builddir")) (/run)}) (ForEach iter_name: f iter_words: [{(${ VSub_Name files)}] do_arg_iter: False body: (DoGroup children: [ (C {(install)} {(-Dm) (${ VSub_Name perm)} {(${ VSub_Name f)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/share/john)} ) ] spids: [567 587] ) spids: [561 565] ) ] spids: [517] ) spids: [513 516] ) (FuncDef name: bashcomp body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ )} spids:[599])] spids: [599] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("Bash completions for ") ($ VSub_Name "$pkgname"))} spids: [604] ) ] spids: [604] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:install_if) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("=") ($ VSub_Name "$pkgver") (-r) ($ VSub_Name "$pkgrel") (" bash-completion") ) } spids: [611] ) ] spids: [611] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(install)} {(-Dm644)} {(run/john.bash_completion)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/share/bash-completion/completions/) ($ VSub_Name "$pkgname") } ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) ] spids: [596] ) spids: [592 595] ) (FuncDef name: zshcomp body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ )} spids:[660])] spids: [660] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("Zsh completions for ") ($ VSub_Name "$pkgname"))} spids: [665] ) ] spids: [665] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:install_if) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("=") ($ VSub_Name "$pkgver") (-r) ($ VSub_Name "$pkgrel") (" zsh") ) } spids: [672] ) ] spids: [672] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(install)} {(-Dm644)} {(run/john.zsh_completion)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/share/zsh/site-functions/) ($ VSub_Name "$pkgname") } ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) ] spids: [657] ) spids: [653 656] ) (FuncDef name: jumbo body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (jumbo pack)"))} spids: [721] ) ] spids: [721] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("-scripts-py ") ($ VSub_Name "$pkgname") ("-scripts-perl\n") ("\t\t") ($ VSub_Name "$pkgname") ("-scripts-ruby ") ($ VSub_Name "$pkgname") (-misc) ) } spids: [728] ) ] spids: [728] ) (C {(mkdir)} {(DQ ($ VSub_Name "$subpkgdir"))}) ] spids: [718] ) spids: [714 717] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "8b7fad7a6330b5ff1afc306218ba698aaa27776b566f82c2e76102d5ceb10aeafa69d71fa6fff67c81996ea2c6a04384bab4696ed192306c6d074873562e7089 john-1.8.0.tar.gz\n" ) ( "80be6cc1b1b35c6a85392008638b2f8b6d8a518ee35f59405e2f5682e025e4b8beecf964148311e6f62d76b59153f04427024fa81aaf56ee2062ac2dbf0a9bcb truecrypt_fmt_plug.patch\n" ) ( "a5c22feb8bf11509c306a2f236f2bd4891fdfc3b01882f07d85015e0895d82f28df0dff78ba8d3a3862d8d95877a88a9eb8138e6c407b40881fa1455079b98fc params-h.patch\n" ) ( "4ebe8b41b1d0c3839348dcf5348332f9d7ce25919077fa054db64b7106150f299c6b177d117f7c18c1db672a494a6de6be8b5afe502f5ca3639602ba3aef6866 gcc5-support.patch\n" ) ( "fb46431fe3e42e36c72361c13460e8ac626d2f146fa84c8f6e17e5407e69530a84ceb1de6bc9910c1a03a6e907fc113f7000a2cbc3936ae0860103d3e2d489b0 libressl.patch" ) ) } spids: [751] ) ] spids: [751] ) ] )