mirror of
https://github.com/hashcat/hashcat.git
synced 2025-08-04 12:56:00 +00:00
Update tools/install_modules.sh: make pyenv works with Apple Intel, use pycryptodome instead of pycrypto, add missing Module::Build::Pluggable::XSUtil
This commit is contained in:
parent
b5202e4be6
commit
63377a9890
@ -7,89 +7,119 @@
|
||||
|
||||
## Test suite installation helper script
|
||||
|
||||
IS_APPLE=0
|
||||
IS_APPLE_SILICON=0
|
||||
|
||||
UNAME=$(uname -s)
|
||||
if [ "${UNAME}" == "Darwin" ]; then
|
||||
IS_APPLE=1
|
||||
fi
|
||||
|
||||
if [ ${IS_APPLE} -eq 1 ]; then
|
||||
if [ "$(sysctl -in hw.optional.arm64 2>/dev/null)" == "1" ]; then
|
||||
IS_APPLE_SILICON=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Sum of all exit codes
|
||||
ERRORS=0
|
||||
|
||||
cpanm Authen::Passphrase::LANManager \
|
||||
Authen::Passphrase::MySQL323 \
|
||||
Authen::Passphrase::NTHash \
|
||||
Authen::Passphrase::PHPass \
|
||||
Bitcoin::Crypto \
|
||||
Bitcoin::Crypto::Base58 \
|
||||
Compress::Zlib \
|
||||
Convert::EBCDIC \
|
||||
Crypt::Argon2 \
|
||||
Crypt::AuthEnc::GCM \
|
||||
Crypt::Camellia \
|
||||
Crypt::CBC \
|
||||
Crypt::Cipher::Serpent \
|
||||
Crypt::DES \
|
||||
Crypt::DES_EDE3 \
|
||||
Crypt::Digest::BLAKE2s_256 \
|
||||
Crypt::Digest::RIPEMD160 \
|
||||
Crypt::Digest::Whirlpool \
|
||||
Crypt::ECB \
|
||||
Crypt::Eksblowfish::Bcrypt \
|
||||
Crypt::GCrypt \
|
||||
Crypt::Mode::CBC \
|
||||
Crypt::Mode::ECB \
|
||||
Crypt::MySQL \
|
||||
Crypt::OpenSSH::ChachaPoly \
|
||||
Crypt::OpenSSL::EC \
|
||||
Crypt::OpenSSL::Bignum::CTX \
|
||||
Crypt::Passwd::XS \
|
||||
Crypt::PBKDF2 \
|
||||
Crypt::RC4 \
|
||||
Crypt::Rijndael \
|
||||
Crypt::ScryptKDF \
|
||||
Crypt::Skip32 \
|
||||
Crypt::Twofish \
|
||||
Crypt::UnixCrypt_XS \
|
||||
Data::Types \
|
||||
Digest::CMAC \
|
||||
Digest::CRC \
|
||||
Digest::GOST \
|
||||
Digest::HMAC \
|
||||
Digest::HMAC_MD5 \
|
||||
Digest::Keccak \
|
||||
Digest::MD4 \
|
||||
Digest::MD5 \
|
||||
Digest::MurmurHash3 \
|
||||
Digest::Perl::MD5 \
|
||||
Digest::SHA \
|
||||
Digest::SHA1 \
|
||||
Digest::SHA3 \
|
||||
Digest::SipHash \
|
||||
Encode \
|
||||
JSON \
|
||||
Math::BigInt \
|
||||
MIME::Base64 \
|
||||
Module::Build \
|
||||
Net::DNS::RR::NSEC3 \
|
||||
Net::DNS::SEC \
|
||||
POSIX \
|
||||
Text::Iconv \
|
||||
cpanm Authen::Passphrase::LANManager \
|
||||
Authen::Passphrase::MySQL323 \
|
||||
Authen::Passphrase::NTHash \
|
||||
Authen::Passphrase::PHPass \
|
||||
Bitcoin::Crypto \
|
||||
Bitcoin::Crypto::Base58 \
|
||||
Compress::Zlib \
|
||||
Convert::EBCDIC \
|
||||
Crypt::Argon2 \
|
||||
Crypt::AuthEnc::GCM \
|
||||
Crypt::Camellia \
|
||||
Crypt::CBC \
|
||||
Crypt::Cipher::Serpent \
|
||||
Crypt::DES \
|
||||
Crypt::DES_EDE3 \
|
||||
Crypt::Digest::BLAKE2s_256 \
|
||||
Crypt::Digest::RIPEMD160 \
|
||||
Crypt::Digest::Whirlpool \
|
||||
Crypt::ECB \
|
||||
Crypt::Eksblowfish::Bcrypt \
|
||||
Crypt::GCrypt \
|
||||
Crypt::Mode::CBC \
|
||||
Crypt::Mode::ECB \
|
||||
Crypt::MySQL \
|
||||
Crypt::OpenSSH::ChachaPoly \
|
||||
Crypt::OpenSSL::EC \
|
||||
Crypt::OpenSSL::Bignum::CTX \
|
||||
Crypt::Passwd::XS \
|
||||
Crypt::PBKDF2 \
|
||||
Crypt::RC4 \
|
||||
Crypt::Rijndael \
|
||||
Crypt::ScryptKDF \
|
||||
Crypt::Skip32 \
|
||||
Crypt::Twofish \
|
||||
Crypt::UnixCrypt_XS \
|
||||
Data::Types \
|
||||
Digest::CMAC \
|
||||
Digest::CRC \
|
||||
Digest::GOST \
|
||||
Digest::HMAC \
|
||||
Digest::HMAC_MD5 \
|
||||
Digest::Keccak \
|
||||
Digest::MD4 \
|
||||
Digest::MD5 \
|
||||
Digest::MurmurHash3 \
|
||||
Digest::Perl::MD5 \
|
||||
Digest::SHA \
|
||||
Digest::SHA1 \
|
||||
Digest::SHA3 \
|
||||
Digest::SipHash \
|
||||
Encode \
|
||||
JSON \
|
||||
Math::BigInt \
|
||||
MIME::Base64 \
|
||||
Module::Build \
|
||||
Module::Build::Pluggable::XSUtil \
|
||||
Net::DNS::RR::NSEC3 \
|
||||
Net::DNS::SEC \
|
||||
POSIX \
|
||||
Text::Iconv \
|
||||
;
|
||||
|
||||
ERRORS=$((ERRORS+$?))
|
||||
|
||||
cpanm https://github.com/matrix/p5-Digest-BLAKE2.git
|
||||
perl -MDigest::BLAKE2 -e1 &>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
cpanm https://github.com/matrix/p5-Digest-BLAKE2.git
|
||||
ERRORS=$((ERRORS+$?))
|
||||
fi
|
||||
|
||||
ERRORS=$((ERRORS+$?))
|
||||
# checks for pyenv
|
||||
|
||||
pyenv_enabled=0
|
||||
|
||||
# check for pyenv
|
||||
which pyenv &>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
|
||||
if [[ $(pyenv version-name) != "system" ]]; then
|
||||
|
||||
# active session detected
|
||||
pyenv_enabled=1
|
||||
|
||||
else
|
||||
|
||||
# enum last version available
|
||||
latest=$(pyenv install --list | grep -E "^\s*3\.[0-9]+\.[0-9]$" | tail -n 1)
|
||||
|
||||
if [ $IS_APPLE -eq 1 ]; then
|
||||
if [ $IS_APPLE_SILICON -eq 0 ]; then
|
||||
# workaround but with pyenv and Apple Intel with brew binutils in path
|
||||
remove_path="$(brew --prefix)/opt/binutils/bin"
|
||||
PATH=$(echo "$PATH" | tr ':' '\n' | awk '$0 != "${remove_path}"' | xargs | sed 's/ /:/g')
|
||||
export $PATH
|
||||
fi
|
||||
fi
|
||||
|
||||
# install the latest version or skip it if it is already present
|
||||
pyenv install -s ${latest}
|
||||
|
||||
@ -98,50 +128,46 @@ if [ $? -eq 0 ]; then
|
||||
if [ $? -eq 0 ]; then
|
||||
pyenv_enabled=1
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ${pyenv_enabled} -eq 0 ]; then
|
||||
echo "! something is wrong with pyenv. Please setup latest version manually and re-run this script.
|
||||
|
||||
((ERRORS++))
|
||||
echo "! something is wrong with pyenv. Please setup latest version manually and re-run this script."
|
||||
(( ERRORS++ ))
|
||||
|
||||
else
|
||||
|
||||
echo "> Installing python3 deps ..."
|
||||
|
||||
pip3 install git+https://github.com/matrix/pygost
|
||||
|
||||
ERRORS=$((ERRORS+$?))
|
||||
|
||||
# pip3 uninstall -y pycryptoplus pycrypto pycryptodome
|
||||
|
||||
pip3 install pycryptoplus
|
||||
|
||||
ERRORS=$((ERRORS+$?))
|
||||
|
||||
# pip3 uninstall -y pycryptodome # latest versions do not require this work around anymore
|
||||
pip3 install pycrypto
|
||||
|
||||
pip3 install pycryptodome
|
||||
ERRORS=$((ERRORS+$?))
|
||||
|
||||
pip3 install cryptography
|
||||
|
||||
ERRORS=$((ERRORS+$?))
|
||||
|
||||
fi
|
||||
|
||||
php --version > /dev/null 2> /dev/null
|
||||
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
echo '[ ERROR ] php must be installed for some unit tests'
|
||||
php --version &> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "! php must be installed for some unit tests'
|
||||
|
||||
ERRORS=$((ERRORS+1))
|
||||
fi
|
||||
|
||||
echo
|
||||
if [ $ERRORS -eq 0 ]; then
|
||||
echo '[ OK ] All commands were successful'
|
||||
exit 0
|
||||
else
|
||||
|
||||
if [ $ERRORS -gt 0 ]; then
|
||||
echo '[ FAIL ] Some commands were not successful'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo '[ OK ] All commands were successful'
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user