diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 2daca88..8775420 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/hashcat-5.1.0.tar.gz +/hashcat-*.tar.xz diff --git a/0001-Fedora-build-patches.patch b/0001-Fedora-build-patches.patch deleted file mode 100644 index 89a5546..0000000 --- a/0001-Fedora-build-patches.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 39e368c12879d31e750f765d16bcb1021d1d0f35 Mon Sep 17 00:00:00 2001 -From: Vitaly Zaitsev -Date: Wed, 6 Feb 2019 21:28:22 +0100 -Subject: [PATCH] Fedora build patches. - ---- - src/Makefile | 47 ++++++++--------------------------------------- - 1 file changed, 8 insertions(+), 39 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index f860a2d8..a2a6ed22 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -3,14 +3,14 @@ - ## License.....: MIT - ## - --SHARED := 0 -+SHARED := 1 - DEBUG := 0 - PRODUCTION := 1 - PRODUCTION_VERSION := v5.1.0 - ENABLE_BRAIN := 1 - USE_SYSTEM_LZMA := 0 --USE_SYSTEM_OPENCL := 0 --USE_SYSTEM_XXHASH := 0 -+USE_SYSTEM_OPENCL := 1 -+USE_SYSTEM_XXHASH := 1 - - ## - ## Detect Operating System -@@ -91,6 +91,7 @@ INSTALL_FOLDER ?= $(PREFIX)/bin - SHARED_ROOT_FOLDER ?= $(PREFIX)/share - SHARED_FOLDER ?= $(SHARED_ROOT_FOLDER)/hashcat - DOCUMENT_FOLDER ?= $(SHARED_ROOT_FOLDER)/doc/hashcat -+BASHCOMP_FOLDER ?= $(SHARED_ROOT_FOLDER)/bash-completion/completions - LIBRARY_FOLDER ?= $(PREFIX)/lib - LIBRARY_DEV_ROOT_FOLDER ?= $(PREFIX)/include - LIBRARY_DEV_FOLDER ?= $(LIBRARY_DEV_ROOT_FOLDER)/hashcat -@@ -175,13 +176,10 @@ CFLAGS += -Wextra - endif - - ifeq ($(DEBUG),0) --CFLAGS += -O2 --ifneq ($(UNAME),Darwin) --LFLAGS += -s --endif -+CFLAGS += -DNDEBUG - else - ifeq ($(DEBUG),1) --CFLAGS += -DDEBUG -Og -ggdb -+CFLAGS += -DDEBUG -ggdb - else - ifeq ($(DEBUG),2) - CFLAGS += -DDEBUG -Og -ggdb -@@ -426,37 +424,8 @@ install_make_shared_root: - $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_ROOT_FOLDER) - - install_docs: install_make_shared_root -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER) -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/charsets -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/docs -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/layouts -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/masks -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/rules -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/extra -- $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion -- $(INSTALL) -m 644 example.dict $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 644 example0.hash $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 644 example400.hash $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 644 example500.hash $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 755 example0.sh $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 755 example400.sh $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 755 example500.sh $(DESTDIR)$(DOCUMENT_FOLDER)/ -- $(INSTALL) -m 644 extra/tab_completion/hashcat.sh $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/ -- $(INSTALL) -m 644 extra/tab_completion/howto.txt $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/ -- $(INSTALL) -m 755 extra/tab_completion/install $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/ -- $(FIND) charsets/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) charsets/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) docs/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) docs/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) layouts/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) layouts/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) masks/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) masks/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) rules/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(FIND) rules/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \; -- $(SED) $(SED_IN_PLACE) 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example0.sh -- $(SED) $(SED_IN_PLACE) 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example400.sh -- $(SED) $(SED_IN_PLACE) 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example500.sh -+ $(INSTALL) -m 755 -d $(DESTDIR)$(BASHCOMP_FOLDER) -+ $(INSTALL) -m 644 extra/tab_completion/hashcat.sh $(DESTDIR)$(BASHCOMP_FOLDER)/hashcat - - install_shared: install_make_shared_root - $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER) --- -2.20.1 - diff --git a/README.md b/README.md deleted file mode 100644 index 54d774c..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# hashcat - -The hashcat package \ No newline at end of file diff --git a/changelog b/changelog new file mode 100644 index 0000000..c706018 --- /dev/null +++ b/changelog @@ -0,0 +1,2 @@ +* Fri Jan 17 2025 Fedora Release Engineering - 6.2.6-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..4b79bd1 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,16 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/hashcat-build-fixes.patch b/hashcat-build-fixes.patch new file mode 100644 index 0000000..737994a --- /dev/null +++ b/hashcat-build-fixes.patch @@ -0,0 +1,87 @@ +From d4ebb8d60a87a638c20fa1de1b4560142a69feb5 Mon Sep 17 00:00:00 2001 +From: Carlos Rodriguez-Fernandez +Date: Wed, 29 Oct 2025 12:15:25 -0700 +Subject: [PATCH] fixes + +--- + src/Makefile | 17 +++++------------ + 1 file changed, 5 insertions(+), 12 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 72986407c..49cbaf924 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -52,7 +52,7 @@ endif + ## Makefile flags + ## + +-MAKEFLAGS += -l -j 8 -rR --no-print-directory ++MAKEFLAGS += -l -rR --no-print-directory + + ifneq ($(findstring clean,$(MAKECMDGOALS)),) + MAKEFLAGS += -j 1 +@@ -167,8 +167,6 @@ DEPS_UNRAR_PATH := $(LIBRARY_DEV_ROOT_FOLDER) + endif + endif + +-DEPS_SSE2NEON := deps/sse2neon +- + ## + ## Filenames for library and frontend + ## +@@ -275,10 +273,7 @@ endif + endif + + ifeq ($(DEBUG),0) +-CFLAGS += -O2 +-ifneq ($(UNAME),Darwin) +-LFLAGS += -s +-endif ++CFLAGS += -DNDEBUG + else + ifeq ($(DEBUG),1) + ifneq ($(UNAME),Darwin) +@@ -427,7 +422,6 @@ endif # Darwin + + ifeq ($(IS_ARM),1) + CFLAGS_NATIVE += -DSSE2NEON_SUPPRESS_WARNINGS +-CFLAGS_NATIVE += -I$(DEPS_SSE2NEON) + endif + + ifeq ($(UNAME),CYGWIN) +@@ -589,7 +583,7 @@ endif + + .PHONY: install + ifeq ($(SHARED),1) +-install: install_docs install_shared install_tools install_library install_library_dev install_tunings install_kernels install_modules install_bridges install_hashcat ++install: install_shared install_library install_library_dev install_tunings install_kernels install_modules install_bridges install_hashcat + else + install: install_docs install_shared install_tools install_tunings install_kernels install_modules install_bridges install_hashcat + endif +@@ -660,13 +654,13 @@ install_kernels: install_shared + install_modules: install_shared modules + $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/modules + $(FIND) modules/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/modules/{} \; +- $(FIND) modules/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/modules/{} \; ++ $(FIND) modules/ -mindepth 1 -type f -execdir $(INSTALL) -m 755 {} $(DESTDIR)$(SHARED_FOLDER)/modules/{} \; + + .PHONY: install_bridges + install_bridges: install_shared bridges + $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges + $(FIND) bridges/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \; +- $(FIND) bridges/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \; ++ $(FIND) bridges/ -mindepth 1 -type f -execdir $(INSTALL) -m 755 {} $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \; + + .PHONY: install_library + install_library: $(HASHCAT_LIBRARY) +@@ -892,7 +886,6 @@ endif + + ifeq ($(IS_ARM),1) + CFLAGS_CROSS_LINUX += -DSSE2NEON_SUPPRESS_WARNINGS +-CFLAGS_CROSS_LINUX += -I$(DEPS_SSE2NEON) + endif + + ## +-- +2.51.0 + diff --git a/hashcat.spec b/hashcat.spec index 017d10a..3569ac3 100644 --- a/hashcat.spec +++ b/hashcat.spec @@ -1,27 +1,62 @@ -Name: hashcat -Version: 5.1.0 -Release: 4%{?dist} -Summary: Advanced password recovery utility - -License: MIT and Public Domain -URL: https://github.com/%{name}/%{name} - -Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz -Patch0: 0001-Fedora-build-patches.patch - -BuildRequires: bash-completion -BuildRequires: opencl-headers -BuildRequires: xxhash-devel -BuildRequires: gcc - -Requires: bash-completion +# hashcat require an ancient version of minizip. +# On Fedora we can use compatibility package, but +# on RHEL we must use bundled version. %if 0%{?fedora} -Requires: mesa-libOpenCL%{?_isa} -Recommends: %{name}-doc = %{?epoch:%{epoch}:}%{version}-%{release} +%bcond_without zlib +%else +%bcond_with zlib %endif +%global makeflags PREFIX=%{_prefix} LIBRARY_FOLDER=%{_libdir} SHARED_ROOT_FOLDER=%{_libdir} DOCUMENT_FOLDER=%{_docdir}/hashcat-doc SHARED=1 USE_SYSTEM_OPENCL=1 USE_SYSTEM_XXHASH=1 ENABLE_UNRAR=0 MAINTAINER_MODE=1 + +%if %{with zlib} +%global makeflags %(echo %{makeflags} USE_SYSTEM_ZLIB=1) +%else +%global makeflags %(echo %{makeflags} USE_SYSTEM_ZLIB=0) +%endif + +Name: hashcat +Version: 7.1.2 +Release: %autorelease + +License: MIT AND LicenseRef-Fedora-Public-Domain AND BSD-2-Clause AND Apache-2.0 +URL: https://github.com/%{name}/%{name} +Summary: Advanced password recovery utility + +# The official upstream tarball contains some non-free components. +# We cannot use it on Fedora for legal reasons. +# Use ./make_tarball.sh to generate a new stripped tarball. +Source0: %{name}-%{version}-clean.tar.xz +Source1: make_tarball.sh +Patch0: %{name}-build-fixes.patch + +BuildRequires: opencl-headers +BuildRequires: xxhash-devel +%ifarch aarch64 +BuildRequires: sse2neon-devel +%endif + +BuildRequires: gcc +BuildRequires: make + +%if %{with zlib} +BuildRequires: zlib-ng-compat-devel +BuildRequires: minizip-compat-devel +%else +Provides: bundled(zlib) = 1.2.11 +Provides: bundled(minizip) = 1.2.11 +%endif +Provides: bundled(lzma-sdk) = 24.09 +Provides: bundled(scrypt-jane) +Provides: bundled(yescrypt) +Provides: bundled(libargon2) = 20190702 + +Recommends: %{name}-doc + # Upstream does not support Big Endian architectures. -ExcludeArch: ppc64 s390x +# Upstream source code does not longer build for ppc64le: https://bugzilla.redhat.com/show_bug.cgi?id=2407234 +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} ppc64 s390x ppc64le %description Hashcat is the world's fastest and most advanced password recovery @@ -48,24 +83,31 @@ BuildArch: noarch %prep %autosetup -p1 -rm -rf deps/{OpenCL-Headers,xxHash} +rm -rf deps/{OpenCL-Headers,xxHash,sse2neon} +%if %{with zlib} +rm -rf deps/zlib +%endif sed -e 's/\.\/hashcat/hashcat/' -i *.sh chmod -x *.sh +rm -f modules/.lock %build %set_build_flags -%make_build PREFIX=%{_prefix} +%make_build %{makeflags} %install -%make_install PREFIX=%{_prefix} LIBRARY_FOLDER=%{_libdir} -ln -s lib%{name}.so.%{version} "%{buildroot}%{_libdir}/lib%{name}.so" +%make_install %{makeflags} +ln -s lib%{name}.so.%{version} %{buildroot}%{_libdir}/lib%{name}.so +mkdir -p %{buildroot}%{_datadir}/bash-completion/completions +install -m 0744 -p extra/tab_completion/hashcat.sh %{buildroot}%{_datadir}/bash-completion/completions/%{name} +find %{buildroot}%{_libdir}/%{name}/ -name '.gitkeep' -type f -delete %files %license docs/license.txt %doc README.md -%{_datadir}/bash-completion/completions/%{name} +%{_datadir}/bash-completion/ %{_libdir}/lib%{name}.so.%{version} -%{_datadir}/%{name} +%{_libdir}/%{name}/ %{_bindir}/%{name} %files devel @@ -73,19 +115,8 @@ ln -s lib%{name}.so.%{version} "%{buildroot}%{_libdir}/lib%{name}.so" %{_libdir}/lib%{name}.so %files doc -%doc docs/{changes,contact,credits,limits,performance,readme,rules,status_codes,team,user_manuals}.txt -%doc charsets/ layouts/ masks/ rules/ +%doc docs/ charsets/ layouts/ masks/ rules/ %doc example.dict example*.sh %changelog -* Sun Feb 24 2019 Vitaly Zaitsev - 5.1.0-4 -- Switched to regular build instead of debug. - -* Mon Feb 18 2019 Vitaly Zaitsev - 5.1.0-3 -- Fixed problem with dependencies on EPEL7. - -* Thu Feb 07 2019 Vitaly Zaitsev - 5.1.0-2 -- Moved documentation to a separate package. - -* Wed Feb 06 2019 Vitaly Zaitsev - 5.1.0-1 -- Initial SPEC release. +%autochangelog diff --git a/make_tarball.sh b/make_tarball.sh new file mode 100755 index 0000000..c2bafac --- /dev/null +++ b/make_tarball.sh @@ -0,0 +1,33 @@ +#!/usr/bin/bash +set -e + +NAME="hashcat" +VERSION="$1" + +if [ -z "$VERSION" ] +then + echo "Usage: ./make_tarball.sh {version}" + exit 1 +fi + +TARBALL_DIR="$NAME-$VERSION" +TARBALL_ORIG="$NAME-$VERSION.tar.gz" +TARBALL_NEW="$NAME-$VERSION-clean.tar.xz" + +echo "Downloading upstream tarball..." +wget "https://github.com/hashcat/hashcat/archive/v$VERSION/$TARBALL_ORIG" -O "$TARBALL_ORIG" 2>/dev/null + +echo "Unpacking upstream tarball..." +tar -xf "$TARBALL_ORIG" + +echo "Removing non-free components..." +rm -rf "$TARBALL_DIR/deps/unrar" + +echo "Building a new tarball..." +tar -cJf "$TARBALL_NEW" "$TARBALL_DIR" + +echo "Performing cleanup..." +rm -f "$TARBALL_ORIG" +rm -rf "$TARBALL_DIR" + +echo "Done." diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index 5d0fd6d..776ee7a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (hashcat-5.1.0.tar.gz) = 90605c2bcd0ec275d2f6ec581899b95cdc320b1494613a19803192c8a08037a7829b3776ed42c58eb6551ec1a746f47f94ab5b273958ca74e0fc57315e209ece +SHA512 (hashcat-7.1.2-clean.tar.xz) = 39d525d8f835227a2d9a081ce5b96eabebeff15f10707115f94339f9edd55228885dcd151ace9132e937147318d44447dbb53f8c05b3048f5cb24d620a4f00af diff --git a/tests/core/main.fmf b/tests/core/main.fmf new file mode 100644 index 0000000..78884f4 --- /dev/null +++ b/tests/core/main.fmf @@ -0,0 +1 @@ +summary: hashcat cli smoke test diff --git a/tests/core/test.sh b/tests/core/test.sh new file mode 100755 index 0000000..ffd8682 --- /dev/null +++ b/tests/core/test.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartTest + rlRun "hashcat --version" 0 "version info" + rlPhaseEnd + + rlPhaseStartTest + rlRun -s "hashcat --help" 0 "help" + rlAssertGrep "Usage" "$rlRun_LOG" + rlPhaseEnd + + rlPhaseStartTest + rlRun -s "hashcat --hash-info" 0 "hash info" + rlAssertGrep "Hash Info" "$rlRun_LOG" + rlPhaseEnd +rlJournalEnd diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..f61588b --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,4 @@ +summary: hashcat smoke test +test: ./test.sh +framework: beakerlib +require: ["hashcat"] \ No newline at end of file