pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/security/hashcat



Module Name:    pkgsrc
Committed By:   adam
Date:           Fri Aug  8 07:24:00 UTC 2025

Modified Files:
        pkgsrc/security/hashcat: Makefile PLIST distinfo
        pkgsrc/security/hashcat/patches: patch-src_Makefile
Added Files:
        pkgsrc/security/hashcat/patches: patch-include_sort__r.h
            patch-include_terminal.h patch-src_affinity.c
            patch-src_bridges_bridge__argon2id__reference.mk
            patch-src_bridges_bridge__python__generic__hash__mp.mk
            patch-src_bridges_bridge__python__generic__hash__sp.mk
            patch-src_bridges_bridge__scrypt__jane.mk
            patch-src_bridges_bridge__scrypt__yescrypt.mk patch-src_folder.c
            patch-src_memory.c patch-src_shared.c patch-src_terminal.c

Log Message:
hashcat: updated to 7.0.0

7.0.0

Major New Features

Assimilation Bridge: Integrate external resources like CPUs, FPGAs, embedded interpreters, and more into the cracking pipeline.
Python Bridge Plugin: Rapidly implement hash-matching logic in Python. No recompilation needed, supports multithreading and rule engine by default.
Virtual Backend Devices: Internally partitions physical GPUs into multiple logical devices for better bridge integration and async workloads.
Hash-Mode Autodetection: Omit the -m flag and let Hashcat detect the hash-mode, or use --identify to list possibilities.
Docker Build Support: Build Hashcat in a fully containerized, cross-platform environment, including cross-compilation to Windows.

New Algorithm Support

58 new application-specific hash types, including Argon2, MetaMask, Microsoft Online Account, SNMPv3, GPG, OpenSSH, and LUKS2
17 new generic hash constructions used in real-world web apps and protocols
11 new primitives added to the crypto library, improving reuse and plugin development
20 new tools to extract hashes from popular sources, including APFS, Virtualbox, BitLocker, and various wallet formats

Performance Improvements

Complete refactor of the autotuning engine for better device utilization
Major rewrite of memory management to eliminate previous 4GB allocation caps and enable full memory usage across devices
Improved tuning for hash-modes like NTLM, NetNTLMv2, and RAR3
Updated tuning database entries and lower overhead for multi-device setups
Optimizations to several individual hash-modes including:
scrypt: up to +320%
RAR3: up to +54%
NetNTLMv2: +223% (Intel)


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 pkgsrc/security/hashcat/Makefile
cvs rdiff -u -r1.2 -r1.3 pkgsrc/security/hashcat/PLIST \
    pkgsrc/security/hashcat/distinfo
cvs rdiff -u -r0 -r1.3 \
    pkgsrc/security/hashcat/patches/patch-include_sort__r.h \
    pkgsrc/security/hashcat/patches/patch-src_affinity.c \
    pkgsrc/security/hashcat/patches/patch-src_folder.c \
    pkgsrc/security/hashcat/patches/patch-src_terminal.c
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/security/hashcat/patches/patch-include_terminal.h \
    pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__argon2id__reference.mk \
    pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__mp.mk \
    pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__sp.mk \
    pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__jane.mk \
    pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__yescrypt.mk \
    pkgsrc/security/hashcat/patches/patch-src_memory.c \
    pkgsrc/security/hashcat/patches/patch-src_shared.c
cvs rdiff -u -r1.2 -r1.3 pkgsrc/security/hashcat/patches/patch-src_Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/security/hashcat/Makefile
diff -u pkgsrc/security/hashcat/Makefile:1.4 pkgsrc/security/hashcat/Makefile:1.5
--- pkgsrc/security/hashcat/Makefile:1.4        Sun May  5 11:33:12 2024
+++ pkgsrc/security/hashcat/Makefile    Fri Aug  8 07:23:59 2025
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.4 2024/05/05 11:33:12 gdt Exp $
+# $NetBSD: Makefile,v 1.5 2025/08/08 07:23:59 adam Exp $
 
-DISTNAME=      hashcat-6.2.6
+DISTNAME=      hashcat-7.0.0
 CATEGORIES=    security
 MASTER_SITES=  https://hashcat.net/files/
 
@@ -9,18 +9,34 @@ HOMEPAGE=     https://hashcat.net/
 COMMENT=       World's fastest and most advanced password recovery utility
 LICENSE=       mit
 
-USE_LANGUAGES= c c++
-USE_TOOLS+=    gmake gsed
+USE_CXX_FEATURES=      c++14
+USE_LANGUAGES=         c c++
+USE_TOOLS+=            gmake gsed
+
 BUILD_TARGET=  hashcat
 MAKE_ENV+=     SHARED=1
-MAKE_ENV+=     USE_SYSTEM_ZLIB=1
 MAKE_ENV+=     USE_SYSTEM_XXHASH=1
+MAKE_ENV+=     USE_SYSTEM_ZLIB=1
+.if ${MACHINE_ARCH} == "aarch64"
+MAKE_ENV+=     IS_ARM=1
+CFLAGS+=       -march=armv8-a+fp+simd
+.else
+MAKE_ENV+=     IS_ARM=0
+.endif
 
 .include "../../mk/bsd.fast.prefs.mk"
 # see include/common.h
 BROKEN_ON_PLATFORM+=   ${BIGENDIANPLATFORMS}
 
+REPLACE_PERL=  tools/*.pl
+REPLACE_PYTHON=        tools/*.py
+
+post-install:
+       ${RM} ${DESTDIR}${PREFIX}/include/hashcat/sort_r.h.orig
+       ${RM} ${DESTDIR}${PREFIX}/include/hashcat/terminal.h.orig
+
 .include "../../archivers/minizip/buildlink3.mk"
 .include "../../devel/xxhash/buildlink3.mk"
 .include "../../devel/zlib/buildlink3.mk"
+.include "../../lang/python/application.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/security/hashcat/PLIST
diff -u pkgsrc/security/hashcat/PLIST:1.2 pkgsrc/security/hashcat/PLIST:1.3
--- pkgsrc/security/hashcat/PLIST:1.2   Mon Sep  5 11:13:56 2022
+++ pkgsrc/security/hashcat/PLIST       Fri Aug  8 07:23:59 2025
@@ -1,5 +1,29 @@
-@comment $NetBSD: PLIST,v 1.2 2022/09/05 11:13:56 adam Exp $
+@comment $NetBSD: PLIST,v 1.3 2025/08/08 07:23:59 adam Exp $
+bin/aescrypt2hashcat.pl
+bin/apfs2hashcat.py
+bin/bisq2hashcat.py
+bin/bitlocker2hashcat.py
+bin/bitwarden2hashcat.py
+bin/cachedata2hashcat.py
+bin/cryptoloop2hashcat.py
+bin/exodus2hashcat.py
+bin/gitea2hashcat.py
 bin/hashcat
+bin/keybag2hashcat.py
+bin/kremlin2hashcat.py
+bin/lastpass2hashcat.py
+bin/luks2hashcat.py
+bin/metamask2hashcat.py
+bin/mozilla2hashcat.py
+bin/radmin3_to_hashcat.pl
+bin/securenotes2hashcat.pl
+bin/shiro1-to-hashcat.py
+bin/sqlcipher2hashcat.pl
+bin/truecrypt2hashcat.py
+bin/veeamvbk2hashcat.py
+bin/veracrypt2hashcat.py
+bin/virtualbox2hashcat.py
+bin/vmwarevmx2hashcat.py
 include/hashcat/affinity.h
 include/hashcat/autotune.h
 include/hashcat/backend.h
@@ -7,11 +31,13 @@ include/hashcat/benchmark.h
 include/hashcat/bitmap.h
 include/hashcat/bitops.h
 include/hashcat/brain.h
+include/hashcat/bridges.h
 include/hashcat/combinator.h
 include/hashcat/common.h
 include/hashcat/convert.h
 include/hashcat/cpt.h
 include/hashcat/cpu_crc32.h
+include/hashcat/cpu_features.h
 include/hashcat/debugfile.h
 include/hashcat/dictstat.h
 include/hashcat/dispatch.h
@@ -44,6 +70,7 @@ include/hashcat/ext_nvml.h
 include/hashcat/ext_nvrtc.h
 include/hashcat/ext_sysfs_amdgpu.h
 include/hashcat/ext_sysfs_cpu.h
+include/hashcat/ext_sysfs_intelgpu.h
 include/hashcat/filehandling.h
 include/hashcat/folder.h
 include/hashcat/hashcat.h
@@ -183,6 +210,7 @@ share/doc/hashcat/charsets/standard/Poli
 share/doc/hashcat/charsets/standard/Portuguese/pt_ISO-8859-1.hcchr
 share/doc/hashcat/charsets/standard/Portuguese/pt_ISO-8859-15.hcchr
 share/doc/hashcat/charsets/standard/Portuguese/pt_cp1252.hcchr
+share/doc/hashcat/charsets/standard/Romanian/ro_ISO-8859-2.hcchr
 share/doc/hashcat/charsets/standard/Russian/ru_ISO-8859-5.hcchr
 share/doc/hashcat/charsets/standard/Russian/ru_KOI8-R.hcchr
 share/doc/hashcat/charsets/standard/Russian/ru_cp1251.hcchr
@@ -195,22 +223,33 @@ share/doc/hashcat/charsets/standard/Span
 share/doc/hashcat/docs/changes.txt
 share/doc/hashcat/docs/contact.txt
 share/doc/hashcat/docs/credits.txt
+share/doc/hashcat/docs/device_status_code.txt
+share/doc/hashcat/docs/exit_status_code.txt
+share/doc/hashcat/docs/hashcat-assimilation-bridge-development.md
+share/doc/hashcat/docs/hashcat-assimilation-bridge.md
 share/doc/hashcat/docs/hashcat-brain.md
+share/doc/hashcat/docs/hashcat-example_hashes.md
+share/doc/hashcat/docs/hashcat-help.md
 share/doc/hashcat/docs/hashcat-plugin-development-guide.md
+share/doc/hashcat/docs/hashcat-python-plugin-development-guide.md
+share/doc/hashcat/docs/hashcat-python-plugin-quickstart.md
+share/doc/hashcat/docs/hashcat-python-plugin-requirements.md
 share/doc/hashcat/docs/keyboard-layout-mapping.md
 share/doc/hashcat/docs/license.txt
 share/doc/hashcat/docs/license_libs/LZMA_SDK_LICENSE.txt
 share/doc/hashcat/docs/license_libs/MINIZ_LICENSE.txt
 share/doc/hashcat/docs/license_libs/OPENCL_HEADERS_LICENSE.txt
+share/doc/hashcat/docs/license_libs/SSE2NEON_LICENSE.txt
 share/doc/hashcat/docs/license_libs/UNRAR_LICENSE.txt
 share/doc/hashcat/docs/license_libs/XXHASH_LICENSE.txt
 share/doc/hashcat/docs/license_libs/ZLIB_LICENSE.txt
 share/doc/hashcat/docs/limits.txt
 share/doc/hashcat/docs/performance.txt
 share/doc/hashcat/docs/readme.txt
+share/doc/hashcat/docs/releases_notes_v7.0.0.md
+share/doc/hashcat/docs/releases_notes_v7.0.0.pdf
 share/doc/hashcat/docs/rules.txt
 share/doc/hashcat/docs/slow-candidates-mode.md
-share/doc/hashcat/docs/status_codes.txt
 share/doc/hashcat/docs/team.txt
 share/doc/hashcat/docs/user_manuals.txt
 share/doc/hashcat/example.dict
@@ -225,6 +264,7 @@ share/doc/hashcat/extra/tab_completion/h
 share/doc/hashcat/extra/tab_completion/install
 share/doc/hashcat/layouts/ch_de.hckmap
 share/doc/hashcat/layouts/ch_fr.hckmap
+share/doc/hashcat/layouts/da.hckmap
 share/doc/hashcat/layouts/de.hckmap
 share/doc/hashcat/layouts/it.hckmap
 share/doc/hashcat/layouts/ru.hckmap
@@ -250,7 +290,7 @@ share/doc/hashcat/rules/T0XlC.rule
 share/doc/hashcat/rules/T0XlC_3_rule.rule
 share/doc/hashcat/rules/T0XlC_insert_HTML_entities_0_Z.rule
 share/doc/hashcat/rules/T0XlCv2.rule
-share/doc/hashcat/rules/best64.rule
+share/doc/hashcat/rules/best66.rule
 share/doc/hashcat/rules/combinator.rule
 share/doc/hashcat/rules/d3ad0ne.rule
 share/doc/hashcat/rules/dive.rule
@@ -328,26 +368,14 @@ share/doc/hashcat/rules/leetspeak.rule
 share/doc/hashcat/rules/oscommerce.rule
 share/doc/hashcat/rules/rockyou-30000.rule
 share/doc/hashcat/rules/specific.rule
+share/doc/hashcat/rules/stacking58.rule
 share/doc/hashcat/rules/toggles1.rule
 share/doc/hashcat/rules/toggles2.rule
 share/doc/hashcat/rules/toggles3.rule
 share/doc/hashcat/rules/toggles4.rule
 share/doc/hashcat/rules/toggles5.rule
+share/doc/hashcat/rules/top10_2025.rule
 share/doc/hashcat/rules/unix-ninja-leetspeak.rule
-share/doc/hashcat/tools/aescrypt2hashcat.pl
-share/doc/hashcat/tools/bitwarden2hashcat.py
-share/doc/hashcat/tools/cryptoloop2hashcat.py
-share/doc/hashcat/tools/exodus2hashcat.py
-share/doc/hashcat/tools/luks2hashcat.py
-share/doc/hashcat/tools/metamask2hashcat.py
-share/doc/hashcat/tools/mozilla2hashcat.py
-share/doc/hashcat/tools/radmin3_to_hashcat.pl
-share/doc/hashcat/tools/securenotes2hashcat.pl
-share/doc/hashcat/tools/sqlcipher2hashcat.pl
-share/doc/hashcat/tools/truecrypt2hashcat.py
-share/doc/hashcat/tools/veracrypt2hashcat.py
-share/doc/hashcat/tools/virtualbox2hashcat.py
-share/doc/hashcat/tools/vmwarevmx2hashcat.py
 share/hashcat/OpenCL/amp_a0.cl
 share/hashcat/OpenCL/amp_a1.cl
 share/hashcat/OpenCL/amp_a3.cl
@@ -360,6 +388,8 @@ share/hashcat/OpenCL/inc_cipher_aes.cl
 share/hashcat/OpenCL/inc_cipher_aes.h
 share/hashcat/OpenCL/inc_cipher_camellia.cl
 share/hashcat/OpenCL/inc_cipher_camellia.h
+share/hashcat/OpenCL/inc_cipher_cast.cl
+share/hashcat/OpenCL/inc_cipher_cast.h
 share/hashcat/OpenCL/inc_cipher_des.cl
 share/hashcat/OpenCL/inc_cipher_des.h
 share/hashcat/OpenCL/inc_cipher_kuznyechik.cl
@@ -376,6 +406,8 @@ share/hashcat/OpenCL/inc_comp_multi.cl
 share/hashcat/OpenCL/inc_comp_multi.h
 share/hashcat/OpenCL/inc_comp_multi_bs.cl
 share/hashcat/OpenCL/inc_comp_multi_bs.h
+share/hashcat/OpenCL/inc_comp_multi_iba.cl
+share/hashcat/OpenCL/inc_comp_multi_iba.h
 share/hashcat/OpenCL/inc_comp_single.cl
 share/hashcat/OpenCL/inc_comp_single.h
 share/hashcat/OpenCL/inc_comp_single_bs.cl
@@ -384,16 +416,24 @@ share/hashcat/OpenCL/inc_diskcryptor_xts
 share/hashcat/OpenCL/inc_diskcryptor_xts.h
 share/hashcat/OpenCL/inc_ecc_secp256k1.cl
 share/hashcat/OpenCL/inc_ecc_secp256k1.h
+share/hashcat/OpenCL/inc_hash_argon2.cl
+share/hashcat/OpenCL/inc_hash_argon2.h
 share/hashcat/OpenCL/inc_hash_base58.cl
 share/hashcat/OpenCL/inc_hash_base58.h
 share/hashcat/OpenCL/inc_hash_blake2b.cl
 share/hashcat/OpenCL/inc_hash_blake2b.h
+share/hashcat/OpenCL/inc_hash_blake2s.cl
+share/hashcat/OpenCL/inc_hash_blake2s.h
 share/hashcat/OpenCL/inc_hash_md4.cl
 share/hashcat/OpenCL/inc_hash_md4.h
 share/hashcat/OpenCL/inc_hash_md5.cl
 share/hashcat/OpenCL/inc_hash_md5.h
 share/hashcat/OpenCL/inc_hash_ripemd160.cl
 share/hashcat/OpenCL/inc_hash_ripemd160.h
+share/hashcat/OpenCL/inc_hash_ripemd320.cl
+share/hashcat/OpenCL/inc_hash_ripemd320.h
+share/hashcat/OpenCL/inc_hash_scrypt.cl
+share/hashcat/OpenCL/inc_hash_scrypt.h
 share/hashcat/OpenCL/inc_hash_sha1.cl
 share/hashcat/OpenCL/inc_hash_sha1.h
 share/hashcat/OpenCL/inc_hash_sha224.cl
@@ -404,6 +444,8 @@ share/hashcat/OpenCL/inc_hash_sha384.cl
 share/hashcat/OpenCL/inc_hash_sha384.h
 share/hashcat/OpenCL/inc_hash_sha512.cl
 share/hashcat/OpenCL/inc_hash_sha512.h
+share/hashcat/OpenCL/inc_hash_sm3.cl
+share/hashcat/OpenCL/inc_hash_sm3.h
 share/hashcat/OpenCL/inc_hash_streebog256.cl
 share/hashcat/OpenCL/inc_hash_streebog256.h
 share/hashcat/OpenCL/inc_hash_streebog512.cl
@@ -428,6 +470,8 @@ share/hashcat/OpenCL/inc_platform.h
 share/hashcat/OpenCL/inc_radmin3_constants.h
 share/hashcat/OpenCL/inc_rp.cl
 share/hashcat/OpenCL/inc_rp.h
+share/hashcat/OpenCL/inc_rp_common.cl
+share/hashcat/OpenCL/inc_rp_common.h
 share/hashcat/OpenCL/inc_rp_optimized.cl
 share/hashcat/OpenCL/inc_rp_optimized.h
 share/hashcat/OpenCL/inc_scalar.cl
@@ -723,6 +767,12 @@ share/hashcat/OpenCL/m02610_a1-optimized
 share/hashcat/OpenCL/m02610_a1-pure.cl
 share/hashcat/OpenCL/m02610_a3-optimized.cl
 share/hashcat/OpenCL/m02610_a3-pure.cl
+share/hashcat/OpenCL/m02630_a0-optimized.cl
+share/hashcat/OpenCL/m02630_a0-pure.cl
+share/hashcat/OpenCL/m02630_a1-optimized.cl
+share/hashcat/OpenCL/m02630_a1-pure.cl
+share/hashcat/OpenCL/m02630_a3-optimized.cl
+share/hashcat/OpenCL/m02630_a3-pure.cl
 share/hashcat/OpenCL/m02710_a0-optimized.cl
 share/hashcat/OpenCL/m02710_a1-optimized.cl
 share/hashcat/OpenCL/m02710_a3-optimized.cl
@@ -745,12 +795,21 @@ share/hashcat/OpenCL/m03500_a1-optimized
 share/hashcat/OpenCL/m03500_a1-pure.cl
 share/hashcat/OpenCL/m03500_a3-optimized.cl
 share/hashcat/OpenCL/m03500_a3-pure.cl
+share/hashcat/OpenCL/m03610_a0-optimized.cl
+share/hashcat/OpenCL/m03610_a0-pure.cl
+share/hashcat/OpenCL/m03610_a1-optimized.cl
+share/hashcat/OpenCL/m03610_a1-pure.cl
+share/hashcat/OpenCL/m03610_a3-optimized.cl
+share/hashcat/OpenCL/m03610_a3-pure.cl
 share/hashcat/OpenCL/m03710_a0-optimized.cl
 share/hashcat/OpenCL/m03710_a0-pure.cl
 share/hashcat/OpenCL/m03710_a1-optimized.cl
 share/hashcat/OpenCL/m03710_a1-pure.cl
 share/hashcat/OpenCL/m03710_a3-optimized.cl
 share/hashcat/OpenCL/m03710_a3-pure.cl
+share/hashcat/OpenCL/m03730_a0-pure.cl
+share/hashcat/OpenCL/m03730_a1-pure.cl
+share/hashcat/OpenCL/m03730_a3-pure.cl
 share/hashcat/OpenCL/m03800_a0-optimized.cl
 share/hashcat/OpenCL/m03800_a0-pure.cl
 share/hashcat/OpenCL/m03800_a1-optimized.cl
@@ -793,6 +852,18 @@ share/hashcat/OpenCL/m04410_a1-optimized
 share/hashcat/OpenCL/m04410_a1-pure.cl
 share/hashcat/OpenCL/m04410_a3-optimized.cl
 share/hashcat/OpenCL/m04410_a3-pure.cl
+share/hashcat/OpenCL/m04420_a0-optimized.cl
+share/hashcat/OpenCL/m04420_a0-pure.cl
+share/hashcat/OpenCL/m04420_a1-optimized.cl
+share/hashcat/OpenCL/m04420_a1-pure.cl
+share/hashcat/OpenCL/m04420_a3-optimized.cl
+share/hashcat/OpenCL/m04420_a3-pure.cl
+share/hashcat/OpenCL/m04430_a0-optimized.cl
+share/hashcat/OpenCL/m04430_a0-pure.cl
+share/hashcat/OpenCL/m04430_a1-optimized.cl
+share/hashcat/OpenCL/m04430_a1-pure.cl
+share/hashcat/OpenCL/m04430_a3-optimized.cl
+share/hashcat/OpenCL/m04430_a3-pure.cl
 share/hashcat/OpenCL/m04500_a0-optimized.cl
 share/hashcat/OpenCL/m04500_a0-pure.cl
 share/hashcat/OpenCL/m04500_a1-optimized.cl
@@ -880,6 +951,12 @@ share/hashcat/OpenCL/m06000_a1-optimized
 share/hashcat/OpenCL/m06000_a1-pure.cl
 share/hashcat/OpenCL/m06000_a3-optimized.cl
 share/hashcat/OpenCL/m06000_a3-pure.cl
+share/hashcat/OpenCL/m06050_a0-pure.cl
+share/hashcat/OpenCL/m06050_a1-pure.cl
+share/hashcat/OpenCL/m06050_a3-pure.cl
+share/hashcat/OpenCL/m06060_a0-pure.cl
+share/hashcat/OpenCL/m06060_a1-pure.cl
+share/hashcat/OpenCL/m06060_a3-pure.cl
 share/hashcat/OpenCL/m06100_a0-optimized.cl
 share/hashcat/OpenCL/m06100_a0-pure.cl
 share/hashcat/OpenCL/m06100_a1-optimized.cl
@@ -918,6 +995,12 @@ share/hashcat/OpenCL/m07300_a1-optimized
 share/hashcat/OpenCL/m07300_a1-pure.cl
 share/hashcat/OpenCL/m07300_a3-optimized.cl
 share/hashcat/OpenCL/m07300_a3-pure.cl
+share/hashcat/OpenCL/m07350_a0-optimized.cl
+share/hashcat/OpenCL/m07350_a0-pure.cl
+share/hashcat/OpenCL/m07350_a1-optimized.cl
+share/hashcat/OpenCL/m07350_a1-pure.cl
+share/hashcat/OpenCL/m07350_a3-optimized.cl
+share/hashcat/OpenCL/m07350_a3-pure.cl
 share/hashcat/OpenCL/m07400-optimized.cl
 share/hashcat/OpenCL/m07400-pure.cl
 share/hashcat/OpenCL/m07500_a0-optimized.cl
@@ -1015,6 +1098,7 @@ share/hashcat/OpenCL/m10420_a0-optimized
 share/hashcat/OpenCL/m10420_a1-optimized.cl
 share/hashcat/OpenCL/m10420_a3-optimized.cl
 share/hashcat/OpenCL/m10500-pure.cl
+share/hashcat/OpenCL/m10510-pure.cl
 share/hashcat/OpenCL/m10700-optimized.cl
 share/hashcat/OpenCL/m10700-pure.cl
 share/hashcat/OpenCL/m10800_a0-optimized.cl
@@ -1077,8 +1161,11 @@ share/hashcat/OpenCL/m11400_a0-pure.cl
 share/hashcat/OpenCL/m11400_a1-pure.cl
 share/hashcat/OpenCL/m11400_a3-pure.cl
 share/hashcat/OpenCL/m11500_a0-optimized.cl
+share/hashcat/OpenCL/m11500_a0-pure.cl
 share/hashcat/OpenCL/m11500_a1-optimized.cl
+share/hashcat/OpenCL/m11500_a1-pure.cl
 share/hashcat/OpenCL/m11500_a3-optimized.cl
+share/hashcat/OpenCL/m11500_a3-pure.cl
 share/hashcat/OpenCL/m11600-optimized.cl
 share/hashcat/OpenCL/m11600-pure.cl
 share/hashcat/OpenCL/m11700_a0-optimized.cl
@@ -1107,6 +1194,7 @@ share/hashcat/OpenCL/m11860_a1-pure.cl
 share/hashcat/OpenCL/m11860_a3-pure.cl
 share/hashcat/OpenCL/m11900-pure.cl
 share/hashcat/OpenCL/m12000-pure.cl
+share/hashcat/OpenCL/m12150-pure.cl
 share/hashcat/OpenCL/m12200-pure.cl
 share/hashcat/OpenCL/m12300-pure.cl
 share/hashcat/OpenCL/m12400-pure.cl
@@ -1176,6 +1264,7 @@ share/hashcat/OpenCL/m14000_a3-pure.cl
 share/hashcat/OpenCL/m14100_a0-pure.cl
 share/hashcat/OpenCL/m14100_a1-pure.cl
 share/hashcat/OpenCL/m14100_a3-pure.cl
+share/hashcat/OpenCL/m14200-pure.cl
 share/hashcat/OpenCL/m14400_a0-optimized.cl
 share/hashcat/OpenCL/m14400_a0-pure.cl
 share/hashcat/OpenCL/m14400_a1-optimized.cl
@@ -1302,6 +1391,9 @@ share/hashcat/OpenCL/m16800-pure.cl
 share/hashcat/OpenCL/m16801-pure.cl
 share/hashcat/OpenCL/m16900-pure.cl
 share/hashcat/OpenCL/m17010-pure.cl
+share/hashcat/OpenCL/m17020-pure.cl
+share/hashcat/OpenCL/m17030-pure.cl
+share/hashcat/OpenCL/m17040-pure.cl
 share/hashcat/OpenCL/m17200_a0-pure.cl
 share/hashcat/OpenCL/m17200_a1-pure.cl
 share/hashcat/OpenCL/m17200_a3-pure.cl
@@ -1393,9 +1485,18 @@ share/hashcat/OpenCL/m20710_a1-optimized
 share/hashcat/OpenCL/m20710_a1-pure.cl
 share/hashcat/OpenCL/m20710_a3-optimized.cl
 share/hashcat/OpenCL/m20710_a3-pure.cl
+share/hashcat/OpenCL/m20712_a0-optimized.cl
+share/hashcat/OpenCL/m20712_a0-pure.cl
+share/hashcat/OpenCL/m20712_a1-optimized.cl
+share/hashcat/OpenCL/m20712_a1-pure.cl
+share/hashcat/OpenCL/m20712_a3-optimized.cl
+share/hashcat/OpenCL/m20712_a3-pure.cl
 share/hashcat/OpenCL/m20720_a0-pure.cl
 share/hashcat/OpenCL/m20720_a1-pure.cl
 share/hashcat/OpenCL/m20720_a3-pure.cl
+share/hashcat/OpenCL/m20730_a0-pure.cl
+share/hashcat/OpenCL/m20730_a1-pure.cl
+share/hashcat/OpenCL/m20730_a3-pure.cl
 share/hashcat/OpenCL/m20800_a0-optimized.cl
 share/hashcat/OpenCL/m20800_a0-pure.cl
 share/hashcat/OpenCL/m20800_a1-optimized.cl
@@ -1429,6 +1530,9 @@ share/hashcat/OpenCL/m21200_a3-pure.cl
 share/hashcat/OpenCL/m21300_a0-pure.cl
 share/hashcat/OpenCL/m21300_a1-pure.cl
 share/hashcat/OpenCL/m21300_a3-pure.cl
+share/hashcat/OpenCL/m21310_a0-pure.cl
+share/hashcat/OpenCL/m21310_a1-pure.cl
+share/hashcat/OpenCL/m21310_a3-pure.cl
 share/hashcat/OpenCL/m21400_a0-optimized.cl
 share/hashcat/OpenCL/m21400_a0-pure.cl
 share/hashcat/OpenCL/m21400_a1-optimized.cl
@@ -1442,6 +1546,9 @@ share/hashcat/OpenCL/m21500-pure.cl
 share/hashcat/OpenCL/m21600-pure.cl
 share/hashcat/OpenCL/m21700-pure.cl
 share/hashcat/OpenCL/m21800-pure.cl
+share/hashcat/OpenCL/m21900_a0-pure.cl
+share/hashcat/OpenCL/m21900_a1-pure.cl
+share/hashcat/OpenCL/m21900_a3-pure.cl
 share/hashcat/OpenCL/m22000-pure.cl
 share/hashcat/OpenCL/m22001-pure.cl
 share/hashcat/OpenCL/m22100-pure.cl
@@ -1466,6 +1573,9 @@ share/hashcat/OpenCL/m22500_a3-optimized
 share/hashcat/OpenCL/m22500_a3-pure.cl
 share/hashcat/OpenCL/m22600-pure.cl
 share/hashcat/OpenCL/m22700-pure.cl
+share/hashcat/OpenCL/m22800_a0-pure.cl
+share/hashcat/OpenCL/m22800_a1-pure.cl
+share/hashcat/OpenCL/m22800_a3-pure.cl
 share/hashcat/OpenCL/m22911_a0-pure.cl
 share/hashcat/OpenCL/m22911_a1-pure.cl
 share/hashcat/OpenCL/m22911_a3-pure.cl
@@ -1510,6 +1620,7 @@ share/hashcat/OpenCL/m23700-pure.cl
 share/hashcat/OpenCL/m23800-optimized.cl
 share/hashcat/OpenCL/m23800-pure.cl
 share/hashcat/OpenCL/m23900-pure.cl
+share/hashcat/OpenCL/m24000-pure.cl
 share/hashcat/OpenCL/m24100-pure.cl
 share/hashcat/OpenCL/m24200-pure.cl
 share/hashcat/OpenCL/m24300_a0-optimized.cl
@@ -1572,6 +1683,7 @@ share/hashcat/OpenCL/m26403_a1-optimized
 share/hashcat/OpenCL/m26403_a3-optimized.cl
 share/hashcat/OpenCL/m26500-pure.cl
 share/hashcat/OpenCL/m26600-pure.cl
+share/hashcat/OpenCL/m26610-pure.cl
 share/hashcat/OpenCL/m26700-pure.cl
 share/hashcat/OpenCL/m26800-pure.cl
 share/hashcat/OpenCL/m26900-pure.cl
@@ -1592,11 +1704,17 @@ share/hashcat/OpenCL/m27800_a0-optimized
 share/hashcat/OpenCL/m27800_a1-optimized.cl
 share/hashcat/OpenCL/m27800_a3-optimized.cl
 share/hashcat/OpenCL/m27900_a0-optimized.cl
+share/hashcat/OpenCL/m27900_a0-pure.cl
 share/hashcat/OpenCL/m27900_a1-optimized.cl
+share/hashcat/OpenCL/m27900_a1-pure.cl
 share/hashcat/OpenCL/m27900_a3-optimized.cl
+share/hashcat/OpenCL/m27900_a3-pure.cl
 share/hashcat/OpenCL/m28000_a0-optimized.cl
+share/hashcat/OpenCL/m28000_a0-pure.cl
 share/hashcat/OpenCL/m28000_a1-optimized.cl
+share/hashcat/OpenCL/m28000_a1-pure.cl
 share/hashcat/OpenCL/m28000_a3-optimized.cl
+share/hashcat/OpenCL/m28000_a3-pure.cl
 share/hashcat/OpenCL/m28100-pure.cl
 share/hashcat/OpenCL/m28200-pure.cl
 share/hashcat/OpenCL/m28300_a0-pure.cl
@@ -1635,11 +1753,171 @@ share/hashcat/OpenCL/m29200_a1-pure.cl
 share/hashcat/OpenCL/m29200_a3-pure.cl
 share/hashcat/OpenCL/m29600-pure.cl
 share/hashcat/OpenCL/m29700-pure.cl
+share/hashcat/OpenCL/m29910-pure.cl
+share/hashcat/OpenCL/m29920-pure.cl
+share/hashcat/OpenCL/m29930-pure.cl
+share/hashcat/OpenCL/m29940-pure.cl
+share/hashcat/OpenCL/m30420_a0-optimized.cl
+share/hashcat/OpenCL/m30420_a0-pure.cl
+share/hashcat/OpenCL/m30420_a1-optimized.cl
+share/hashcat/OpenCL/m30420_a1-pure.cl
+share/hashcat/OpenCL/m30420_a3-optimized.cl
+share/hashcat/OpenCL/m30420_a3-pure.cl
+share/hashcat/OpenCL/m30500_a0-optimized.cl
+share/hashcat/OpenCL/m30500_a0-pure.cl
+share/hashcat/OpenCL/m30500_a1-optimized.cl
+share/hashcat/OpenCL/m30500_a1-pure.cl
+share/hashcat/OpenCL/m30500_a3-optimized.cl
+share/hashcat/OpenCL/m30500_a3-pure.cl
+share/hashcat/OpenCL/m30600-pure.cl
+share/hashcat/OpenCL/m30601-pure.cl
+share/hashcat/OpenCL/m30700_a0-optimized.cl
+share/hashcat/OpenCL/m30700_a0-pure.cl
+share/hashcat/OpenCL/m30700_a1-optimized.cl
+share/hashcat/OpenCL/m30700_a1-pure.cl
+share/hashcat/OpenCL/m30700_a3-optimized.cl
+share/hashcat/OpenCL/m30700_a3-pure.cl
+share/hashcat/OpenCL/m30901_a0-pure.cl
+share/hashcat/OpenCL/m30901_a1-pure.cl
+share/hashcat/OpenCL/m30901_a3-pure.cl
+share/hashcat/OpenCL/m30902_a0-pure.cl
+share/hashcat/OpenCL/m30902_a1-pure.cl
+share/hashcat/OpenCL/m30902_a3-pure.cl
+share/hashcat/OpenCL/m30905_a0-pure.cl
+share/hashcat/OpenCL/m30905_a1-pure.cl
+share/hashcat/OpenCL/m30905_a3-pure.cl
+share/hashcat/OpenCL/m30906_a0-pure.cl
+share/hashcat/OpenCL/m30906_a1-pure.cl
+share/hashcat/OpenCL/m30906_a3-pure.cl
+share/hashcat/OpenCL/m31000_a0-optimized.cl
+share/hashcat/OpenCL/m31000_a0-pure.cl
+share/hashcat/OpenCL/m31000_a1-optimized.cl
+share/hashcat/OpenCL/m31000_a1-pure.cl
+share/hashcat/OpenCL/m31000_a3-optimized.cl
+share/hashcat/OpenCL/m31000_a3-pure.cl
+share/hashcat/OpenCL/m31100_a0-optimized.cl
+share/hashcat/OpenCL/m31100_a0-pure.cl
+share/hashcat/OpenCL/m31100_a1-optimized.cl
+share/hashcat/OpenCL/m31100_a1-pure.cl
+share/hashcat/OpenCL/m31100_a3-optimized.cl
+share/hashcat/OpenCL/m31100_a3-pure.cl
+share/hashcat/OpenCL/m31200-pure.cl
+share/hashcat/OpenCL/m31300_a0-optimized.cl
+share/hashcat/OpenCL/m31300_a0-pure.cl
+share/hashcat/OpenCL/m31300_a1-optimized.cl
+share/hashcat/OpenCL/m31300_a1-pure.cl
+share/hashcat/OpenCL/m31300_a3-optimized.cl
+share/hashcat/OpenCL/m31300_a3-pure.cl
+share/hashcat/OpenCL/m31400_a0-optimized.cl
+share/hashcat/OpenCL/m31400_a0-pure.cl
+share/hashcat/OpenCL/m31400_a1-optimized.cl
+share/hashcat/OpenCL/m31400_a1-pure.cl
+share/hashcat/OpenCL/m31400_a3-optimized.cl
+share/hashcat/OpenCL/m31400_a3-pure.cl
+share/hashcat/OpenCL/m31500-pure.cl
+share/hashcat/OpenCL/m31600-pure.cl
+share/hashcat/OpenCL/m31700_a0-pure.cl
+share/hashcat/OpenCL/m31700_a1-pure.cl
+share/hashcat/OpenCL/m31700_a3-pure.cl
+share/hashcat/OpenCL/m31800-pure.cl
+share/hashcat/OpenCL/m31900-pure.cl
+share/hashcat/OpenCL/m32000-pure.cl
+share/hashcat/OpenCL/m32010-pure.cl
+share/hashcat/OpenCL/m32020-pure.cl
+share/hashcat/OpenCL/m32030-pure.cl
+share/hashcat/OpenCL/m32040-pure.cl
+share/hashcat/OpenCL/m32100-pure.cl
+share/hashcat/OpenCL/m32200-pure.cl
+share/hashcat/OpenCL/m32300_a0-optimized.cl
+share/hashcat/OpenCL/m32300_a0-pure.cl
+share/hashcat/OpenCL/m32300_a1-optimized.cl
+share/hashcat/OpenCL/m32300_a1-pure.cl
+share/hashcat/OpenCL/m32300_a3-optimized.cl
+share/hashcat/OpenCL/m32300_a3-pure.cl
+share/hashcat/OpenCL/m32410_a0-pure.cl
+share/hashcat/OpenCL/m32410_a1-pure.cl
+share/hashcat/OpenCL/m32410_a3-pure.cl
+share/hashcat/OpenCL/m32420_a0-pure.cl
+share/hashcat/OpenCL/m32420_a1-pure.cl
+share/hashcat/OpenCL/m32420_a3-pure.cl
+share/hashcat/OpenCL/m32500-pure.cl
+share/hashcat/OpenCL/m32600_a0-pure.cl
+share/hashcat/OpenCL/m32600_a1-pure.cl
+share/hashcat/OpenCL/m32600_a3-pure.cl
+share/hashcat/OpenCL/m32700-pure.cl
+share/hashcat/OpenCL/m32800_a0-optimized.cl
+share/hashcat/OpenCL/m32800_a0-pure.cl
+share/hashcat/OpenCL/m32800_a1-optimized.cl
+share/hashcat/OpenCL/m32800_a1-pure.cl
+share/hashcat/OpenCL/m32800_a3-optimized.cl
+share/hashcat/OpenCL/m32800_a3-pure.cl
+share/hashcat/OpenCL/m32900-pure.cl
+share/hashcat/OpenCL/m33000_a0-pure.cl
+share/hashcat/OpenCL/m33000_a1-pure.cl
+share/hashcat/OpenCL/m33000_a3-pure.cl
+share/hashcat/OpenCL/m33100_a0-pure.cl
+share/hashcat/OpenCL/m33100_a1-pure.cl
+share/hashcat/OpenCL/m33100_a3-pure.cl
+share/hashcat/OpenCL/m33300_a0-pure.cl
+share/hashcat/OpenCL/m33300_a1-pure.cl
+share/hashcat/OpenCL/m33300_a3-pure.cl
+share/hashcat/OpenCL/m33400-pure.cl
+share/hashcat/OpenCL/m33500_a0-optimized.cl
+share/hashcat/OpenCL/m33500_a1-optimized.cl
+share/hashcat/OpenCL/m33500_a3-optimized.cl
+share/hashcat/OpenCL/m33501_a0-optimized.cl
+share/hashcat/OpenCL/m33501_a1-optimized.cl
+share/hashcat/OpenCL/m33501_a3-optimized.cl
+share/hashcat/OpenCL/m33502_a0-optimized.cl
+share/hashcat/OpenCL/m33502_a1-optimized.cl
+share/hashcat/OpenCL/m33502_a3-optimized.cl
+share/hashcat/OpenCL/m33600_a0-optimized.cl
+share/hashcat/OpenCL/m33600_a0-pure.cl
+share/hashcat/OpenCL/m33600_a1-optimized.cl
+share/hashcat/OpenCL/m33600_a1-pure.cl
+share/hashcat/OpenCL/m33600_a3-optimized.cl
+share/hashcat/OpenCL/m33600_a3-pure.cl
+share/hashcat/OpenCL/m33650_a0-pure.cl
+share/hashcat/OpenCL/m33650_a1-pure.cl
+share/hashcat/OpenCL/m33650_a3-pure.cl
+share/hashcat/OpenCL/m33660_a0-pure.cl
+share/hashcat/OpenCL/m33660_a1-pure.cl
+share/hashcat/OpenCL/m33660_a3-pure.cl
+share/hashcat/OpenCL/m33700-pure.cl
+share/hashcat/OpenCL/m33800-pure.cl
+share/hashcat/OpenCL/m34000-pure.cl
+share/hashcat/OpenCL/m34100-pure.cl
+share/hashcat/OpenCL/m34200_a0-optimized.cl
+share/hashcat/OpenCL/m34200_a0-pure.cl
+share/hashcat/OpenCL/m34200_a1-optimized.cl
+share/hashcat/OpenCL/m34200_a1-pure.cl
+share/hashcat/OpenCL/m34200_a3-optimized.cl
+share/hashcat/OpenCL/m34200_a3-pure.cl
+share/hashcat/OpenCL/m34201_a0-optimized.cl
+share/hashcat/OpenCL/m34201_a0-pure.cl
+share/hashcat/OpenCL/m34201_a1-optimized.cl
+share/hashcat/OpenCL/m34201_a1-pure.cl
+share/hashcat/OpenCL/m34201_a3-optimized.cl
+share/hashcat/OpenCL/m34201_a3-pure.cl
+share/hashcat/OpenCL/m34211_a0-optimized.cl
+share/hashcat/OpenCL/m34211_a0-pure.cl
+share/hashcat/OpenCL/m34211_a1-optimized.cl
+share/hashcat/OpenCL/m34211_a1-pure.cl
+share/hashcat/OpenCL/m34211_a3-optimized.cl
+share/hashcat/OpenCL/m34211_a3-pure.cl
+share/hashcat/OpenCL/m70000-pure.cl
+share/hashcat/OpenCL/m70100-pure.cl
+share/hashcat/OpenCL/m72000-pure.cl
+share/hashcat/OpenCL/m73000-pure.cl
 share/hashcat/OpenCL/markov_be.cl
 share/hashcat/OpenCL/markov_le.cl
 share/hashcat/OpenCL/shared.cl
+share/hashcat/bridges/.gitkeep
+share/hashcat/bridges/bridge_argon2id_reference.so
+share/hashcat/bridges/bridge_scrypt_jane.so
+share/hashcat/bridges/bridge_scrypt_yescrypt.so
 share/hashcat/hashcat.hcstat2
-share/hashcat/modules/.lock
+share/hashcat/modules/.gitkeep
 share/hashcat/modules/module_00000.so
 share/hashcat/modules/module_00010.so
 share/hashcat/modules/module_00011.so
@@ -1719,14 +1997,17 @@ share/hashcat/modules/module_02501.so
 share/hashcat/modules/module_02600.so
 share/hashcat/modules/module_02611.so
 share/hashcat/modules/module_02612.so
+share/hashcat/modules/module_02630.so
 share/hashcat/modules/module_02711.so
 share/hashcat/modules/module_02811.so
 share/hashcat/modules/module_03000.so
 share/hashcat/modules/module_03100.so
 share/hashcat/modules/module_03200.so
 share/hashcat/modules/module_03500.so
+share/hashcat/modules/module_03610.so
 share/hashcat/modules/module_03710.so
 share/hashcat/modules/module_03711.so
+share/hashcat/modules/module_03730.so
 share/hashcat/modules/module_03800.so
 share/hashcat/modules/module_03910.so
 share/hashcat/modules/module_04010.so
@@ -1734,6 +2015,8 @@ share/hashcat/modules/module_04110.so
 share/hashcat/modules/module_04300.so
 share/hashcat/modules/module_04400.so
 share/hashcat/modules/module_04410.so
+share/hashcat/modules/module_04420.so
+share/hashcat/modules/module_04430.so
 share/hashcat/modules/module_04500.so
 share/hashcat/modules/module_04510.so
 share/hashcat/modules/module_04520.so
@@ -1754,6 +2037,8 @@ share/hashcat/modules/module_05600.so
 share/hashcat/modules/module_05700.so
 share/hashcat/modules/module_05800.so
 share/hashcat/modules/module_06000.so
+share/hashcat/modules/module_06050.so
+share/hashcat/modules/module_06060.so
 share/hashcat/modules/module_06100.so
 share/hashcat/modules/module_06211.so
 share/hashcat/modules/module_06212.so
@@ -1778,6 +2063,7 @@ share/hashcat/modules/module_07000.so
 share/hashcat/modules/module_07100.so
 share/hashcat/modules/module_07200.so
 share/hashcat/modules/module_07300.so
+share/hashcat/modules/module_07350.so
 share/hashcat/modules/module_07400.so
 share/hashcat/modules/module_07401.so
 share/hashcat/modules/module_07500.so
@@ -1818,6 +2104,7 @@ share/hashcat/modules/module_10400.so
 share/hashcat/modules/module_10410.so
 share/hashcat/modules/module_10420.so
 share/hashcat/modules/module_10500.so
+share/hashcat/modules/module_10510.so
 share/hashcat/modules/module_10600.so
 share/hashcat/modules/module_10700.so
 share/hashcat/modules/module_10800.so
@@ -1845,6 +2132,7 @@ share/hashcat/modules/module_11900.so
 share/hashcat/modules/module_12000.so
 share/hashcat/modules/module_12001.so
 share/hashcat/modules/module_12100.so
+share/hashcat/modules/module_12150.so
 share/hashcat/modules/module_12200.so
 share/hashcat/modules/module_12300.so
 share/hashcat/modules/module_12400.so
@@ -1888,6 +2176,7 @@ share/hashcat/modules/module_13800.so
 share/hashcat/modules/module_13900.so
 share/hashcat/modules/module_14000.so
 share/hashcat/modules/module_14100.so
+share/hashcat/modules/module_14200.so
 share/hashcat/modules/module_14400.so
 share/hashcat/modules/module_14500.so
 share/hashcat/modules/module_14600.so
@@ -1911,12 +2200,16 @@ share/hashcat/modules/module_16200.so
 share/hashcat/modules/module_16300.so
 share/hashcat/modules/module_16400.so
 share/hashcat/modules/module_16500.so
+share/hashcat/modules/module_16501.so
 share/hashcat/modules/module_16600.so
 share/hashcat/modules/module_16700.so
 share/hashcat/modules/module_16800.so
 share/hashcat/modules/module_16801.so
 share/hashcat/modules/module_16900.so
 share/hashcat/modules/module_17010.so
+share/hashcat/modules/module_17020.so
+share/hashcat/modules/module_17030.so
+share/hashcat/modules/module_17040.so
 share/hashcat/modules/module_17200.so
 share/hashcat/modules/module_17210.so
 share/hashcat/modules/module_17220.so
@@ -1942,6 +2235,7 @@ share/hashcat/modules/module_18900.so
 share/hashcat/modules/module_19000.so
 share/hashcat/modules/module_19100.so
 share/hashcat/modules/module_19200.so
+share/hashcat/modules/module_19210.so
 share/hashcat/modules/module_19300.so
 share/hashcat/modules/module_19500.so
 share/hashcat/modules/module_19600.so
@@ -1959,13 +2253,16 @@ share/hashcat/modules/module_20510.so
 share/hashcat/modules/module_20600.so
 share/hashcat/modules/module_20710.so
 share/hashcat/modules/module_20711.so
+share/hashcat/modules/module_20712.so
 share/hashcat/modules/module_20720.so
+share/hashcat/modules/module_20730.so
 share/hashcat/modules/module_20800.so
 share/hashcat/modules/module_20900.so
 share/hashcat/modules/module_21000.so
 share/hashcat/modules/module_21100.so
 share/hashcat/modules/module_21200.so
 share/hashcat/modules/module_21300.so
+share/hashcat/modules/module_21310.so
 share/hashcat/modules/module_21400.so
 share/hashcat/modules/module_21420.so
 share/hashcat/modules/module_21500.so
@@ -1973,6 +2270,7 @@ share/hashcat/modules/module_21501.so
 share/hashcat/modules/module_21600.so
 share/hashcat/modules/module_21700.so
 share/hashcat/modules/module_21800.so
+share/hashcat/modules/module_21900.so
 share/hashcat/modules/module_22000.so
 share/hashcat/modules/module_22001.so
 share/hashcat/modules/module_22100.so
@@ -1983,6 +2281,7 @@ share/hashcat/modules/module_22400.so
 share/hashcat/modules/module_22500.so
 share/hashcat/modules/module_22600.so
 share/hashcat/modules/module_22700.so
+share/hashcat/modules/module_22800.so
 share/hashcat/modules/module_22911.so
 share/hashcat/modules/module_22921.so
 share/hashcat/modules/module_22931.so
@@ -2000,6 +2299,7 @@ share/hashcat/modules/module_23600.so
 share/hashcat/modules/module_23700.so
 share/hashcat/modules/module_23800.so
 share/hashcat/modules/module_23900.so
+share/hashcat/modules/module_24000.so
 share/hashcat/modules/module_24100.so
 share/hashcat/modules/module_24200.so
 share/hashcat/modules/module_24300.so
@@ -2029,6 +2329,7 @@ share/hashcat/modules/module_26402.so
 share/hashcat/modules/module_26403.so
 share/hashcat/modules/module_26500.so
 share/hashcat/modules/module_26600.so
+share/hashcat/modules/module_26610.so
 share/hashcat/modules/module_26700.so
 share/hashcat/modules/module_26800.so
 share/hashcat/modules/module_26900.so
@@ -2110,8 +2411,77 @@ share/hashcat/modules/module_29542.so
 share/hashcat/modules/module_29543.so
 share/hashcat/modules/module_29600.so
 share/hashcat/modules/module_29700.so
+share/hashcat/modules/module_29800.so
+share/hashcat/modules/module_29910.so
+share/hashcat/modules/module_29920.so
+share/hashcat/modules/module_29930.so
+share/hashcat/modules/module_29940.so
 share/hashcat/modules/module_30000.so
 share/hashcat/modules/module_30120.so
+share/hashcat/modules/module_30420.so
+share/hashcat/modules/module_30500.so
+share/hashcat/modules/module_30600.so
+share/hashcat/modules/module_30601.so
+share/hashcat/modules/module_30700.so
+share/hashcat/modules/module_30901.so
+share/hashcat/modules/module_30902.so
+share/hashcat/modules/module_30903.so
+share/hashcat/modules/module_30904.so
+share/hashcat/modules/module_30905.so
+share/hashcat/modules/module_30906.so
+share/hashcat/modules/module_31000.so
+share/hashcat/modules/module_31100.so
+share/hashcat/modules/module_31200.so
+share/hashcat/modules/module_31300.so
+share/hashcat/modules/module_31400.so
+share/hashcat/modules/module_31500.so
+share/hashcat/modules/module_31600.so
+share/hashcat/modules/module_31700.so
+share/hashcat/modules/module_31800.so
+share/hashcat/modules/module_31900.so
+share/hashcat/modules/module_32000.so
+share/hashcat/modules/module_32010.so
+share/hashcat/modules/module_32020.so
+share/hashcat/modules/module_32030.so
+share/hashcat/modules/module_32031.so
+share/hashcat/modules/module_32040.so
+share/hashcat/modules/module_32041.so
+share/hashcat/modules/module_32050.so
+share/hashcat/modules/module_32060.so
+share/hashcat/modules/module_32070.so
+share/hashcat/modules/module_32100.so
+share/hashcat/modules/module_32200.so
+share/hashcat/modules/module_32300.so
+share/hashcat/modules/module_32410.so
+share/hashcat/modules/module_32420.so
+share/hashcat/modules/module_32500.so
+share/hashcat/modules/module_32600.so
+share/hashcat/modules/module_32700.so
+share/hashcat/modules/module_32800.so
+share/hashcat/modules/module_32900.so
+share/hashcat/modules/module_33000.so
+share/hashcat/modules/module_33100.so
+share/hashcat/modules/module_33300.so
+share/hashcat/modules/module_33400.so
+share/hashcat/modules/module_33500.so
+share/hashcat/modules/module_33501.so
+share/hashcat/modules/module_33502.so
+share/hashcat/modules/module_33600.so
+share/hashcat/modules/module_33650.so
+share/hashcat/modules/module_33660.so
+share/hashcat/modules/module_33700.so
+share/hashcat/modules/module_33800.so
+share/hashcat/modules/module_33900.so
+share/hashcat/modules/module_34000.so
+share/hashcat/modules/module_34100.so
+share/hashcat/modules/module_34200.so
+share/hashcat/modules/module_34201.so
+share/hashcat/modules/module_34211.so
+share/hashcat/modules/module_70000.so
+share/hashcat/modules/module_70100.so
+share/hashcat/modules/module_70200.so
+share/hashcat/modules/module_72000.so
+share/hashcat/modules/module_73000.so
 share/hashcat/modules/module_99999.so
 share/hashcat/tunings/Alias.hctune
 share/hashcat/tunings/Device_GeForce_GTX_TITAN.hctune
@@ -2119,8 +2489,10 @@ share/hashcat/tunings/Module_08900.hctun
 share/hashcat/tunings/Module_09300.hctune
 share/hashcat/tunings/Module_15700.hctune
 share/hashcat/tunings/Module_22700.hctune
+share/hashcat/tunings/Module_24000.hctune
 share/hashcat/tunings/Module_27700.hctune
 share/hashcat/tunings/Module_28200.hctune
+share/hashcat/tunings/Module_29800.hctune
 share/hashcat/tunings/Modules_bcrypt.hctune
 share/hashcat/tunings/Modules_default.hctune
 share/hashcat/tunings/README.md
Index: pkgsrc/security/hashcat/distinfo
diff -u pkgsrc/security/hashcat/distinfo:1.2 pkgsrc/security/hashcat/distinfo:1.3
--- pkgsrc/security/hashcat/distinfo:1.2        Mon Sep  5 11:13:56 2022
+++ pkgsrc/security/hashcat/distinfo    Fri Aug  8 07:23:59 2025
@@ -1,6 +1,18 @@
-$NetBSD: distinfo,v 1.2 2022/09/05 11:13:56 adam Exp $
+$NetBSD: distinfo,v 1.3 2025/08/08 07:23:59 adam Exp $
 
-BLAKE2s (hashcat-6.2.6.tar.gz) = 133a66fb6851bd63c675f4780d318cf31c65b04255a86ac10ef1b98518e95026
-SHA512 (hashcat-6.2.6.tar.gz) = b5e4f40fb5ed0a47977243e1f95bf1deae0b04bd5ca26338395305c42573fe5b17557835f6f5d8b7402812e8eadda2b260d6b927ce99429fd1b87eb26f002f8a
-Size (hashcat-6.2.6.tar.gz) = 14234640 bytes
-SHA1 (patch-src_Makefile) = a9f4cee8cb4142872d364cdda67fd8147ba1c525
+BLAKE2s (hashcat-7.0.0.tar.gz) = 02ed451e3c1cf5db75cff5113a3cb141596846d6009c23dd617e56b7fe5175fe
+SHA512 (hashcat-7.0.0.tar.gz) = 3e4837e4004859c6de60353641e519d1e1007d689ec106c4278f13a27ebb6f4779750db0ffbcaa8cbd815c6015cba0ff61d66d363c772ce82f7ca641be1481f5
+Size (hashcat-7.0.0.tar.gz) = 19084663 bytes
+SHA1 (patch-include_sort__r.h) = be4ecc96def303630439374b2f739a8cef0ad522
+SHA1 (patch-include_terminal.h) = b4fa77eb4eeaf048e50e85948cb63d401205cc68
+SHA1 (patch-src_Makefile) = f6dcc9a99b16cee5d9c8533416ff55da86e2feed
+SHA1 (patch-src_affinity.c) = e3db09035e4a5bb030fc87dedce3198b14ef6078
+SHA1 (patch-src_bridges_bridge__argon2id__reference.mk) = cfc2997e558d2431b5a8bcb8ee2a0ad7cd78ddff
+SHA1 (patch-src_bridges_bridge__python__generic__hash__mp.mk) = 86ffd66910f0251022bf1d686ef6f0db99de98bf
+SHA1 (patch-src_bridges_bridge__python__generic__hash__sp.mk) = f5f65a831866037145eae44c68fc69c19e0010e3
+SHA1 (patch-src_bridges_bridge__scrypt__jane.mk) = c4e76e8af82311c030fc6e802b09deb02e147015
+SHA1 (patch-src_bridges_bridge__scrypt__yescrypt.mk) = dd3572618239645873af6141307ac5a96e3796b3
+SHA1 (patch-src_folder.c) = 0bd1e1edb4f9aa7187661c5e974a7114b10ab173
+SHA1 (patch-src_memory.c) = 2118b0b618e8a7a0e595b4d319f648235301ab39
+SHA1 (patch-src_shared.c) = b26c987a19964d271b309b39ab3074804b66f288
+SHA1 (patch-src_terminal.c) = ad94f4c4aefc8753f8fcbd2b26285ad1d649985e

Index: pkgsrc/security/hashcat/patches/patch-src_Makefile
diff -u pkgsrc/security/hashcat/patches/patch-src_Makefile:1.2 pkgsrc/security/hashcat/patches/patch-src_Makefile:1.3
--- pkgsrc/security/hashcat/patches/patch-src_Makefile:1.2      Mon Sep  5 11:13:56 2022
+++ pkgsrc/security/hashcat/patches/patch-src_Makefile  Fri Aug  8 07:23:59 2025
@@ -1,12 +1,24 @@
-$NetBSD: patch-src_Makefile,v 1.2 2022/09/05 11:13:56 adam Exp $
+$NetBSD: patch-src_Makefile,v 1.3 2025/08/08 07:23:59 adam Exp $
 
 Set preferences.
 Don't override CC nor optimisation flags in CFLAGS.
+Defined IS_ARM in externally.
 Remove sed magic; we'll use nbsed.
+Don't build universal binary on Darwin.
+BSD support https://github.com/hashcat/hashcat/pull/4392
 
---- src/Makefile.orig  2022-09-02 14:58:13.000000000 +0000
+--- src/Makefile.orig  2025-08-01 21:03:55.000000000 +0000
 +++ src/Makefile
-@@ -59,8 +59,6 @@ MODULE_INTERFACE_VERSION := 700
+@@ -31,7 +31,7 @@ UNAME                   := $(patsubst MS
+ UNAME                   := $(patsubst MINGW32_NT-%,MSYS2,$(UNAME))
+ UNAME                   := $(patsubst MINGW64_NT-%,MSYS2,$(UNAME))
+ 
+-ifeq (,$(filter $(UNAME),Linux FreeBSD NetBSD Darwin CYGWIN MSYS2))
++ifeq (,$(filter $(UNAME),Linux OpenBSD FreeBSD NetBSD DragonFly Darwin CYGWIN MSYS2))
+ $(error "! Your Operating System ($(UNAME)) is not supported by this Makefile")
+ endif
+ 
+@@ -68,8 +68,6 @@ BRIDGE_INTERFACE_VERSION := 700
  ## Native compiler paths
  ##
  
@@ -15,7 +27,7 @@ Remove sed magic; we'll use nbsed.
  AR                      := ar
  FIND                    := find
  INSTALL                 := install
-@@ -69,14 +67,8 @@ SED                     := sed
+@@ -78,25 +76,23 @@ SED                     := sed
  SED_IN_PLACE            := -i
  
  ifeq ($(UNAME),Darwin)
@@ -26,12 +38,39 @@ Remove sed magic; we'll use nbsed.
 -SED                     := /usr/bin/sed
 -SED_IN_PLACE            := -i ""
  DARWIN_VERSION          := $(shell uname -r | cut -d. -f1)
--IS_APPLE_SILICON        := $(shell lipo /bin/zsh -verify_arch arm64e && echo 1 || echo 0)
-+IS_APPLE_SILICON        := 0
+ IS_APPLE_SILICON        := $(shell [ "$$(sysctl -in hw.optional.arm64 2>/dev/null)" = "1" ] && echo 1 || echo 0)
  endif
  
- ifneq (,$(filter $(UNAME),FreeBSD NetBSD))
-@@ -233,7 +225,6 @@ endif
+-IS_AARCH64              := $(shell [ "$$(arch 2>/dev/null)" = "aarch64" ] && echo 1 || echo 0)
+-IS_ARM                  := $(or $(filter 1,$(IS_APPLE_SILICON)),$(filter 1,$(IS_AARCH64)))
+ 
+-ifneq (,$(filter $(UNAME),FreeBSD NetBSD))
++ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
+ CC                      := cc
+ CXX                     := c++
+ SED                     := gsed
+ endif
+ 
++ifneq (,$(filter $(UNAME),OpenBSD))
++CC                      := egcc
++CXX                     := eg++
++SED                     := gsed
++endif
++
+ ##
+ ## Version
+ ##
+@@ -236,7 +232,9 @@ ifeq ($(UNAME),Darwin)
+ CFLAGS_UNRAR            += -std=c++14
+ endif
+ ifneq ($(CC),clang)
++ifneq ($(UNAME),FreeBSD)
+ CFLAGS_UNRAR            += -Wno-class-memaccess
++endif
+ CFLAGS_UNRAR            += -Wno-misleading-indentation
+ CFLAGS_UNRAR            += -Wno-format-overflow
+ else
+@@ -266,7 +264,6 @@ endif
  endif
  
  ifeq ($(DEBUG),0)
@@ -39,7 +78,20 @@ Remove sed magic; we'll use nbsed.
  ifneq ($(UNAME),Darwin)
  LFLAGS                  += -s
  endif
-@@ -328,6 +319,7 @@ endif # FreeBSD
+@@ -331,8 +328,12 @@ endif
+ # unrar
+ ifeq ($(ENABLE_UNRAR),1)
+ CFLAGS                  += -I$(DEPS_UNRAR_PATH)
++ifeq ($(UNAME),OpenBSD)
++LFLAGS                  += -lc++
++else
+ LFLAGS                  += -lstdc++
+ endif
++endif
+ 
+ ##
+ ## Native compilation target
+@@ -361,6 +362,7 @@ endif # FreeBSD
  ifeq ($(UNAME),NetBSD)
  CFLAGS_NATIVE           := $(CFLAGS)
  LFLAGS_NATIVE           := $(LFLAGS)
@@ -47,7 +99,35 @@ Remove sed magic; we'll use nbsed.
  LFLAGS_NATIVE           += -lpthread
  endif # NetBSD
  
-@@ -684,8 +676,13 @@ endif
+@@ -383,14 +385,6 @@ LFLAGS_NATIVE           += -lIOReport
+ LFLAGS_NATIVE           += -lpthread
+ LFLAGS_NATIVE           += -liconv
+ 
+-ifeq ($(IS_APPLE_SILICON),1)
+-CFLAGS_NATIVE           += -arch arm64
+-CFLAGS_NATIVE           += -arch x86_64
+-ifeq ($(SHARED),1)
+-LFLAGS_NATIVE           += -arch arm64
+-LFLAGS_NATIVE           += -arch x86_64
+-endif
+-endif
+ 
+ endif # Darwin
+ 
+@@ -544,10 +538,10 @@ distclean: clean
+ # allow (whitelist) "make install" only on unix-based systems (also disallow cygwin/msys)
+ 
+ ifneq ($(findstring install,$(MAKECMDGOALS)),)
+-  ifeq (,$(filter $(UNAME),Linux FreeBSD Darwin NetBSD))
++  ifeq (,$(filter $(UNAME),Linux FreeBSD OpenBSD NetBSD DragonFly Darwin))
+     define ERROR_INSTALL_DISALLOWED
+ ! The 'install' target is not allowed on this operating system ($(UNAME)). \
+-Only Linux, FreeBSD, NetBSD and Darwin can use the 'install' target
++Only Linux, FreeBSD, OpenBSD, NetBSD, DragonFly and Darwin can use the 'install' target
+     endef
+ 
+     $(error $(ERROR_INSTALL_DISALLOWED))
+@@ -752,8 +746,13 @@ endif
  $(MODULES_DISABLE): ;
  
  ifeq ($(SHARED),1)
@@ -61,3 +141,17 @@ Remove sed magic; we'll use nbsed.
  else
  modules/module_%.$(MODULE_SUFFIX): src/modules/module_%.c obj/combined.NATIVE.a
        $(CC)    $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D MODULE_INTERFACE_VERSION_CURRENT=$(MODULE_INTERFACE_VERSION)
+@@ -786,8 +785,13 @@ BRIDGES_DISABLE ?=
+ $(BRIDGES_DISABLE): ;
+ 
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c $(HASHCAT_LIBRARY)
++      $(CC)    $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION)
++  else
+ bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c $(HASHCAT_LIBRARY)
+       $(CC)    $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION)
++  endif
+ else
+ bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c obj/combined.NATIVE.a
+       $(CC)    $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION)

Added files:

Index: pkgsrc/security/hashcat/patches/patch-include_sort__r.h
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-include_sort__r.h:1.3
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-include_sort__r.h     Fri Aug  8 07:23:59 2025
@@ -0,0 +1,42 @@
+$NetBSD: patch-include_sort__r.h,v 1.3 2025/08/08 07:23:59 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- include/sort_r.h.orig      2025-08-01 21:03:55.000000000 +0000
++++ include/sort_r.h
+@@ -25,7 +25,7 @@ Slightly modified to work with hashcat t
+ */
+ 
+ #if (defined __APPLE__ || defined __MACH__ || defined __DARWIN__ || \
+-     defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
++     defined __OpenBSD__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ #  define _SORT_R_BSD
+ #  define _SORT_R_INLINE inline
+ #elif (defined __linux__) || defined (__CYGWIN__)
+@@ -138,7 +138,7 @@ static _SORT_R_INLINE void sort_r_simple
+ 
+   /* Declare structs and functions */
+ 
+-  #if defined _SORT_R_BSD && !defined(qsort_r)
++  #if defined _SORT_R_BSD && !defined(qsort_r) && !defined(__NetBSD__)
+ 
+     /* Ensure qsort_r is defined */
+     extern void qsort_r(void *base, size_t nel, size_t width, void *thunk,
+@@ -199,13 +199,13 @@ static _SORT_R_INLINE void sort_r_simple
+ 
+     #elif defined _SORT_R_BSD
+ 
+-      struct sort_r_data tmp;
+-      tmp.arg = arg;
+-      tmp.compar = compar;
+-
+       #if defined __NetBSD__
+         sort_r_simple(base, nel, width, compar, arg);
+       #else
++        struct sort_r_data tmp;
++        tmp.arg = arg;
++        tmp.compar = compar;
++
+         qsort_r(base, nel, width, &tmp, sort_r_arg_swap);
+       #endif
+ 
Index: pkgsrc/security/hashcat/patches/patch-src_affinity.c
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_affinity.c:1.3
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_affinity.c        Fri Aug  8 07:23:59 2025
@@ -0,0 +1,56 @@
+$NetBSD: patch-src_affinity.c,v 1.3 2025/08/08 07:23:59 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- src/affinity.c.orig        2025-08-01 21:03:55.000000000 +0000
++++ src/affinity.c
+@@ -80,6 +80,8 @@ int set_cpu_affinity (MAYBE_UNUSED hashc
+ 
+     return -1;
+   }
++  #elif defined (__OpenBSD__)
++  // no cpu_set
+   #else
+   cpu_set_t cpuset;
+   const int cpu_id_max = 8 * sizeof (cpuset);
+@@ -109,6 +111,8 @@ int set_cpu_affinity (MAYBE_UNUSED hashc
+ 
+         return -1;
+       }
++      #elif defined (__OpenBSD__)
++      // no cpu_zero
+       #else
+       CPU_ZERO (&cpuset);
+       #endif
+@@ -116,6 +120,7 @@ int set_cpu_affinity (MAYBE_UNUSED hashc
+       break;
+     }
+ 
++    #if !defined (__OpenBSD__)
+     if (cpu_id > cpu_id_max)
+     {
+       event_log_error (hashcat_ctx, "Invalid cpu_id %d specified.", cpu_id);
+@@ -128,11 +133,14 @@ int set_cpu_affinity (MAYBE_UNUSED hashc
+ 
+       return -1;
+     }
++    #endif
+ 
+     #if defined (_WIN)
+     aff_mask |= ((DWORD_PTR) 1) << (cpu_id - 1);
+     #elif defined (__NetBSD__)
+     cpuset_set (cpu_id - 1, cpuset);
++    #elif defined (__OpenBSD__)
++    // no cpu_set
+     #else
+     CPU_SET ((cpu_id - 1), &cpuset);
+     #endif
+@@ -167,6 +175,8 @@ int set_cpu_affinity (MAYBE_UNUSED hashc
+     return -1;
+   }
+ 
++  #elif defined (__OpenBSD__)
++  // no thread affinity support with pthread
+   #else
+ 
+   pthread_t thread = pthread_self ();
Index: pkgsrc/security/hashcat/patches/patch-src_folder.c
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_folder.c:1.3
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_folder.c  Fri Aug  8 07:24:00 2025
@@ -0,0 +1,70 @@
+$NetBSD: patch-src_folder.c,v 1.3 2025/08/08 07:24:00 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- src/folder.c.orig  2025-08-01 21:03:55.000000000 +0000
++++ src/folder.c
+@@ -13,7 +13,11 @@
+ 
+ #if defined (__APPLE__)
+ #include "event.h"
+-#elif defined (__FreeBSD__) || defined (__NetBSD__)
++#elif defined (__OpenBSD__)
++#define _OPENBSD_SOURCE
++#include <stdlib.h>
++#include <sys/sysctl.h>
++#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__DragonFly__)
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
+ #endif
+@@ -46,7 +50,7 @@ static int get_exec_path (char *exec_pat
+ 
+   const size_t len = strlen (exec_path);
+ 
+-  #elif defined (__FreeBSD__)
++  #elif defined (__FreeBSD__) || defined (__DragonFly__)
+ 
+   int mib[4];
+ 
+@@ -76,6 +80,41 @@ static int get_exec_path (char *exec_pat
+ 
+   const size_t len = strlen (exec_path);
+ 
++  #elif defined (__OpenBSD__)
++
++  int mib[4];
++
++  mib[0] = CTL_KERN;
++  mib[1] = KERN_PROC_ARGS;
++  mib[2] = getpid ();
++  mib[3] = KERN_PROC_ARGV;
++
++  size_t size = 0;
++
++  if (sysctl (mib, 4, NULL, &size, NULL, 0) == -1) return -1;
++
++  char **argv = hcmalloc (size);
++
++  if (!argv) return -1;
++
++  if (sysctl (mib, 4, argv, &size, NULL, 0) == -1)
++  {
++    free (argv);
++
++    return -1;
++  }
++
++  if (argv[0])
++  {
++    strncpy (exec_path, argv[0], exec_path_sz - 1);
++
++    exec_path[exec_path_sz - 1] = '\0';
++  }
++
++  free (argv);
++
++  const size_t len = strlen (exec_path);
++
+   #else
+   #error Your Operating System is not supported or detected
+   #endif
Index: pkgsrc/security/hashcat/patches/patch-src_terminal.c
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_terminal.c:1.3
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_terminal.c        Fri Aug  8 07:24:00 2025
@@ -0,0 +1,51 @@
+$NetBSD: patch-src_terminal.c,v 1.3 2025/08/08 07:24:00 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- src/terminal.c.orig        2025-08-01 21:03:55.000000000 +0000
++++ src/terminal.c
+@@ -459,7 +459,8 @@ void SetConsoleWindowSize (const int x)
+ }
+ #endif
+ 
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__linux__) || defined (__CYGWIN__)
++#if defined (__OpenBSD__)   || (__FreeBSD__)       || defined (__NetBSD__) || \
++    defined (__DragonFly__) || defined (__linux__) || defined (__CYGWIN__)
+ static struct termios savemodes;
+ static int havemodes = 0;
+ 
+@@ -1325,7 +1326,33 @@ void backend_info (hashcat_ctx_t *hashca
+ 
+     char *hw_model_buf = NULL;
+ 
+-    #if !defined (__linux__) && !defined (__CYGWIN__) && !defined (__MSYS__)
++    #if defined (__OpenBSD__)
++
++    int mib[2] = {CTL_HW, HW_MACHINE};
++
++    size_t hw_model_len = 0;
++
++    // First get length of the result string
++
++    if (sysctl (mib, 2, NULL, &hw_model_len, NULL, 0) == 0 && hw_model_len > 0)
++    {
++      hw_model_buf = (char *) hcmalloc (hw_model_len);
++
++      if (sysctl (mib, 2, hw_model_buf, &hw_model_len, NULL, 0) != 0)
++      {
++        hcfree (hw_model_buf);
++
++        hw_model_buf = NULL;
++
++        hw_model_len = 0;
++      }
++      else
++      {
++        rc_sysctl = true;
++      }
++    }
++
++    #elif !defined (__linux__) && !defined (__CYGWIN__) && !defined (__MSYS__)
+ 
+     size_t hw_model_len = 0;
+ 

Index: pkgsrc/security/hashcat/patches/patch-include_terminal.h
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-include_terminal.h:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-include_terminal.h    Fri Aug  8 07:23:59 2025
@@ -0,0 +1,30 @@
+$NetBSD: patch-include_terminal.h,v 1.1 2025/08/08 07:23:59 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- include/terminal.h.orig    2025-08-01 21:03:55.000000000 +0000
++++ include/terminal.h
+@@ -16,17 +16,19 @@
+ #include <windows.h>
+ #else
+ #include <termios.h>
+-#if defined (__APPLE__)
++#if defined (__APPLE__)   || defined (__OpenBSD__)   || defined (__NetBSD__) || \
++    defined (__FreeBSD__) || defined (__DragonFly__)
+ #include <sys/ioctl.h>
+ #include <sys/sysctl.h>
+-#endif // __APPLE__
++#endif
+ #endif // _WIN
+ 
+ #if defined (_POSIX)
+ #include <sys/utsname.h>
+-#if !defined (__APPLE__)
++#if !defined (__APPLE__)   && !defined (__OpenBSD__)   && !defined (__NetBSD__) && \
++    !defined (__FreeBSD__) && !defined (__DragonFly__)
+ #include <sys/sysinfo.h>
+-#endif // ! __APPLE__
++#endif
+ #endif // _POSIX
+ 
+ void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag);
Index: pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__argon2id__reference.mk
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__argon2id__reference.mk:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__argon2id__reference.mk    Fri Aug  8 07:23:59 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_bridges_bridge__argon2id__reference.mk,v 1.1 2025/08/08 07:23:59 adam Exp $
+
+Use install_name on Darwin.
+
+--- src/bridges/bridge_argon2id_reference.mk.orig      2025-08-05 10:39:06.794007881 +0000
++++ src/bridges/bridge_argon2id_reference.mk
+@@ -21,8 +21,13 @@ bridges/bridge_argon2id_reference.dll: s
+       $(CC_WIN)   $(CCFLAGS) $(CFLAGS_CROSS_WIN)    $^ -o $@ $(LFLAGS_CROSS_WIN)   -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS)
+ else
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_argon2id_reference.$(BRIDGE_SUFFIX): src/bridges/bridge_argon2id_reference.c src/cpu_features.c $(HASHCAT_LIBRARY)
++      $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) 
$(ARGON2_REFERENCE_CFLAGS)
++  else
+ bridges/bridge_argon2id_reference.$(BRIDGE_SUFFIX): src/bridges/bridge_argon2id_reference.c src/cpu_features.c $(HASHCAT_LIBRARY)
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS)
++  endif
+ else
+ bridges/bridge_argon2id_reference.$(BRIDGE_SUFFIX): src/bridges/bridge_argon2id_reference.c src/cpu_features.c obj/combined.NATIVE.a
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS)
Index: pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__mp.mk
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__mp.mk:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__mp.mk      Fri Aug  8 07:23:59 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_bridges_bridge__python__generic__hash__mp.mk,v 1.1 2025/08/08 07:23:59 adam Exp $
+
+Use install_name on Darwin.
+
+--- src/bridges/bridge_python_generic_hash_mp.mk.orig  2025-08-05 10:41:50.152896838 +0000
++++ src/bridges/bridge_python_generic_hash_mp.mk
+@@ -42,8 +42,13 @@ bridges/bridge_python_generic_hash_mp.dl
+       $(CC_WIN)    $(CCFLAGS) $(CFLAGS_CROSS_WIN)   $^ -o $@ $(LFLAGS_CROSS_WIN)   -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS_WIN)
+ else
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_python_generic_hash_mp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c $(HASHCAT_LIBRARY)
++      $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) 
$(PYTHON_CFLAGS)
++  else
+ bridges/bridge_python_generic_hash_mp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c $(HASHCAT_LIBRARY)
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS)
++  endif
+ else
+ bridges/bridge_python_generic_hash_mp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c obj/combined.NATIVE.a
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS)
Index: pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__sp.mk
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__sp.mk:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__python__generic__hash__sp.mk      Fri Aug  8 07:23:59 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_bridges_bridge__python__generic__hash__sp.mk,v 1.1 2025/08/08 07:23:59 adam Exp $
+
+Use install_name on Darwin.
+
+--- src/bridges/bridge_python_generic_hash_sp.mk.orig  2025-08-05 10:43:16.757630011 +0000
++++ src/bridges/bridge_python_generic_hash_sp.mk
+@@ -54,8 +54,13 @@ bridges/bridge_python_generic_hash_sp.dl
+       $(CC_WIN)    $(CCFLAGS) $(CFLAGS_CROSS_WIN)   $^ -o $@ $(LFLAGS_CROSS_WIN)   -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS_WIN)
+ else
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_python_generic_hash_sp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c $(HASHCAT_LIBRARY)
++      $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) 
$(PYTHON_CFLAGS)
++  else
+ bridges/bridge_python_generic_hash_sp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c $(HASHCAT_LIBRARY)
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS)
++  endif
+ else
+ bridges/bridge_python_generic_hash_sp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c obj/combined.NATIVE.a
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS)
Index: pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__jane.mk
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__jane.mk:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__jane.mk   Fri Aug  8 07:24:00 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_bridges_bridge__scrypt__jane.mk,v 1.1 2025/08/08 07:24:00 adam Exp $
+
+Use install_name on Darwin.
+
+--- src/bridges/bridge_scrypt_jane.mk.orig     2025-08-05 10:44:21.320567280 +0000
++++ src/bridges/bridge_scrypt_jane.mk
+@@ -21,8 +21,13 @@ bridges/bridge_scrypt_jane.dll: src/brid
+       $(CC_WIN)   $(CCFLAGS) $(CFLAGS_CROSS_WIN)    $^ -o $@ $(LFLAGS_CROSS_WIN)   -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS)
+ else
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_scrypt_jane.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_jane.c src/cpu_features.c $(HASHCAT_LIBRARY)
++      $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) 
$(SCRYPT_JANE_CFLAGS)
++  else
+ bridges/bridge_scrypt_jane.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_jane.c src/cpu_features.c $(HASHCAT_LIBRARY)
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS)
++  endif
+ else
+ bridges/bridge_scrypt_jane.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_jane.c src/cpu_features.c obj/combined.NATIVE.a
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS)
Index: pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__yescrypt.mk
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__yescrypt.mk:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_bridges_bridge__scrypt__yescrypt.mk       Fri Aug  8 07:24:00 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_bridges_bridge__scrypt__yescrypt.mk,v 1.1 2025/08/08 07:24:00 adam Exp $
+
+Use install_name on Darwin.
+
+--- src/bridges/bridge_scrypt_yescrypt.mk.orig 2025-08-05 10:45:25.876657574 +0000
++++ src/bridges/bridge_scrypt_yescrypt.mk
+@@ -21,8 +21,13 @@ bridges/bridge_scrypt_yescrypt.dll: src/
+       $(CC_WIN)   $(CCFLAGS) $(CFLAGS_CROSS_WIN)    $^ -o $@ $(LFLAGS_CROSS_WIN)   -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS)
+ else
+ ifeq ($(SHARED),1)
++  ifeq ($(UNAME),Darwin)
++bridges/bridge_scrypt_yescrypt.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c $(HASHCAT_LIBRARY)
++      $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -install_name $(SHARED_FOLDER)/$@ -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) 
$(SCRYPT_YESCRYPT_CFLAGS)
++  else
+ bridges/bridge_scrypt_yescrypt.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c $(HASHCAT_LIBRARY)
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS)
++  endif
+ else
+ bridges/bridge_scrypt_yescrypt.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c obj/combined.NATIVE.a
+       $(CC)       $(CCFLAGS) $(CFLAGS_NATIVE)       $^ -o $@ $(LFLAGS_NATIVE)      -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS)
Index: pkgsrc/security/hashcat/patches/patch-src_memory.c
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_memory.c:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_memory.c  Fri Aug  8 07:24:00 2025
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_memory.c,v 1.1 2025/08/08 07:24:00 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- src/memory.c.orig  2025-08-01 21:03:55.000000000 +0000
++++ src/memory.c
+@@ -71,7 +71,8 @@ void *hc_alloc_aligned (size_t alignment
+ {
+   void *ptr = NULL;
+ 
+-  #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined (__CYGWIN__) || defined (__MSYS__)
++  #if defined (__linux__)   || defined (__APPLE__)     || defined (__OpenBSD__) || defined (__NetBSD__) || \
++      defined (__FreeBSD__) || defined (__DragonFly__) || defined (__CYGWIN__)  || defined (__MSYS__)
+ 
+   if (posix_memalign (&ptr, alignment, size) != 0)
+   {
Index: pkgsrc/security/hashcat/patches/patch-src_shared.c
diff -u /dev/null pkgsrc/security/hashcat/patches/patch-src_shared.c:1.1
--- /dev/null   Fri Aug  8 07:24:00 2025
+++ pkgsrc/security/hashcat/patches/patch-src_shared.c  Fri Aug  8 07:24:00 2025
@@ -0,0 +1,151 @@
+$NetBSD: patch-src_shared.c,v 1.1 2025/08/08 07:24:00 adam Exp $
+
+BSD support https://github.com/hashcat/hashcat/pull/4392
+
+--- src/shared.c.orig  2025-08-01 21:03:55.000000000 +0000
++++ src/shared.c
+@@ -15,10 +15,13 @@
+ #include <sys/cygwin.h>
+ #endif
+ 
+-#if defined (__APPLE__)
++#if defined (__APPLE__)   || defined (__OpenBSD__)   || defined (__NetBSD__) || \
++    defined (__FreeBSD__) || defined (__DragonFly__)
+ #include <sys/sysctl.h>
++#if defined (__APPLE__)
+ #include <mach/mach.h>
+ #endif
++#endif
+ 
+ #if defined (_WIN)
+ #include <winsock2.h>
+@@ -26,7 +29,8 @@
+ 
+ #if defined (_POSIX)
+ #include <sys/utsname.h>
+-#if !defined (__APPLE__)
++#if !defined (__APPLE__)   && !defined (__OpenBSD__)   && !defined (__NetBSD__) && \
++    !defined (__FreeBSD__) && !defined (__DragonFly__)
+ #include <sys/sysinfo.h>
+ #endif
+ #endif
+@@ -311,9 +315,34 @@ int hc_asprintf (char **strp, const char
+ #undef __WINDOWS__
+ #endif
+ 
++#if defined (__OpenBSD__)
++static void *qsort_r_context;
++
++static int qsort_r_comparator (const void *a, const void *b)
++{
++    typedef int (*compare_fn_t) (const void *, const void *, void *);
++
++    compare_fn_t cmp = (compare_fn_t) qsort_r_context;
++
++    return cmp (a, b, NULL);
++}
++#endif
++
+ void hc_qsort_r (void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), void *arg)
+ {
++  #if defined (__OpenBSD__)
++
++  (void) arg; // unused, make compiler happy
++
++  qsort_r_context = (void *) compar;
++
++  qsort (base, nmemb, size, qsort_r_comparator);
++
++  #else
++
+   sort_r (base, nmemb, size, compar, arg);
++
++  #endif
+ }
+ 
+ void *hc_bsearch_r (const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), void *arg)
+@@ -940,11 +969,12 @@ int select_read_timeout (int sockfd, con
+   fd_set fds;
+ 
+   FD_ZERO (&fds);
+-#if defined(_WIN)
++
++  #if defined (_WIN)
+   FD_SET ((SOCKET)sockfd, &fds);
+-#else
++  #else
+   FD_SET (sockfd, &fds);
+-#endif
++  #endif
+ 
+   return select (sockfd + 1, &fds, NULL, NULL, &tv);
+ }
+@@ -959,11 +989,12 @@ int select_write_timeout (int sockfd, co
+   fd_set fds;
+ 
+   FD_ZERO (&fds);
+-#if defined(_WIN)
++
++  #if defined (_WIN)
+   FD_SET ((SOCKET)sockfd, &fds);
+-#else
++  #else
+   FD_SET (sockfd, &fds);
+-#endif
++  #endif
+ 
+   return select (sockfd + 1, NULL, &fds, NULL, &tv);
+ }
+@@ -1710,6 +1741,52 @@ bool get_free_memory (u64 *free_mem)
+ 
+   return true;
+ 
++  #elif defined (__OpenBSD__)
++
++  struct uvmexp uvmexp;
++
++  size_t size = sizeof (uvmexp);
++
++  int mib[2] = {CTL_VM, VM_UVMEXP};
++
++  if (sysctl (mib, 2, &uvmexp, &size, NULL, 0) == -1) return false;
++
++  *free_mem = (uint64_t)(uvmexp.free * uvmexp.pagesize);
++
++  return true;
++
++  #elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__DragonFly__)
++
++  size_t len;
++
++  u64 pagesize = 0, free_pages = 0, cache_pages = 0, inactive_pages = 0;
++
++  len = sizeof (pagesize);
++
++  if (sysctlbyname ("hw.pagesize", &pagesize, &len, NULL, 0) == -1) return false;
++
++  len = sizeof (free_pages);
++
++  if (sysctlbyname ("vm.stats.vm.v_free_count", &free_pages, &len, NULL, 0) == -1) return false;
++
++  #if defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__DragonFly__)
++
++  len = sizeof (cache_pages);
++
++  if (sysctlbyname ("vm.stats.vm.v_cache_count", &cache_pages, &len, NULL, 0) == -1) return false;
++
++  #endif // __OpenBSD__ || __FreeBSD__ || __DragonFly__
++
++  len = sizeof (inactive_pages);
++
++  if (sysctlbyname ("vm.stats.vm.v_inactive_count", &inactive_pages, &len, NULL, 0) == -1) return false;
++
++  u64 total_pages = free_pages + cache_pages + inactive_pages;
++
++  *free_mem = (u64) (total_pages * pagesize);
++
++  return true;
++
+   #else
+ 
+   struct sysinfo info;



Home | Main Index | Thread Index | Old Index