diff --git a/security/Makefile b/security/Makefile index 034e957031c0..2f61c05f25c7 100644 --- a/security/Makefile +++ b/security/Makefile @@ -1,1347 +1,1348 @@ COMMENT = Security tools SUBDIR += 0d1n SUBDIR += 1password-client SUBDIR += 1password-client2 SUBDIR += 1password-client2-beta SUBDIR += 2fa SUBDIR += ADMsmb SUBDIR += ADMsnmp SUBDIR += R-cran-ROAuth SUBDIR += R-cran-askpass SUBDIR += R-cran-credentials SUBDIR += R-cran-digest SUBDIR += R-cran-gitcreds SUBDIR += R-cran-openssl SUBDIR += acme.sh SUBDIR += acmed SUBDIR += acmetool SUBDIR += aescrypt SUBDIR += aespipe SUBDIR += afl++ SUBDIR += afterglow SUBDIR += age SUBDIR += aide SUBDIR += akmos SUBDIR += amavisd-milter SUBDIR += amavisd-new SUBDIR += apache-xml-security-c SUBDIR += apg SUBDIR += apkid SUBDIR += archlinux-keyring SUBDIR += arpCounterattack SUBDIR += arti SUBDIR += asignify SUBDIR += assh SUBDIR += authenticator SUBDIR += authoscope SUBDIR += autossh SUBDIR += aws-c-auth SUBDIR += aws-c-cal SUBDIR += aws-iam-authenticator SUBDIR += aws-vault SUBDIR += axc SUBDIR += barnyard2 SUBDIR += barnyard2-sguil SUBDIR += bastillion SUBDIR += bcrypt SUBDIR += bcwipe SUBDIR += bdes SUBDIR += bearssl SUBDIR += beecrypt SUBDIR += beid SUBDIR += belier SUBDIR += bfbtester SUBDIR += binwalk SUBDIR += boringssl SUBDIR += botan2 SUBDIR += bruteblock SUBDIR += bsdsfv SUBDIR += bsmtrace SUBDIR += bsmtrace3 SUBDIR += bzrtp SUBDIR += ca_root_nss SUBDIR += caesarcipher SUBDIR += calife SUBDIR += cardpeek SUBDIR += cargo-audit SUBDIR += ccrypt SUBDIR += ccsrch SUBDIR += certmgr SUBDIR += cfs SUBDIR += cfssl SUBDIR += cfv SUBDIR += chaosreader SUBDIR += checkpassword SUBDIR += checkpassword-pam SUBDIR += chkrootkit SUBDIR += chntpw SUBDIR += chroot_safe SUBDIR += chrootuid SUBDIR += ckpass SUBDIR += cksfv SUBDIR += cl-md5 SUBDIR += cl-md5-sbcl SUBDIR += clamassassin SUBDIR += clamav SUBDIR += clamav-lts SUBDIR += clamav-unofficial-sigs SUBDIR += clamd-stream-client SUBDIR += clamfs SUBDIR += clamsmtp SUBDIR += clamtk SUBDIR += cloak SUBDIR += clusterssh SUBDIR += cops SUBDIR += courier-authlib SUBDIR += courier-authlib-base SUBDIR += courierpassd SUBDIR += courierpasswd SUBDIR += courieruserinfo SUBDIR += cowrie SUBDIR += cracklib SUBDIR += crackpkcs12 SUBDIR += create-cert SUBDIR += crlfuzz SUBDIR += crowdsec SUBDIR += crowdsec-blocklist-mirror SUBDIR += crowdsec-firewall-bouncer SUBDIR += cryptlib SUBDIR += cryptopp SUBDIR += ct-submit SUBDIR += cvechecker SUBDIR += cvm SUBDIR += cyberchef SUBDIR += cyrus-sasl2 SUBDIR += cyrus-sasl2-gssapi SUBDIR += cyrus-sasl2-ldapdb SUBDIR += cyrus-sasl2-saslauthd SUBDIR += cyrus-sasl2-sql SUBDIR += cyrus-sasl2-srp SUBDIR += d0_blind_id SUBDIR += dehydrated SUBDIR += denyhosts SUBDIR += destroy SUBDIR += diffcode SUBDIR += digestpp SUBDIR += dirbuster SUBDIR += dirmngr SUBDIR += distcache SUBDIR += diswall SUBDIR += doas SUBDIR += dotdotpwn SUBDIR += dropbear SUBDIR += dsniff SUBDIR += dsvpn SUBDIR += duo SUBDIR += duo_openvpn SUBDIR += easy-rsa SUBDIR += enchive SUBDIR += eschalot SUBDIR += esteidfirefoxplugin SUBDIR += expiretable SUBDIR += f-prot SUBDIR += fakebo SUBDIR += fakeident SUBDIR += fakeroot SUBDIR += farmhash SUBDIR += fcheck SUBDIR += fcrackzip SUBDIR += ffuf SUBDIR += fiked SUBDIR += fizz SUBDIR += fl0p SUBDIR += flawfinder SUBDIR += fpc-gnutls SUBDIR += fpc-openssl SUBDIR += fprint_demo SUBDIR += fprintd SUBDIR += fragroute SUBDIR += fragrouter SUBDIR += fswatch SUBDIR += ftimes SUBDIR += fuzz SUBDIR += fwanalog SUBDIR += fwbuilder SUBDIR += fwknop SUBDIR += fwlogwatch SUBDIR += gcr SUBDIR += gef SUBDIR += git-credential-gopass SUBDIR += git-crypt SUBDIR += git-remote-gcrypt SUBDIR += git-secret SUBDIR += gitjacker SUBDIR += globalprotect-openconnect SUBDIR += gnome-keyring SUBDIR += gnome-keyring-sharp SUBDIR += gnome-ssh-askpass SUBDIR += gnupg SUBDIR += gnupg-pkcs11-scd SUBDIR += gnupg1 SUBDIR += gnutls SUBDIR += go-cve-dictionary SUBDIR += gokart SUBDIR += gokey SUBDIR += gonepass SUBDIR += gopass SUBDIR += gorilla SUBDIR += gost-engine SUBDIR += gostsum SUBDIR += gpa SUBDIR += gpg-gui SUBDIR += gpg-tui SUBDIR += gpgdir SUBDIR += gpgme SUBDIR += gpgme-cpp SUBDIR += gpgme-qt5 SUBDIR += gsa SUBDIR += gsad SUBDIR += gsasl SUBDIR += gstreamer1-plugins-dtls SUBDIR += gtkpasman SUBDIR += gvm SUBDIR += gvm-libs SUBDIR += gvmd SUBDIR += hardening-check SUBDIR += hash SUBDIR += hashcat SUBDIR += heaan SUBDIR += headscale SUBDIR += heimdal SUBDIR += heimdal-devel SUBDIR += helib SUBDIR += hexl SUBDIR += highwayhash SUBDIR += hitch SUBDIR += hockeypuck SUBDIR += honeytrap SUBDIR += honggfuzz SUBDIR += horcrux + SUBDIR += howdy SUBDIR += hpenc SUBDIR += hs-cryptol SUBDIR += hydra SUBDIR += hyperhotp SUBDIR += i2p SUBDIR += i2pd SUBDIR += iaikpkcs11wrapper SUBDIR += iddawc SUBDIR += idea SUBDIR += identify SUBDIR += imds-filterd SUBDIR += intel-ipsec-mb SUBDIR += ipfmeta SUBDIR += ipguard SUBDIR += ipsec-tools SUBDIR += ipv6toolkit SUBDIR += isal-kmod SUBDIR += isnprober SUBDIR += john SUBDIR += kbfsd SUBDIR += kc SUBDIR += kdbxviewer SUBDIR += keepass SUBDIR += keepass-plugin-keepassrpc SUBDIR += keepassxc SUBDIR += keybase SUBDIR += keychain SUBDIR += keynote SUBDIR += keyprint SUBDIR += keysmith SUBDIR += kf5-kdesu SUBDIR += kgpg SUBDIR += kickpass SUBDIR += klee SUBDIR += kleopatra SUBDIR += knock SUBDIR += knocker SUBDIR += kpcli SUBDIR += kpkpass SUBDIR += kpmenu SUBDIR += krb5 SUBDIR += krb5-118 SUBDIR += krb5-119 SUBDIR += krb5-120 SUBDIR += krb5-appl SUBDIR += krb5-devel SUBDIR += kstart SUBDIR += ktls_isa-l_crypto-kmod SUBDIR += kuku SUBDIR += kwalletmanager SUBDIR += l0pht-watch SUBDIR += lasso SUBDIR += lastpass-cli SUBDIR += lego SUBDIR += libargon2 SUBDIR += libassuan SUBDIR += libcryptui SUBDIR += libdecaf SUBDIR += libecc SUBDIR += libfido2 SUBDIR += libfprint SUBDIR += libgcrypt SUBDIR += libgnome-keyring SUBDIR += libgpg-error SUBDIR += libgsasl SUBDIR += libhijack SUBDIR += libident SUBDIR += libkleo SUBDIR += libkpass SUBDIR += libksba SUBDIR += libmcrypt SUBDIR += libnitrokey SUBDIR += libntlm SUBDIR += libomemo SUBDIR += libomemo-c SUBDIR += liboqs SUBDIR += libotr SUBDIR += libotr3 SUBDIR += libp11 SUBDIR += libpki SUBDIR += libprelude SUBDIR += libpreludedb SUBDIR += libpwquality SUBDIR += libressl SUBDIR += libressl-devel SUBDIR += libreswan SUBDIR += libretls SUBDIR += libscep SUBDIR += libscrypt SUBDIR += libsecret SUBDIR += libsectok SUBDIR += libsodium SUBDIR += libssh SUBDIR += libssh2 SUBDIR += libtasn1 SUBDIR += libtomcrypt SUBDIR += libu2f-host SUBDIR += libuecc SUBDIR += libwhisker SUBDIR += libxcrypt SUBDIR += libyubikey SUBDIR += libzrtpcppcore SUBDIR += lime SUBDIR += linux-bitwarden-cli SUBDIR += linux-c7-ca-certificates SUBDIR += linux-c7-cyrus-sasl2 SUBDIR += linux-c7-gnutls SUBDIR += linux-c7-libgcrypt SUBDIR += linux-c7-libgpg-error SUBDIR += linux-c7-libssh2 SUBDIR += linux-c7-libtasn1 SUBDIR += linux-c7-nettle SUBDIR += linux-c7-nss SUBDIR += linux-c7-openssl-devel SUBDIR += linux-c7-p11-kit SUBDIR += linux-c7-trousers SUBDIR += local-php-security-checker SUBDIR += logcheck SUBDIR += lua-argon2 SUBDIR += lua-bcrypt SUBDIR += luasec SUBDIR += lxqt-openssh-askpass SUBDIR += lxqt-sudo SUBDIR += lynis SUBDIR += mac-robber SUBDIR += maia SUBDIR += mailzu SUBDIR += makepasswd SUBDIR += maltrail SUBDIR += masscan SUBDIR += mate-pam-helper SUBDIR += mbedtls SUBDIR += mcrypt SUBDIR += md5deep SUBDIR += medusa SUBDIR += meek SUBDIR += metasploit SUBDIR += mhash SUBDIR += mindterm-binary SUBDIR += minisign SUBDIR += mkp224o SUBDIR += modsecurity3 SUBDIR += modsecurity3-nginx SUBDIR += monkeysphere SUBDIR += munge SUBDIR += n2n SUBDIR += ncrack SUBDIR += ncrypt SUBDIR += nebula SUBDIR += nettle SUBDIR += nextcloud-end_to_end_encryption SUBDIR += nextcloud-passman SUBDIR += nextcloud-twofactor_admin SUBDIR += nextcloud-twofactor_nextcloud_notification SUBDIR += nextcloud-twofactor_webauthn SUBDIR += nflib SUBDIR += ngrok SUBDIR += nikto SUBDIR += nist-kat SUBDIR += nitrokey-app SUBDIR += nmap SUBDIR += nss SUBDIR += nss_compat_ossl SUBDIR += nuclei SUBDIR += nyx SUBDIR += oath-toolkit SUBDIR += obfs4proxy-tor SUBDIR += ocaml-cryptgps SUBDIR += ocaml-cryptokit SUBDIR += ocaml-ssl SUBDIR += oidentd SUBDIR += oinkmaster SUBDIR += olm SUBDIR += onionscan SUBDIR += op SUBDIR += openbsm SUBDIR += openca-ocspd SUBDIR += openconnect SUBDIR += openconnect-freebsd-daemon SUBDIR += openconnect-gui SUBDIR += opencryptoki SUBDIR += openct SUBDIR += openfhe SUBDIR += openfortivpn SUBDIR += openiked SUBDIR += openiked-portable SUBDIR += opensaml SUBDIR += opensc SUBDIR += openssh-askpass SUBDIR += openssh-portable SUBDIR += openssl SUBDIR += openssl-agent SUBDIR += openssl-quictls SUBDIR += openssl-unsafe SUBDIR += openssl30 SUBDIR += openssl31 SUBDIR += openssl_tpm_engine SUBDIR += openvas SUBDIR += openvpn SUBDIR += openvpn-admin SUBDIR += openvpn-auth-ldap SUBDIR += openvpn-auth-radius SUBDIR += openvpn-auth-script SUBDIR += openvpn-devel SUBDIR += ophcrack SUBDIR += opie SUBDIR += ossec-hids SUBDIR += ossec-hids-agent SUBDIR += ossec-hids-agent-config SUBDIR += ossec-hids-local SUBDIR += ossec-hids-local-config SUBDIR += ossec-hids-server SUBDIR += ossec-hids-server-config SUBDIR += osslsigncode SUBDIR += osv-scanner SUBDIR += otpw SUBDIR += owasp-dependency-check SUBDIR += p11-kit SUBDIR += p5-Alt-Crypt-RSA-BigInt SUBDIR += p5-Apache-Htpasswd SUBDIR += p5-App-Acmeman SUBDIR += p5-App-Genpass SUBDIR += p5-App-TLSMe SUBDIR += p5-Auth-YubikeyDecrypter SUBDIR += p5-AuthCAS SUBDIR += p5-Authen-Bitcard SUBDIR += p5-Authen-Captcha SUBDIR += p5-Authen-CyrusSASL SUBDIR += p5-Authen-DecHpwd SUBDIR += p5-Authen-Htpasswd SUBDIR += p5-Authen-Krb5 SUBDIR += p5-Authen-Krb5-Simple SUBDIR += p5-Authen-Libwrap SUBDIR += p5-Authen-NTLM SUBDIR += p5-Authen-OATH SUBDIR += p5-Authen-PAAS SUBDIR += p5-Authen-PAM SUBDIR += p5-Authen-Passphrase SUBDIR += p5-Authen-PluggableCaptcha SUBDIR += p5-Authen-Radius SUBDIR += p5-Authen-SASL SUBDIR += p5-Authen-SASL-Cyrus SUBDIR += p5-Authen-SASL-SASLprep SUBDIR += p5-Authen-SCRAM SUBDIR += p5-Authen-Simple SUBDIR += p5-Authen-Simple-DBI SUBDIR += p5-Authen-Simple-DBM SUBDIR += p5-Authen-Simple-HTTP SUBDIR += p5-Authen-Simple-Kerberos SUBDIR += p5-Authen-Simple-LDAP SUBDIR += p5-Authen-Simple-Net SUBDIR += p5-Authen-Simple-PAM SUBDIR += p5-Authen-Simple-Passwd SUBDIR += p5-Authen-Simple-RADIUS SUBDIR += p5-Authen-Simple-SMB SUBDIR += p5-Authen-Simple-SSH SUBDIR += p5-Authen-Smb SUBDIR += p5-Authen-TacacsPlus SUBDIR += p5-Authen-Ticket SUBDIR += p5-Authen-TypeKey SUBDIR += p5-Business-PayPal-EWP SUBDIR += p5-Bytes-Random-Secure SUBDIR += p5-Bytes-Random-Secure-Tiny SUBDIR += p5-CACertOrg-CA SUBDIR += p5-CSP SUBDIR += p5-Cisco-Hash SUBDIR += p5-Crypt-Anubis SUBDIR += p5-Crypt-AppleTwoFish SUBDIR += p5-Crypt-Argon2 SUBDIR += p5-Crypt-Bcrypt SUBDIR += p5-Crypt-Blowfish SUBDIR += p5-Crypt-Blowfish_PP SUBDIR += p5-Crypt-CAST5 SUBDIR += p5-Crypt-CAST5_PP SUBDIR += p5-Crypt-CBC SUBDIR += p5-Crypt-CBCeasy SUBDIR += p5-Crypt-CFB SUBDIR += p5-Crypt-Caesar SUBDIR += p5-Crypt-Camellia_PP SUBDIR += p5-Crypt-Chimera SUBDIR += p5-Crypt-CipherSaber SUBDIR += p5-Crypt-Cracklib SUBDIR += p5-Crypt-Ctr SUBDIR += p5-Crypt-Curve25519 SUBDIR += p5-Crypt-DES SUBDIR += p5-Crypt-DES_EDE3 SUBDIR += p5-Crypt-DES_PP SUBDIR += p5-Crypt-DH SUBDIR += p5-Crypt-DSA SUBDIR += p5-Crypt-Dining SUBDIR += p5-Crypt-ECB SUBDIR += p5-Crypt-Eksblowfish SUBDIR += p5-Crypt-Enigma SUBDIR += p5-Crypt-Format SUBDIR += p5-Crypt-GCrypt SUBDIR += p5-Crypt-GOST SUBDIR += p5-Crypt-GOST_PP SUBDIR += p5-Crypt-GPG SUBDIR += p5-Crypt-GeneratePassword SUBDIR += p5-Crypt-GpgME SUBDIR += p5-Crypt-HCE_MD5 SUBDIR += p5-Crypt-HCE_SHA SUBDIR += p5-Crypt-HSXKPasswd SUBDIR += p5-Crypt-IDEA SUBDIR += p5-Crypt-Imail SUBDIR += p5-Crypt-JWT SUBDIR += p5-Crypt-Juniper SUBDIR += p5-Crypt-Khazad SUBDIR += p5-Crypt-LE SUBDIR += p5-Crypt-LibSCEP SUBDIR += p5-Crypt-License SUBDIR += p5-Crypt-Lite SUBDIR += p5-Crypt-Loki97 SUBDIR += p5-Crypt-MySQL SUBDIR += p5-Crypt-NULL SUBDIR += p5-Crypt-OFB SUBDIR += p5-Crypt-OICQ SUBDIR += p5-Crypt-OTP SUBDIR += p5-Crypt-OpenPGP SUBDIR += p5-Crypt-OpenSSL-AES SUBDIR += p5-Crypt-OpenSSL-Bignum SUBDIR += p5-Crypt-OpenSSL-CA SUBDIR += p5-Crypt-OpenSSL-DSA SUBDIR += p5-Crypt-OpenSSL-EC SUBDIR += p5-Crypt-OpenSSL-ECDSA SUBDIR += p5-Crypt-OpenSSL-Guess SUBDIR += p5-Crypt-OpenSSL-PKCS10 SUBDIR += p5-Crypt-OpenSSL-RSA SUBDIR += p5-Crypt-OpenSSL-Random SUBDIR += p5-Crypt-OpenSSL-Verify SUBDIR += p5-Crypt-OpenSSL-X509 SUBDIR += p5-Crypt-PBKDF2 SUBDIR += p5-Crypt-PKCS10 SUBDIR += p5-Crypt-PWSafe3 SUBDIR += p5-Crypt-PassGen SUBDIR += p5-Crypt-Passwd-XS SUBDIR += p5-Crypt-PasswdMD5 SUBDIR += p5-Crypt-Password-Util SUBDIR += p5-Crypt-Perl SUBDIR += p5-Crypt-Primes SUBDIR += p5-Crypt-RC4 SUBDIR += p5-Crypt-RC5 SUBDIR += p5-Crypt-RC6 SUBDIR += p5-Crypt-RHash SUBDIR += p5-Crypt-RIPEMD160 SUBDIR += p5-Crypt-RSA SUBDIR += p5-Crypt-RSA-Parse SUBDIR += p5-Crypt-RSA-Yandex SUBDIR += p5-Crypt-Rabbit SUBDIR += p5-Crypt-RandPasswd SUBDIR += p5-Crypt-Random SUBDIR += p5-Crypt-Random-Seed SUBDIR += p5-Crypt-Random-Source SUBDIR += p5-Crypt-Random-TESHA2 SUBDIR += p5-Crypt-Rijndael SUBDIR += p5-Crypt-Rijndael_PP SUBDIR += p5-Crypt-SKey SUBDIR += p5-Crypt-SMIME SUBDIR += p5-Crypt-SSLeay SUBDIR += p5-Crypt-SSSS SUBDIR += p5-Crypt-Salt SUBDIR += p5-Crypt-SaltedHash SUBDIR += p5-Crypt-Serpent SUBDIR += p5-Crypt-Shark SUBDIR += p5-Crypt-Simple SUBDIR += p5-Crypt-SmbHash SUBDIR += p5-Crypt-Sodium SUBDIR += p5-Crypt-Solitaire SUBDIR += p5-Crypt-TEA SUBDIR += p5-Crypt-T_e_a SUBDIR += p5-Crypt-Tea_JS SUBDIR += p5-Crypt-TripleDES SUBDIR += p5-Crypt-Twofish SUBDIR += p5-Crypt-Twofish2 SUBDIR += p5-Crypt-Twofish_PP SUBDIR += p5-Crypt-URandom SUBDIR += p5-Crypt-UnixCrypt SUBDIR += p5-Crypt-UnixCrypt_XS SUBDIR += p5-Crypt-X509 SUBDIR += p5-Crypt-X509-CRL SUBDIR += p5-Crypt-XTEA SUBDIR += p5-Crypt-xDBM_File SUBDIR += p5-CryptX SUBDIR += p5-Dancer-Plugin-Auth-Extensible SUBDIR += p5-Dancer-Plugin-Auth-Extensible-Provider-Usergroup SUBDIR += p5-Dancer-Plugin-Passphrase SUBDIR += p5-Dancer2-Plugin-Auth-Extensible SUBDIR += p5-Dancer2-Plugin-Auth-Extensible-Provider-DBIC SUBDIR += p5-Dancer2-Plugin-Auth-Extensible-Provider-Database SUBDIR += p5-Dancer2-Plugin-Auth-Extensible-Provider-IMAP SUBDIR += p5-Dancer2-Plugin-Auth-Extensible-Provider-Usergroup SUBDIR += p5-Dancer2-Plugin-Passphrase SUBDIR += p5-Data-Entropy SUBDIR += p5-Data-Password SUBDIR += p5-Digest SUBDIR += p5-Digest-Adler32 SUBDIR += p5-Digest-Bcrypt SUBDIR += p5-Digest-BubbleBabble SUBDIR += p5-Digest-CRC SUBDIR += p5-Digest-Crc32 SUBDIR += p5-Digest-DJB SUBDIR += p5-Digest-DMAC SUBDIR += p5-Digest-EMAC SUBDIR += p5-Digest-Elf SUBDIR += p5-Digest-FNV SUBDIR += p5-Digest-GOST SUBDIR += p5-Digest-HMAC SUBDIR += p5-Digest-Hashcash SUBDIR += p5-Digest-Haval256 SUBDIR += p5-Digest-JHash SUBDIR += p5-Digest-MD2 SUBDIR += p5-Digest-MD4 SUBDIR += p5-Digest-MD5 SUBDIR += p5-Digest-MD5-File SUBDIR += p5-Digest-MD5-M4p SUBDIR += p5-Digest-MD5-Reverse SUBDIR += p5-Digest-ManberHash SUBDIR += p5-Digest-MurmurHash SUBDIR += p5-Digest-Nilsimsa SUBDIR += p5-Digest-Pearson SUBDIR += p5-Digest-Pearson-PurePerl SUBDIR += p5-Digest-Perl-MD4 SUBDIR += p5-Digest-Perl-MD5 SUBDIR += p5-Digest-SHA SUBDIR += p5-Digest-SHA-PurePerl SUBDIR += p5-Digest-SHA1 SUBDIR += p5-Digest-SHA3 SUBDIR += p5-Digest-SV1 SUBDIR += p5-Digest-Tiger SUBDIR += p5-Digest-Whirlpool SUBDIR += p5-File-KeePass SUBDIR += p5-File-KeePass-Agent SUBDIR += p5-File-Scan SUBDIR += p5-File-Scan-ClamAV SUBDIR += p5-Filter-CBC SUBDIR += p5-Filter-Crypto SUBDIR += p5-GD-SecurityImage SUBDIR += p5-GSSAPI SUBDIR += p5-GnuPG SUBDIR += p5-GnuPG-Interface SUBDIR += p5-HTML-Email-Obfuscate SUBDIR += p5-Heimdal-Kadm5 SUBDIR += p5-IO-Async-SSL SUBDIR += p5-IO-Socket-SSL SUBDIR += p5-MD5 SUBDIR += p5-Mcrypt SUBDIR += p5-Module-Signature SUBDIR += p5-Net-Daemon-SSL SUBDIR += p5-Net-OpenID-Common SUBDIR += p5-Net-OpenID-JanRain SUBDIR += p5-Net-OpenID-Server SUBDIR += p5-Net-Radius-Server SUBDIR += p5-Net-SAML SUBDIR += p5-Net-SAML2 SUBDIR += p5-Net-SSH-AuthorizedKeysFile SUBDIR += p5-Net-SSL-ExpireDate SUBDIR += p5-Net-SSLGlue SUBDIR += p5-Net-SSLeay SUBDIR += p5-Net-Server-Mail-ESMTP-AUTH SUBDIR += p5-Net-SinFP SUBDIR += p5-Nmap-Parser SUBDIR += p5-Nmap-Scanner SUBDIR += p5-OpenCA-CRL SUBDIR += p5-OpenCA-CRR SUBDIR += p5-OpenCA-OpenSSL SUBDIR += p5-OpenCA-PKCS7 SUBDIR += p5-OpenCA-REQ SUBDIR += p5-OpenCA-X509 SUBDIR += p5-PBKDF2-Tiny SUBDIR += p5-PGP SUBDIR += p5-PGP-Sign SUBDIR += p5-POE-Component-SSLify SUBDIR += p5-POE-Filter-SSL SUBDIR += p5-Parse-Snort SUBDIR += p5-PerlCryptLib SUBDIR += p5-Protocol-ACME SUBDIR += p5-SAVI-Perl SUBDIR += p5-SHA SUBDIR += p5-Safe-Hole SUBDIR += p5-Session-Token SUBDIR += p5-Snort-Rule SUBDIR += p5-String-MkPasswd SUBDIR += p5-Sudo SUBDIR += p5-Text-Password-Pronounceable SUBDIR += p5-Tie-EncryptedHash SUBDIR += p5-Tree-Authz SUBDIR += p5-URN-OASIS-SAML2 SUBDIR += p5-Unix-Passwd-File SUBDIR += p5-Unix-setuid SUBDIR += p5-Yahoo-BBAuth SUBDIR += p5-dicewaregen SUBDIR += p5-openxpki SUBDIR += p5-openxpki-i18n SUBDIR += p5-plog SUBDIR += palisade SUBDIR += pam-modules SUBDIR += pam-mysql SUBDIR += pam-pgsql SUBDIR += pam_fprint SUBDIR += pam_google_authenticator SUBDIR += pam_helper SUBDIR += pam_howdy SUBDIR += pam_jail SUBDIR += pam_kde SUBDIR += pam_krb5 SUBDIR += pam_krb5-rh SUBDIR += pam_ldap SUBDIR += pam_mkhomedir SUBDIR += pam_ocra SUBDIR += pam_p11 SUBDIR += pam_pkcs11 SUBDIR += pam_pwdfile SUBDIR += pam_require SUBDIR += pam_rssh SUBDIR += pam_script SUBDIR += pam_search_list SUBDIR += pam_ssh_agent_auth SUBDIR += pam_u2f SUBDIR += pam_yubico SUBDIR += pamtester SUBDIR += paperkey SUBDIR += passh SUBDIR += passivedns SUBDIR += pbc SUBDIR += pcsc-tools SUBDIR += pdfcrack SUBDIR += pear-Auth SUBDIR += pear-Auth_HTTP SUBDIR += pear-Auth_PrefManager SUBDIR += pear-Auth_SASL SUBDIR += pear-Auth_SASL2 SUBDIR += pear-Crypt_Blowfish SUBDIR += pear-Crypt_CBC SUBDIR += pear-Crypt_CHAP SUBDIR += pear-Crypt_DiffieHellman SUBDIR += pear-Crypt_GPG SUBDIR += pear-Crypt_HMAC2 SUBDIR += pear-Crypt_MicroID SUBDIR += pear-Crypt_RC4 SUBDIR += pear-Crypt_RSA SUBDIR += pear-Crypt_XXTEA SUBDIR += pear-File_HtAccess SUBDIR += pear-File_Passwd SUBDIR += pear-File_SMBPasswd SUBDIR += pear-HTML_Crypt SUBDIR += pear-Horde_Auth SUBDIR += pear-Horde_Crypt SUBDIR += pear-Horde_Crypt_Blowfish SUBDIR += pear-Horde_Group SUBDIR += pear-Horde_Oauth SUBDIR += pear-Horde_Perms SUBDIR += pear-Horde_Secret SUBDIR += pear-Horde_Share SUBDIR += pear-LiveUser SUBDIR += pear-LiveUser_Admin SUBDIR += pear-Net_Portscan SUBDIR += pear-Text_Password SUBDIR += pecl-crypto SUBDIR += pecl-gnupg SUBDIR += pecl-krb5 SUBDIR += pecl-libsodium SUBDIR += pecl-mcrypt SUBDIR += pecl-pam SUBDIR += pecl-pkcs11 SUBDIR += pecl-scrypt SUBDIR += pecl-ssh2 SUBDIR += peda SUBDIR += pev SUBDIR += pgpdump SUBDIR += pgpgpg SUBDIR += pgpin SUBDIR += php80-filter SUBDIR += php80-sodium SUBDIR += php81-filter SUBDIR += php81-sodium SUBDIR += php82-filter SUBDIR += php82-sodium SUBDIR += picocrypt SUBDIR += picosha2 SUBDIR += pidgin-encryption SUBDIR += pidgin-otr SUBDIR += pinentry SUBDIR += pinentry-curses SUBDIR += pinentry-efl SUBDIR += pinentry-fltk SUBDIR += pinentry-gnome SUBDIR += pinentry-gtk2 SUBDIR += pinentry-qt5 SUBDIR += pinentry-tty SUBDIR += pixiewps SUBDIR += pkcrack SUBDIR += pkcs11-dump SUBDIR += pkcs11-gateway SUBDIR += pkcs11-helper SUBDIR += pkcs11-tools SUBDIR += pkesh SUBDIR += pks SUBDIR += plasma5-kscreenlocker SUBDIR += plasma5-ksshaskpass SUBDIR += plasma5-kwallet-pam SUBDIR += please SUBDIR += poly1305aes SUBDIR += proftpd-mod_clamav SUBDIR += proxycheck SUBDIR += proxytunnel SUBDIR += pssh SUBDIR += pulledpork SUBDIR += pure-sfv SUBDIR += putty SUBDIR += putty-nogtk SUBDIR += pvk SUBDIR += pwauth SUBDIR += pwman SUBDIR += pwned-check SUBDIR += py-RestrictedPython SUBDIR += py-SecretStorage SUBDIR += py-YubiOTP SUBDIR += py-acme SUBDIR += py-acme-tiny SUBDIR += py-ailment SUBDIR += py-angr SUBDIR += py-argon2-cffi SUBDIR += py-argon2-cffi-bindings SUBDIR += py-artifacts SUBDIR += py-asyncssh SUBDIR += py-authlib SUBDIR += py-azure-keyvault-certificates SUBDIR += py-azure-keyvault-keys SUBDIR += py-azure-keyvault-secrets SUBDIR += py-badkeys SUBDIR += py-base58 SUBDIR += py-bcrypt SUBDIR += py-bitbox02 SUBDIR += py-btchip-python SUBDIR += py-cerealizer SUBDIR += py-cert-human SUBDIR += py-certbot SUBDIR += py-certbot-apache SUBDIR += py-certbot-dns-cloudflare SUBDIR += py-certbot-dns-cpanel SUBDIR += py-certbot-dns-digitalocean SUBDIR += py-certbot-dns-dnsimple SUBDIR += py-certbot-dns-dnsmadeeasy SUBDIR += py-certbot-dns-gandi SUBDIR += py-certbot-dns-gehirn SUBDIR += py-certbot-dns-google SUBDIR += py-certbot-dns-linode SUBDIR += py-certbot-dns-luadns SUBDIR += py-certbot-dns-nsone SUBDIR += py-certbot-dns-ovh SUBDIR += py-certbot-dns-powerdns SUBDIR += py-certbot-dns-rfc2136 SUBDIR += py-certbot-dns-route53 SUBDIR += py-certbot-dns-sakuracloud SUBDIR += py-certbot-nginx SUBDIR += py-certifi SUBDIR += py-certstream SUBDIR += py-ckcc-protocol SUBDIR += py-coincurve SUBDIR += py-cpe SUBDIR += py-cryptography SUBDIR += py-cryptography-vectors SUBDIR += py-ctypescrypto SUBDIR += py-cybox SUBDIR += py-dfdatetime SUBDIR += py-dfvfs SUBDIR += py-dfwinreg SUBDIR += py-django-auth-kerberos SUBDIR += py-docker-pycreds SUBDIR += py-ecdsa SUBDIR += py-ed25519ll SUBDIR += py-exscript SUBDIR += py-fail2ban SUBDIR += py-fido2 SUBDIR += py-first-server SUBDIR += py-flask-httpauth SUBDIR += py-flask-kerberos SUBDIR += py-flask-saml SUBDIR += py-gixy SUBDIR += py-gnupg SUBDIR += py-gnutls SUBDIR += py-google-auth SUBDIR += py-google-auth-httplib2 SUBDIR += py-google-auth-oauthlib SUBDIR += py-gpgme SUBDIR += py-gpsoauth SUBDIR += py-gssapi SUBDIR += py-gvm-tools SUBDIR += py-hkdf SUBDIR += py-htpasswd SUBDIR += py-itsdangerous SUBDIR += py-josepy SUBDIR += py-keepkey SUBDIR += py-kerberos SUBDIR += py-keyring SUBDIR += py-keyrings.alt SUBDIR += py-krb5 SUBDIR += py-libnacl SUBDIR += py-m2crypto SUBDIR += py-maec SUBDIR += py-merkletools SUBDIR += py-mixbox SUBDIR += py-mnemonic SUBDIR += py-msoffcrypto-tool SUBDIR += py-muacrypt SUBDIR += py-nassl SUBDIR += py-netbox-secretstore SUBDIR += py-netmiko SUBDIR += py-noiseprotocol SUBDIR += py-notus-scanner SUBDIR += py-ntlm-auth SUBDIR += py-oauth2client SUBDIR += py-oauthlib SUBDIR += py-onlykey SUBDIR += py-openssl SUBDIR += py-oscrypto SUBDIR += py-ospd-openvas SUBDIR += py-paramiko SUBDIR += py-pass-audit SUBDIR += py-pass-git-helper SUBDIR += py-passlib SUBDIR += py-pbkdf2 SUBDIR += py-pem SUBDIR += py-pgpdump SUBDIR += py-pgpy SUBDIR += py-plaso SUBDIR += py-potr SUBDIR += py-pwntools SUBDIR += py-pyaes SUBDIR += py-pyaff4 SUBDIR += py-pyaxo SUBDIR += py-pyblake2 SUBDIR += py-pyclamd SUBDIR += py-pycryptodome SUBDIR += py-pycryptodome-test-vectors SUBDIR += py-pycryptodomex SUBDIR += py-pyelliptic SUBDIR += py-pyhanko-certvalidator SUBDIR += py-pylibacl SUBDIR += py-pymacaroons SUBDIR += py-pynacl SUBDIR += py-pyotp SUBDIR += py-pyotp2289 SUBDIR += py-pysaml2 SUBDIR += py-pysaml24 SUBDIR += py-pysaml26 SUBDIR += py-pyscard SUBDIR += py-pysha3 SUBDIR += py-pysodium SUBDIR += py-pyspnego SUBDIR += py-python-axolotl SUBDIR += py-python-axolotl-curve25519 SUBDIR += py-python-gnupg SUBDIR += py-python-gvm SUBDIR += py-python-jose SUBDIR += py-python-nss SUBDIR += py-python-openid SUBDIR += py-python-pam SUBDIR += py-python-pkcs11 SUBDIR += py-python-registry SUBDIR += py-python3-openid SUBDIR += py-python3-saml SUBDIR += py-pyvex SUBDIR += py-pywinrm SUBDIR += py-requests-credssp SUBDIR += py-requests-kerberos SUBDIR += py-ropgadget SUBDIR += py-ropper SUBDIR += py-rsa SUBDIR += py-safe SUBDIR += py-scp SUBDIR += py-scramp SUBDIR += py-scrypt SUBDIR += py-secure SUBDIR += py-securesystemslib SUBDIR += py-sequoia SUBDIR += py-service_identity SUBDIR += py-signedjson SUBDIR += py-social-auth-core SUBDIR += py-spake2 SUBDIR += py-ssh-audit SUBDIR += py-sshpubkeys SUBDIR += py-sslyze SUBDIR += py-stem SUBDIR += py-stix SUBDIR += py-stix2 SUBDIR += py-stix2-patterns SUBDIR += py-taxii2-client SUBDIR += py-tinyaes SUBDIR += py-tls-parser SUBDIR += py-tlslite SUBDIR += py-tlslite-ng SUBDIR += py-trezor SUBDIR += py-trustme SUBDIR += py-tuf SUBDIR += py-txtorcon SUBDIR += py-uhashring SUBDIR += py-vici SUBDIR += py-virustotal-api SUBDIR += py-volatility3 SUBDIR += py-vpn-slice SUBDIR += py-vulndb SUBDIR += py-webauthn SUBDIR += py-xkcdpass SUBDIR += py-xmlsec SUBDIR += py-yara SUBDIR += py-yara-python-dex SUBDIR += py-yubikey-manager SUBDIR += py-zkg SUBDIR += py-zope.password SUBDIR += py-zxcvbn SUBDIR += qtkeychain SUBDIR += quantis-kmod SUBDIR += racoon2 SUBDIR += ratproxy SUBDIR += rats SUBDIR += rcracki_mt SUBDIR += reop SUBDIR += rhash SUBDIR += rhonabwy SUBDIR += ridl SUBDIR += rifiuti2 SUBDIR += rkhunter SUBDIR += rndpassw SUBDIR += rnp SUBDIR += rotate SUBDIR += rubygem-acme-client SUBDIR += rubygem-aes_key_wrap SUBDIR += rubygem-airbrussh SUBDIR += rubygem-android_key_attestation SUBDIR += rubygem-attr_encrypted SUBDIR += rubygem-bcrypt SUBDIR += rubygem-bcrypt-ruby SUBDIR += rubygem-bcrypt_pbkdf SUBDIR += rubygem-cose SUBDIR += rubygem-cvss-suite SUBDIR += rubygem-declarative_policy SUBDIR += rubygem-devise-two-factor SUBDIR += rubygem-devise-two-factor-rails5 SUBDIR += rubygem-devise-two-factor-rails61 SUBDIR += rubygem-devise-two-factor-rails70 SUBDIR += rubygem-devise_pam_authenticatable2 SUBDIR += rubygem-devise_pam_authenticatable2-rails61 SUBDIR += rubygem-digest SUBDIR += rubygem-digest-crc SUBDIR += rubygem-doorkeeper SUBDIR += rubygem-doorkeeper562 SUBDIR += rubygem-doorkeeper-openid_connect SUBDIR += rubygem-doorkeeper-rails5 SUBDIR += rubygem-doorkeeper-rails50 SUBDIR += rubygem-doorkeeper-rails61 SUBDIR += rubygem-ed25519 SUBDIR += rubygem-ed2551912 SUBDIR += rubygem-encryptor SUBDIR += rubygem-ezcrypto SUBDIR += rubygem-googleauth SUBDIR += rubygem-gpgme SUBDIR += rubygem-gpgr SUBDIR += rubygem-gssapi SUBDIR += rubygem-haiti-hash SUBDIR += rubygem-hkdf SUBDIR += rubygem-hkdf0 SUBDIR += rubygem-hrr_rb_ssh SUBDIR += rubygem-hrr_rb_ssh-ed25519 SUBDIR += rubygem-lockbox SUBDIR += rubygem-metasploit-aggregator SUBDIR += rubygem-metasploit-concern SUBDIR += rubygem-metasploit-credential SUBDIR += rubygem-metasploit-model SUBDIR += rubygem-metasploit-payloads SUBDIR += rubygem-metasploit_data_models SUBDIR += rubygem-metasploit_payloads-mettle SUBDIR += rubygem-nessus_rest SUBDIR += rubygem-net-scp SUBDIR += rubygem-net-scp1 SUBDIR += rubygem-net-sftp SUBDIR += rubygem-net-sftp2 SUBDIR += rubygem-net-ssh SUBDIR += rubygem-net-ssh-gateway SUBDIR += rubygem-net-ssh-krb SUBDIR += rubygem-net-ssh-multi SUBDIR += rubygem-net-ssh5 SUBDIR += rubygem-net-ssh6 SUBDIR += rubygem-net-telnet SUBDIR += rubygem-nexpose SUBDIR += rubygem-nmap-parser SUBDIR += rubygem-omniauth SUBDIR += rubygem-omniauth-alicloud SUBDIR += rubygem-omniauth-atlassian-oauth2 SUBDIR += rubygem-omniauth-bitbucket SUBDIR += rubygem-omniauth-cas SUBDIR += rubygem-omniauth-cas3 SUBDIR += rubygem-omniauth-cas3-oauth2 SUBDIR += rubygem-omniauth-dingtalk-oauth2 SUBDIR += rubygem-omniauth-gitlab SUBDIR += rubygem-omniauth-jwt SUBDIR += rubygem-omniauth-multipassword SUBDIR += rubygem-omniauth-oauth2-generic SUBDIR += rubygem-omniauth-rails_csrf_protection SUBDIR += rubygem-omniauth-saml SUBDIR += rubygem-omniauth-saml1 SUBDIR += rubygem-omniauth-shibboleth SUBDIR += rubygem-omniauth1 SUBDIR += rubygem-openssl SUBDIR += rubygem-openssl-ccm SUBDIR += rubygem-openssl-cmac SUBDIR += rubygem-openssl-signature_algorithm SUBDIR += rubygem-openssl2 SUBDIR += rubygem-openssl221 SUBDIR += rubygem-openvas-omp SUBDIR += rubygem-origami SUBDIR += rubygem-pbkdf2-ruby SUBDIR += rubygem-pundit SUBDIR += rubygem-pundit61 SUBDIR += rubygem-pyu-ruby-sasl SUBDIR += rubygem-rack-oauth2 SUBDIR += rubygem-rack-oauth21 SUBDIR += rubygem-razorback-scriptNugget SUBDIR += rubygem-rbnacl SUBDIR += rubygem-rbnacl-libsodium SUBDIR += rubygem-recog SUBDIR += rubygem-rex-arch SUBDIR += rubygem-rex-bin_tools SUBDIR += rubygem-rex-core SUBDIR += rubygem-rex-encoder SUBDIR += rubygem-rex-exploitation SUBDIR += rubygem-rex-java SUBDIR += rubygem-rex-mime SUBDIR += rubygem-rex-nop SUBDIR += rubygem-rex-ole SUBDIR += rubygem-rex-powershell SUBDIR += rubygem-rex-random_identifier SUBDIR += rubygem-rex-registry SUBDIR += rubygem-rex-rop_builder SUBDIR += rubygem-rex-socket SUBDIR += rubygem-rex-sslscan SUBDIR += rubygem-rex-struct2 SUBDIR += rubygem-rex-text SUBDIR += rubygem-rex-zip SUBDIR += rubygem-roauth SUBDIR += rubygem-rpam2 SUBDIR += rubygem-ruby-hmac SUBDIR += rubygem-ruby-rc4 SUBDIR += rubygem-ruby-saml SUBDIR += rubygem-safety_net_attestation SUBDIR += rubygem-scrypt SUBDIR += rubygem-securecompare SUBDIR += rubygem-securerandom SUBDIR += rubygem-signet SUBDIR += rubygem-six SUBDIR += rubygem-ssh_data SUBDIR += rubygem-sshkey SUBDIR += rubygem-sshkit SUBDIR += rubygem-sslshake SUBDIR += rubygem-ssrf_filter SUBDIR += rubygem-timfel-krb5 SUBDIR += rubygem-tpm-key_attestation SUBDIR += rubygem-twitter_oauth SUBDIR += rubygem-unix-crypt SUBDIR += rubygem-vault SUBDIR += rubygem-webauthn SUBDIR += rubygem-webpush SUBDIR += rustscan SUBDIR += s2n-tls SUBDIR += safesh SUBDIR += samhain SUBDIR += samhain-client SUBDIR += samhain-server SUBDIR += sancp SUBDIR += sasp SUBDIR += scanlogd SUBDIR += scrypt SUBDIR += seahorse SUBDIR += seal SUBDIR += seccure SUBDIR += seclists SUBDIR += secpanel SUBDIR += sectok SUBDIR += secure_delete SUBDIR += sedutil SUBDIR += sequoia SUBDIR += setaudit SUBDIR += sha1collisiondetection SUBDIR += sha2wordlist SUBDIR += shibboleth-idp SUBDIR += shibboleth-sp SUBDIR += sig2dot SUBDIR += signify SUBDIR += signing-party SUBDIR += silktools SUBDIR += sks SUBDIR += smurflog SUBDIR += sniffglue SUBDIR += snoopy SUBDIR += snort SUBDIR += snort-rep SUBDIR += snort2pfcd SUBDIR += snort3 SUBDIR += snortsam SUBDIR += snortsnarf SUBDIR += snowflake-tor SUBDIR += snuffleupagus SUBDIR += softether SUBDIR += softether-devel SUBDIR += softether5 SUBDIR += softhsm2 SUBDIR += solana SUBDIR += sops SUBDIR += spass SUBDIR += spass-qt5 SUBDIR += spectre-meltdown-checker SUBDIR += spm SUBDIR += sqlmap SUBDIR += sqlninja SUBDIR += srm SUBDIR += ssb SUBDIR += ssdeep SUBDIR += ssh-import-id SUBDIR += ssh-multiadd SUBDIR += ssh-tools SUBDIR += ssh-vault SUBDIR += sshguard SUBDIR += sshpass SUBDIR += ssl-admin SUBDIR += ssllabs-scan SUBDIR += sslproxy SUBDIR += sslscan SUBDIR += sslsplit SUBDIR += sssd SUBDIR += ssss SUBDIR += sst SUBDIR += starttls SUBDIR += steghide SUBDIR += stegify SUBDIR += step-certificates SUBDIR += step-cli SUBDIR += stoken SUBDIR += strongswan SUBDIR += stunnel SUBDIR += subversion-gnome-keyring SUBDIR += sudo SUBDIR += sudoscript SUBDIR += super SUBDIR += suricata SUBDIR += swatchdog SUBDIR += tailscale SUBDIR += tang SUBDIR += tclsasl SUBDIR += tcpcrypt SUBDIR += teleport SUBDIR += testssl.sh SUBDIR += tfhe SUBDIR += tfsec SUBDIR += theonionbox SUBDIR += tinc SUBDIR += tinc-devel SUBDIR += tinyca SUBDIR += tls-check SUBDIR += tor SUBDIR += tor-devel SUBDIR += totp-cli SUBDIR += tpm-quote-tools SUBDIR += tpm-tools SUBDIR += tpm2-abrmd SUBDIR += tpm2-tools SUBDIR += tpm2-tss SUBDIR += trezord SUBDIR += tripwire SUBDIR += trousers SUBDIR += tthsum SUBDIR += u2f-devd SUBDIR += uacme SUBDIR += ubuntu-keyring SUBDIR += unhide SUBDIR += unix-selfauth-helper SUBDIR += vanguards-tor SUBDIR += vault SUBDIR += vaultwarden SUBDIR += veracrypt SUBDIR += vigenere SUBDIR += vlock SUBDIR += vm-to-tor SUBDIR += vouch-proxy SUBDIR += vpnc SUBDIR += vuls SUBDIR += vuxml SUBDIR += vxquery SUBDIR += wapiti SUBDIR += wazuh-agent SUBDIR += wazuh-dashboard SUBDIR += wazuh-indexer SUBDIR += wazuh-manager SUBDIR += wazuh-server SUBDIR += webfwlog SUBDIR += weggli SUBDIR += whatweb SUBDIR += wipe SUBDIR += wolfssh SUBDIR += wolfssl SUBDIR += wpa_supplicant SUBDIR += wpa_supplicant-devel SUBDIR += wpa_supplicant29 SUBDIR += xca SUBDIR += xinetd SUBDIR += xml-security SUBDIR += xmlsec1 SUBDIR += xorsearch SUBDIR += xray-core SUBDIR += yafic SUBDIR += yapet SUBDIR += yara SUBDIR += yersinia SUBDIR += ykclient SUBDIR += ykpers SUBDIR += ylva SUBDIR += yubico-piv-tool SUBDIR += yubikey-agent SUBDIR += yubikey-manager-qt SUBDIR += yubikey-personalization-gui SUBDIR += yubioath-desktop SUBDIR += zaproxy SUBDIR += zeek SUBDIR += zeronet SUBDIR += zxid SUBDIR += zzuf .include diff --git a/security/howdy/Makefile b/security/howdy/Makefile new file mode 100644 index 000000000000..675fca7c5aca --- /dev/null +++ b/security/howdy/Makefile @@ -0,0 +1,52 @@ +PORTNAME= howdy +PORTVERSION= 3.0.0.b +CATEGORIES= security + +MAINTAINER= arrowd@FreeBSD.org +COMMENT= Windows Hello(TM) style authentication provider +WWW= https://github.com/boltgolt/howdy + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= opencv>0:graphics/opencv \ + ${PYTHON_PKGNAMEPREFIX}python-pam>0:security/py-python-pam@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dlib>0:science/py-dlib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}numpy>0:math/py-numpy@${PY_FLAVOR} + +USES= python:run shebangfix + +USE_GITHUB= yes +GH_ACCOUNT= boltgolt +GH_PROJECT= howdy +GH_TAGNAME= 30728a6d3634479c24ffd4e094c34a30bbb43058 + +SHEBANG_GLOB= *.py + +NO_BUILD= yes +NO_ARCH= yes +STRIP= + +post-patch: + ${ECHO_CMD} 'config_dir = "${ETCDIR}"' >> ${WRKSRC}/howdy/src/paths.py + ${ECHO_CMD} 'dlib_data_dir = "${LOCALBASE}/share/dlib-data/"' >> ${WRKSRC}/howdy/src/paths.py + ${ECHO_CMD} 'user_models_dir = "/var/db/howdy/models/"' >> ${WRKSRC}/howdy/src/paths.py + +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/howdy + cd ${WRKSRC}/howdy/src/ && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/libexec/howdy + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${MV} ${STAGEDIR}${PREFIX}/libexec/howdy/config.ini ${STAGEDIR}${ETCDIR}/config.ini.sample + ${LN} -s ../libexec/howdy/cli.py ${STAGEDIR}${PREFIX}/bin/howdy + ${INSTALL_PROGRAM} ${WRKSRC}/howdy/src/cli.py ${STAGEDIR}${PREFIX}/libexec/howdy + + ${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions + ${INSTALL_DATA} ${WRKSRC}/howdy/src/autocomplete/howdy ${STAGEDIR}${PREFIX}/share/bash-completion/completions/ + + ${RM} -r ${STAGEDIR}${PREFIX}/libexec/howdy/autocomplete + ${RM} -r ${STAGEDIR}${PREFIX}/libexec/howdy/dlib-data + ${RM} -r ${STAGEDIR}${PREFIX}/libexec/howdy/pam + ${RM} -r ${STAGEDIR}${PREFIX}/libexec/howdy/pam-config + +.include diff --git a/security/howdy/distinfo b/security/howdy/distinfo new file mode 100644 index 000000000000..8b91fb02664b --- /dev/null +++ b/security/howdy/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1680193772 +SHA256 (boltgolt-howdy-3.0.0.b-30728a6d3634479c24ffd4e094c34a30bbb43058_GH0.tar.gz) = 76078fbfb48a186678476cf9844987c97793a71135f1e612d761350c6b27fa42 +SIZE (boltgolt-howdy-3.0.0.b-30728a6d3634479c24ffd4e094c34a30bbb43058_GH0.tar.gz) = 130651 diff --git a/security/howdy/files/patch-paths b/security/howdy/files/patch-paths new file mode 100644 index 000000000000..57e375f2dea5 --- /dev/null +++ b/security/howdy/files/patch-paths @@ -0,0 +1,429 @@ +From 30034c66d72e8e15e2ad5db68d1a5940df2568b6 Mon Sep 17 00:00:00 2001 +From: Gleb Popov <6yearold@gmail.com> +Date: Thu, 30 Mar 2023 21:55:11 +0300 +Subject: [PATCH] Put all path variables into a separate module. + +This makes it easier for downstream packagers to customize where howdy installs +its files. +--- + howdy/src/cli/add.py | 22 ++++++++++------------ + howdy/src/cli/clear.py | 9 ++++----- + howdy/src/cli/config.py | 3 ++- + howdy/src/cli/disable.py | 3 ++- + howdy/src/cli/list.py | 7 +++---- + howdy/src/cli/remove.py | 9 ++++----- + howdy/src/cli/set.py | 3 ++- + howdy/src/cli/snap.py | 5 ++--- + howdy/src/cli/test.py | 11 ++++++----- + howdy/src/compare.py | 18 ++++++++---------- + howdy/src/paths.py | 12 ++++++++++++ + howdy/src/snapshot.py | 15 ++++++--------- + 12 files changed, 61 insertions(+), 56 deletions(-) + create mode 100644 howdy/src/paths.py + +diff --git a/howdy/src/cli/add.py b/howdy/src/cli/add.py +index 7a6d9eca..5a63bdfe 100644 +--- a/howdy/src/cli/add.py ++++ ./howdy/src/cli/add.py +@@ -8,6 +8,7 @@ + import configparser + import builtins + import numpy as np ++import paths + + from recorders.video_capture import VideoCapture + from i18n import _ +@@ -26,39 +27,36 @@ + # OpenCV needs to be imported after dlib + import cv2 + +-# Define the absolute path to the config directory +-config_path = "/etc/howdy" +- + # Test if at lest 1 of the data files is there and abort if it's not +-if not os.path.isfile(config_path + "/dlib-data/shape_predictor_5_face_landmarks.dat"): ++if not os.path.isfile(paths.dlib_data_dir + "shape_predictor_5_face_landmarks.dat"): + print(_("Data files have not been downloaded, please run the following commands:")) +- print("\n\tcd " + config_path + "/dlib-data") ++ print("\n\tcd " + paths.dlib_data_dir) + print("\tsudo ./install.sh\n") + sys.exit(1) + + # Read config from disk + config = configparser.ConfigParser() +-config.read(config_path + "/config.ini") ++config.read(paths.config_dir + "/config.ini") + + use_cnn = config.getboolean("core", "use_cnn", fallback=False) + if use_cnn: +- face_detector = dlib.cnn_face_detection_model_v1(config_path + "/dlib-data/mmod_human_face_detector.dat") ++ face_detector = dlib.cnn_face_detection_model_v1(paths.dlib_data_dir + "mmod_human_face_detector.dat") + else: + face_detector = dlib.get_frontal_face_detector() + +-pose_predictor = dlib.shape_predictor(config_path + "/dlib-data/shape_predictor_5_face_landmarks.dat") +-face_encoder = dlib.face_recognition_model_v1(config_path + "/dlib-data/dlib_face_recognition_resnet_model_v1.dat") ++pose_predictor = dlib.shape_predictor(paths.dlib_data_dir + "shape_predictor_5_face_landmarks.dat") ++face_encoder = dlib.face_recognition_model_v1(paths.dlib_data_dir + "dlib_face_recognition_resnet_model_v1.dat") + + user = builtins.howdy_user + # The permanent file to store the encoded model in +-enc_file = config_path + "/models/" + user + ".dat" ++enc_file = paths.user_models_dir + user + ".dat" + # Known encodings + encodings = [] + + # Make the ./models folder if it doesn't already exist +-if not os.path.exists(config_path + "/models"): ++if not os.path.exists(paths.user_models_dir): + print(_("No face model folder found, creating one")) +- os.makedirs(config_path + "/models") ++ os.makedirs(paths.user_models_dir) + + # To try read a premade encodings file if it exists + try: +diff --git a/howdy/src/cli/clear.py b/howdy/src/cli/clear.py +index 6fa5f3ef..aa43e152 100644 +--- a/howdy/src/cli/clear.py ++++ ./howdy/src/cli/clear.py +@@ -4,21 +4,20 @@ + import os + import sys + import builtins ++import paths + + from i18n import _ + +-# Get the full path to this file +-path = "/etc/howdy/models" + # Get the passed user + user = builtins.howdy_user + + # Check if the models folder is there +-if not os.path.exists(path): ++if not os.path.exists(paths.user_models_dir): + print(_("No models created yet, can't clear them if they don't exist")) + sys.exit(1) + + # Check if the user has a models file to delete +-if not os.path.isfile(path + "/" + user + ".dat"): ++if not os.path.isfile(paths.user_models_dir + user + ".dat"): + print(_("{} has no models or they have been cleared already").format(user)) + sys.exit(1) + +@@ -34,5 +33,5 @@ + sys.exit(1) + + # Delete otherwise +-os.remove(path + "/" + user + ".dat") ++os.remove(paths.user_models_dir + user + ".dat") + print(_("\nModels cleared")) +diff --git a/howdy/src/cli/config.py b/howdy/src/cli/config.py +index 71064839..04c51798 100644 +--- a/howdy/src/cli/config.py ++++ ./howdy/src/cli/config.py +@@ -3,6 +3,7 @@ + # Import required modules + import os + import subprocess ++import paths + + from i18n import _ + +@@ -19,4 +20,4 @@ + editor = "/etc/alternatives/editor" + + # Open the editor as a subprocess and fork it +-subprocess.call([editor, "/etc/howdy/config.ini"]) ++subprocess.call([editor, paths.config_dir + "config.ini"]) +diff --git a/howdy/src/cli/disable.py b/howdy/src/cli/disable.py +index be78c97f..1f655412 100644 +--- a/howdy/src/cli/disable.py ++++ ./howdy/src/cli/disable.py +@@ -6,11 +6,12 @@ + import builtins + import fileinput + import configparser ++import paths + + from i18n import _ + + # Get the absolute filepath +-config_path = os.path.dirname("/etc/howdy") + "/config.ini" ++config_path = os.path.dirname(paths.config_dir) + "/config.ini" + + # Read config from disk + config = configparser.ConfigParser() +diff --git a/howdy/src/cli/list.py b/howdy/src/cli/list.py +index 3532e9f8..7539837d 100644 +--- a/howdy/src/cli/list.py ++++ ./howdy/src/cli/list.py +@@ -6,21 +6,20 @@ + import json + import time + import builtins ++import paths + + from i18n import _ + +-# Get the absolute path and the username +-path = "/etc/howdy" + user = builtins.howdy_user + + # Check if the models file has been created yet +-if not os.path.exists(path + "/models"): ++if not os.path.exists(paths.user_models_dir): + print(_("Face models have not been initialized yet, please run:")) + print("\n\tsudo howdy -U " + user + " add\n") + sys.exit(1) + + # Path to the models file +-enc_file = path + "/models/" + user + ".dat" ++enc_file = paths.user_models_dir + user + ".dat" + + # Try to load the models file and abort if the user does not have it yet + try: +diff --git a/howdy/src/cli/remove.py b/howdy/src/cli/remove.py +index 6321e0b5..37894422 100644 +--- a/howdy/src/cli/remove.py ++++ ./howdy/src/cli/remove.py +@@ -5,11 +5,10 @@ + import os + import json + import builtins ++import paths + + from i18n import _ + +-# Get the absolute path and the username +-path = "/etc/howdy" + user = builtins.howdy_user + + # Check if enough arguments have been passed +@@ -22,13 +21,13 @@ + sys.exit(1) + + # Check if the models file has been created yet +-if not os.path.exists(path + "/models"): ++if not os.path.exists(paths.user_models_dir): + print(_("Face models have not been initialized yet, please run:")) + print("\n\thowdy add\n") + sys.exit(1) + + # Path to the models file +-enc_file = path + "/models/" + user + ".dat" ++enc_file = paths.user_models_dir + user + ".dat" + + # Try to load the models file and abort if the user does not have it yet + try: +@@ -72,7 +71,7 @@ + + # Remove the entire file if this encoding is the only one + if len(encodings) == 1: +- os.remove(path + "/models/" + user + ".dat") ++ os.remove(paths.user_models_dir + user + ".dat") + print(_("Removed last model, howdy disabled for user")) + else: + # A place holder to contain the encodings that will remain +diff --git a/howdy/src/cli/set.py b/howdy/src/cli/set.py +index 14d15c20..efbbee5b 100644 +--- a/howdy/src/cli/set.py ++++ ./howdy/src/cli/set.py +@@ -5,11 +5,12 @@ + import os + import builtins + import fileinput ++import paths + + from i18n import _ + + # Get the absolute filepath +-config_path = os.path.dirname("/etc/howdy") + "/config.ini" ++config_path = os.path.dirname(paths.config_dir) + "/config.ini" + + # Check if enough arguments have been passed + if len(builtins.howdy_args.arguments) < 2: +diff --git a/howdy/src/cli/snap.py b/howdy/src/cli/snap.py +index cbcae501..2c625d3b 100644 +--- a/howdy/src/cli/snap.py ++++ ./howdy/src/cli/snap.py +@@ -5,15 +5,14 @@ + import configparser + import datetime + import snapshot ++import paths + from recorders.video_capture import VideoCapture + + from i18n import _ + +-path = "/etc/howdy" +- + # Read the config + config = configparser.ConfigParser() +-config.read(path + "/config.ini") ++config.read(paths.config_dir + "config.ini") + + # Start video capture + video_capture = VideoCapture(config) +diff --git a/howdy/src/cli/test.py b/howdy/src/cli/test.py +index 3a6e4d19..563be19b 100644 +--- a/howdy/src/cli/test.py ++++ ./howdy/src/cli/test.py +@@ -10,6 +10,7 @@ + import dlib + import cv2 + import numpy as np ++import paths + + from i18n import _ + from recorders.video_capture import VideoCapture +@@ -19,7 +20,7 @@ + + # Read config from disk + config = configparser.ConfigParser() +-config.read(path + "/config.ini") ++config.read(paths.config_dir + "config.ini") + + if config.get("video", "recording_plugin", fallback="opencv") != "opencv": + print(_("Howdy has been configured to use a recorder which doesn't support the test command yet, aborting")) +@@ -59,20 +60,20 @@ def print_text(line_number, text): + + if use_cnn: + face_detector = dlib.cnn_face_detection_model_v1( +- path + "/dlib-data/mmod_human_face_detector.dat" ++ paths.dlib_data_dir + "mmod_human_face_detector.dat" + ) + else: + face_detector = dlib.get_frontal_face_detector() + +-pose_predictor = dlib.shape_predictor(path + "/dlib-data/shape_predictor_5_face_landmarks.dat") +-face_encoder = dlib.face_recognition_model_v1(path + "/dlib-data/dlib_face_recognition_resnet_model_v1.dat") ++pose_predictor = dlib.shape_predictor(paths.dlib_data_dir + "shape_predictor_5_face_landmarks.dat") ++face_encoder = dlib.face_recognition_model_v1(paths.dlib_data_dir + "dlib_face_recognition_resnet_model_v1.dat") + + encodings = [] + models = None + + try: + user = builtins.howdy_user +- models = json.load(open(path + "/models/" + user + ".dat")) ++ models = json.load(open(paths.user_models_dir + user + ".dat")) + + for model in models: + encodings += model["data"] +diff --git a/howdy/src/compare.py b/howdy/src/compare.py +index 99f5285b..f81fe386 100644 +--- a/howdy/src/compare.py ++++ ./howdy/src/compare.py +@@ -23,6 +23,7 @@ + import snapshot + import numpy as np + import _thread as thread ++import paths + + # Allow imports from the local howdy folder + sys.path.append('/lib/security/howdy') +@@ -48,22 +49,22 @@ def init_detector(lock): + global face_detector, pose_predictor, face_encoder + + # Test if at lest 1 of the data files is there and abort if it's not +- if not os.path.isfile(PATH + "/dlib-data/shape_predictor_5_face_landmarks.dat"): ++ if not os.path.isfile(paths.dlib_data_dir + "shape_predictor_5_face_landmarks.dat"): + print(_("Data files have not been downloaded, please run the following commands:")) +- print("\n\tcd " + PATH + "/dlib-data") ++ print("\n\tcd " + paths.dlib_data_dir) + print("\tsudo ./install.sh\n") + lock.release() + exit(1) + + # Use the CNN detector if enabled + if use_cnn: +- face_detector = dlib.cnn_face_detection_model_v1(PATH + "/dlib-data/mmod_human_face_detector.dat") ++ face_detector = dlib.cnn_face_detection_model_v1(paths.dlib_data_dir + "mmod_human_face_detector.dat") + else: + face_detector = dlib.get_frontal_face_detector() + + # Start the others regardless +- pose_predictor = dlib.shape_predictor(PATH + "/dlib-data/shape_predictor_5_face_landmarks.dat") +- face_encoder = dlib.face_recognition_model_v1(PATH + "/dlib-data/dlib_face_recognition_resnet_model_v1.dat") ++ pose_predictor = dlib.shape_predictor(paths.dlib_data_dir + "shape_predictor_5_face_landmarks.dat") ++ face_encoder = dlib.face_recognition_model_v1(paths.dlib_data_dir + "dlib_face_recognition_resnet_model_v1.dat") + + # Note the time it took to initialize detectors + timings["ll"] = time.time() - timings["ll"] +@@ -103,9 +104,6 @@ def send_to_ui(type, message): + if len(sys.argv) < 2: + exit(12) + +-# Get the absolute path to the config directory +-PATH = "/etc/howdy" +- + # The username of the user being authenticated + user = sys.argv[1] + # The model file contents +@@ -129,7 +127,7 @@ def send_to_ui(type, message): + + # Try to load the face model from the models folder + try: +- models = json.load(open(PATH + "/models/" + user + ".dat")) ++ models = json.load(open(paths.user_models_dir + user + ".dat")) + + for model in models: + encodings += model["data"] +@@ -142,7 +140,7 @@ def send_to_ui(type, message): + + # Read config from disk + config = configparser.ConfigParser() +-config.read(PATH + "/config.ini") ++config.read(paths.config_dir + "config.ini") + + # Get all config values needed + use_cnn = config.getboolean("core", "use_cnn", fallback=False) +diff --git a/howdy/src/paths.py b/howdy/src/paths.py +new file mode 100644 +index 00000000..22825405 +--- /dev/null ++++ ./howdy/src/paths.py +@@ -0,0 +1,12 @@ ++ ++# Define the absolute path to the config directory ++config_dir = "/etc/howdy/" ++ ++# Define the absolute path to the DLib models data directory ++dlib_data_dir = config_dir + "/dlib-data/" ++ ++# Define the absolute path to the Howdy user models directory ++user_models_dir = config_dir + "/models/" ++ ++# Define path to any howdy logs ++log_path = "/var/log/howdy" +diff --git a/howdy/src/snapshot.py b/howdy/src/snapshot.py +index 324b5789..9f2f563c 100644 +--- a/howdy/src/snapshot.py ++++ ./howdy/src/snapshot.py +@@ -49,19 +49,16 @@ def generate(frames, text_lines): + + line_number += 1 + +- # Define path to any howdy logs +- log_path = "/var/log/howdy" +- + # Made sure a snapshot folder exist +- if not os.path.exists(log_path): +- os.makedirs(log_path) +- if not os.path.exists(log_path + "/snapshots"): +- os.makedirs(log_path + "/snapshots") ++ if not os.path.exists(paths.log_path): ++ os.makedirs(paths.log_path) ++ if not os.path.exists(paths.log_path + "/snapshots"): ++ os.makedirs(paths.log_path + "/snapshots") + + # Generate a filename based on the current time + filename = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%S.jpg") + # Write the image to that file +- cv2.imwrite(log_path + "/snapshots/" + filename, snap) ++ cv2.imwrite(paths.log_path + "/snapshots/" + filename, snap) + + # Return the saved file location +- return log_path + "/snapshots/" + filename ++ return paths.log_path + "/snapshots/" + filename diff --git a/security/howdy/pkg-descr b/security/howdy/pkg-descr new file mode 100644 index 000000000000..1fd314d7c55e --- /dev/null +++ b/security/howdy/pkg-descr @@ -0,0 +1,3 @@ +Howdy is an authentication tool that allows you to unlock your desktop +session using your webcam. It uses facial recognition to authenticate and +unlock the session. diff --git a/security/howdy/pkg-plist b/security/howdy/pkg-plist new file mode 100644 index 000000000000..5353cffca512 --- /dev/null +++ b/security/howdy/pkg-plist @@ -0,0 +1,27 @@ +bin/howdy +@sample %%ETCDIR%%/config.ini.sample +libexec/howdy/cli.py +libexec/howdy/cli/__init__.py +libexec/howdy/cli/add.py +libexec/howdy/cli/clear.py +libexec/howdy/cli/config.py +libexec/howdy/cli/disable.py +libexec/howdy/cli/list.py +libexec/howdy/cli/remove.py +libexec/howdy/cli/set.py +libexec/howdy/cli/snap.py +libexec/howdy/cli/test.py +libexec/howdy/compare.py +libexec/howdy/i18n.py +libexec/howdy/logo.png +libexec/howdy/paths.py +libexec/howdy/recorders/__init__.py +libexec/howdy/recorders/ffmpeg_reader.py +libexec/howdy/recorders/pyv4l2_reader.py +libexec/howdy/recorders/v4l2.py +libexec/howdy/recorders/video_capture.py +libexec/howdy/rubberstamps/__init__.py +libexec/howdy/rubberstamps/hotkey.py +libexec/howdy/rubberstamps/nod.py +libexec/howdy/snapshot.py +share/bash-completion/completions/howdy