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 new file mode 100644 index 0000000..8775420 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/hashcat-*.tar.xz 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/dead.package b/dead.package deleted file mode 100644 index f5298be..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Retired EPEL branch. 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 new file mode 100644 index 0000000..3569ac3 --- /dev/null +++ b/hashcat.spec @@ -0,0 +1,122 @@ +# 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} +%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. +# 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 +utility, supporting five unique modes of attack for over 200 +highly-optimized hashing algorithms. hashcat currently supports +CPUs, GPUs, and other hardware accelerators on Linux, Windows, +and Mac OS, and has facilities to help enable distributed password +cracking. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Documentation files for %{name} +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +BuildArch: noarch + +%description doc +%{summary}. + +%prep +%autosetup -p1 +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 %{makeflags} + +%install +%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/ +%{_libdir}/lib%{name}.so.%{version} +%{_libdir}/%{name}/ +%{_bindir}/%{name} + +%files devel +%{_includedir}/%{name} +%{_libdir}/lib%{name}.so + +%files doc +%doc docs/ charsets/ layouts/ masks/ rules/ +%doc example.dict example*.sh + +%changelog +%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 new file mode 100644 index 0000000..776ee7a --- /dev/null +++ b/sources @@ -0,0 +1 @@ +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