summaryrefslogtreecommitdiff
path: root/app-forensics
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
commitb590c8d7572b727d565cc0b8ff660d43569845de (patch)
tree06f7a4102ea4e845df8b66660f252920d52952f9 /app-forensics
parent24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff)
downloadbaldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip
Adding metadata
Diffstat (limited to 'app-forensics')
-rw-r--r--app-forensics/afflib/Manifest2
-rw-r--r--app-forensics/afflib/afflib-3.7.20-r1.ebuild82
-rw-r--r--app-forensics/afflib/afflib-3.7.22.ebuild81
-rw-r--r--app-forensics/afflib/files/afflib-3.7.19-search-path.patch29
-rw-r--r--app-forensics/afflib/files/afflib-3.7.20-c99.patch33
-rw-r--r--app-forensics/afflib/files/afflib-3.7.20-missing-objects.patch18
-rw-r--r--app-forensics/afflib/metadata.xml10
-rw-r--r--app-forensics/afl/Manifest1
-rw-r--r--app-forensics/afl/afl-2.57b-r2.ebuild51
-rw-r--r--app-forensics/afl/files/afl-2.57b-implicit-int-clang16.patch14
-rw-r--r--app-forensics/afl/files/afl-2.57b-install-readmemd.diff12
-rw-r--r--app-forensics/afl/metadata.xml8
-rw-r--r--app-forensics/aflplusplus/Manifest6
-rw-r--r--app-forensics/aflplusplus/aflplusplus-4.30c.ebuild97
-rw-r--r--app-forensics/aflplusplus/aflplusplus-4.32c.ebuild101
-rw-r--r--app-forensics/aflplusplus/aflplusplus-4.35c.ebuild99
-rw-r--r--app-forensics/aflplusplus/files/aflplusplus-4.32c-gcc16.patch45
-rw-r--r--app-forensics/aflplusplus/metadata.xml9
-rw-r--r--app-forensics/aide/Manifest1
-rw-r--r--app-forensics/aide/aide-0.18.8.ebuild106
-rw-r--r--app-forensics/aide/files/aide.conf-r2136
-rw-r--r--app-forensics/aide/files/aide.cron-r2188
-rw-r--r--app-forensics/aide/files/aideinit145
-rw-r--r--app-forensics/aide/metadata.xml12
-rw-r--r--app-forensics/chkrootkit/Manifest4
-rw-r--r--app-forensics/chkrootkit/chkrootkit-0.58b.ebuild74
-rw-r--r--app-forensics/chkrootkit/chkrootkit-0.59.ebuild73
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit-0.55-fcntl_h.patch30
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit-0.55-limits_h.patch10
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit-0.58b-fix_c23.patch35
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit.cron6
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit.service7
-rw-r--r--app-forensics/chkrootkit/files/chkrootkit.timer11
-rw-r--r--app-forensics/chkrootkit/metadata.xml16
-rw-r--r--app-forensics/cmospwd/Manifest1
-rw-r--r--app-forensics/cmospwd/cmospwd-5.1-r1.ebuild25
-rw-r--r--app-forensics/cmospwd/metadata.xml23
-rw-r--r--app-forensics/dfxml/Manifest1
-rw-r--r--app-forensics/dfxml/dfxml-20170921-r2.ebuild28
-rw-r--r--app-forensics/dfxml/metadata.xml8
-rw-r--r--app-forensics/examiner/Manifest1
-rw-r--r--app-forensics/examiner/examiner-0.5-r3.ebuild36
-rw-r--r--app-forensics/examiner/files/examiner-0.5-perl.patch38
-rw-r--r--app-forensics/examiner/metadata.xml5
-rw-r--r--app-forensics/foremost/Manifest1
-rw-r--r--app-forensics/foremost/files/foremost-1.4-config-location.patch12
-rw-r--r--app-forensics/foremost/files/foremost-1.5.7-fno-common.patch99
-rw-r--r--app-forensics/foremost/files/foremost-1.5.7-format-security.patch22
-rw-r--r--app-forensics/foremost/files/foremost-1.5.7-musl.patch33
-rw-r--r--app-forensics/foremost/files/foremost-1.5.7-set-but-unused.patch230
-rw-r--r--app-forensics/foremost/foremost-1.5.7-r4.ebuild47
-rw-r--r--app-forensics/foremost/metadata.xml5
-rw-r--r--app-forensics/galleta/Manifest1
-rw-r--r--app-forensics/galleta/files/galleta-20040505_p1-Wimplicit-function-declaration.patch11
-rw-r--r--app-forensics/galleta/files/galleta-20040505_p1-fix-build-system.patch12
-rw-r--r--app-forensics/galleta/galleta-20040505_p1-r1.ebuild31
-rw-r--r--app-forensics/galleta/metadata.xml5
-rw-r--r--app-forensics/honggfuzz/Manifest1
-rw-r--r--app-forensics/honggfuzz/files/honggfuzz-2.6-no-werror.patch11
-rw-r--r--app-forensics/honggfuzz/honggfuzz-2.6.ebuild56
-rw-r--r--app-forensics/honggfuzz/metadata.xml8
-rw-r--r--app-forensics/lynis/Manifest1
-rw-r--r--app-forensics/lynis/files/lynis.cron-new3
-rw-r--r--app-forensics/lynis/lynis-3.1.6.ebuild69
-rw-r--r--app-forensics/lynis/metadata.xml17
-rw-r--r--app-forensics/mac-robber/Manifest1
-rw-r--r--app-forensics/mac-robber/files/mac-robber-1.02-posix.patch19
-rw-r--r--app-forensics/mac-robber/mac-robber-1.02-r1.ebuild35
-rw-r--r--app-forensics/mac-robber/metadata.xml20
-rw-r--r--app-forensics/magicrescue/Manifest1
-rw-r--r--app-forensics/magicrescue/files/magicrescue-1.1.10-fhs-paths.patch67
-rw-r--r--app-forensics/magicrescue/files/magicrescue-1.1.10-ldflags.patch38
-rw-r--r--app-forensics/magicrescue/magicrescue-1.1.10-r4.ebuild33
-rw-r--r--app-forensics/magicrescue/metadata.xml13
-rw-r--r--app-forensics/memdump/Manifest1
-rw-r--r--app-forensics/memdump/files/memdump-1.01-linux3.patch24
-rw-r--r--app-forensics/memdump/memdump-1.01-r1.ebuild47
-rw-r--r--app-forensics/memdump/metadata.xml5
-rw-r--r--app-forensics/metadata.xml40
-rw-r--r--app-forensics/pasco/Manifest1
-rw-r--r--app-forensics/pasco/files/pasco-20040505_p1-Wimplicit-function-declaration.patch10
-rw-r--r--app-forensics/pasco/files/pasco-20040505_p1-fix-build-system.patch12
-rw-r--r--app-forensics/pasco/metadata.xml5
-rw-r--r--app-forensics/pasco/pasco-20040505_p1-r2.ebuild31
-rw-r--r--app-forensics/radamsa/Manifest2
-rw-r--r--app-forensics/radamsa/files/radamsa-0.7-no-which.patch10
-rw-r--r--app-forensics/radamsa/files/radamsa-0.7_prebuilt-c.patch11
-rw-r--r--app-forensics/radamsa/metadata.xml5
-rw-r--r--app-forensics/radamsa/radamsa-0.7-r1.ebuild52
-rw-r--r--app-forensics/radamsa/radamsa-0.7.ebuild46
-rw-r--r--app-forensics/rifiuti/Manifest1
-rw-r--r--app-forensics/rifiuti/files/rifiuti-20040505_p1-Wimplicit-function-declaration.patch11
-rw-r--r--app-forensics/rifiuti/files/rifiuti-20040505_p1-fix-build-system.patch12
-rw-r--r--app-forensics/rifiuti/metadata.xml5
-rw-r--r--app-forensics/rifiuti/rifiuti-20040505_p1-r1.ebuild31
-rw-r--r--app-forensics/rkhunter/Manifest2
-rw-r--r--app-forensics/rkhunter/files/rkhunter-1.4.6-conf.patch38
-rw-r--r--app-forensics/rkhunter/files/rkhunter-1.4.6-no-insecure-web.patch46
-rw-r--r--app-forensics/rkhunter/files/rkhunter-1.4.cron134
-rw-r--r--app-forensics/rkhunter/files/rkhunter.bash-completion87
-rw-r--r--app-forensics/rkhunter/metadata.xml5
-rw-r--r--app-forensics/rkhunter/rkhunter-1.4.6-r2.ebuild66
-rw-r--r--app-forensics/scalpel/Manifest1
-rw-r--r--app-forensics/scalpel/files/gcc-11-fix-literal-suffix.patch255
-rw-r--r--app-forensics/scalpel/files/musl-error_h.patch83
-rw-r--r--app-forensics/scalpel/metadata.xml20
-rw-r--r--app-forensics/scalpel/scalpel-2.1_pre20210326.ebuild46
-rw-r--r--app-forensics/sleuthkit/Manifest3
-rw-r--r--app-forensics/sleuthkit/files/sleuthkit-4.1.0-tools-shared-libs.patch55
-rw-r--r--app-forensics/sleuthkit/files/sleuthkit-4.10.1-exclude-usr-local.patch28
-rw-r--r--app-forensics/sleuthkit/files/sleuthkit-4.12.0-configure-ac-test-fix.patch34
-rw-r--r--app-forensics/sleuthkit/files/sleuthkit-4.12.1-c23.patch30
-rw-r--r--app-forensics/sleuthkit/files/sleuthkit-4.6.4-default-jar-location-fix.patch58
-rw-r--r--app-forensics/sleuthkit/metadata.xml15
-rw-r--r--app-forensics/sleuthkit/sleuthkit-4.12.1-r2.ebuild327
-rw-r--r--app-forensics/unhide/Manifest1
-rw-r--r--app-forensics/unhide/metadata.xml5
-rw-r--r--app-forensics/unhide/unhide-20220611.ebuild31
-rw-r--r--app-forensics/volatility3/Manifest12
-rw-r--r--app-forensics/volatility3/metadata.xml27
-rw-r--r--app-forensics/volatility3/volatility3-2.27.0.ebuild102
-rw-r--r--app-forensics/volatility3/volatility3-2.28.0.ebuild102
-rw-r--r--app-forensics/yara-x/Manifest6
-rw-r--r--app-forensics/yara-x/metadata.xml22
-rw-r--r--app-forensics/yara-x/yara-x-1.14.0.ebuild92
-rw-r--r--app-forensics/yara-x/yara-x-1.15.0.ebuild92
-rw-r--r--app-forensics/yara-x/yara-x-1.16.0.ebuild92
-rw-r--r--app-forensics/yara/Manifest2
-rw-r--r--app-forensics/yara/metadata.xml36
-rw-r--r--app-forensics/yara/yara-4.5.4.ebuild60
-rw-r--r--app-forensics/yara/yara-4.5.5.ebuild63
-rw-r--r--app-forensics/yara/yara-9999.ebuild63
-rw-r--r--app-forensics/zzuf/Manifest2
-rw-r--r--app-forensics/zzuf/files/zzuf-0.15_autoconf-hardcoded-cflags.patch11
-rw-r--r--app-forensics/zzuf/files/zzuf-0.15_autoconf-musl.patch24
-rw-r--r--app-forensics/zzuf/files/zzuf-0.15_implicit_functions.patch32
-rw-r--r--app-forensics/zzuf/files/zzuf-0.15_use-after-free.patch20
-rw-r--r--app-forensics/zzuf/metadata.xml5
-rw-r--r--app-forensics/zzuf/zzuf-0.15_p20190208.ebuild42
-rw-r--r--app-forensics/zzuf/zzuf-0.15_p20220529.ebuild45
140 files changed, 5304 insertions, 0 deletions
diff --git a/app-forensics/afflib/Manifest b/app-forensics/afflib/Manifest
new file mode 100644
index 000000000000..f2f93676c644
--- /dev/null
+++ b/app-forensics/afflib/Manifest
@@ -0,0 +1,2 @@
+DIST afflib-3.7.20.tar.gz 560441 BLAKE2B 6934efc30566b4b72e55e5727c46657362237872acae9d161f2625439d3d6e12da702b3ed82e3442b7015d8cb707097152cc73a6d0cc31d1ad61467f4022f7d4 SHA512 1ac623cb8462fc929a8ad1c014e92d319a3ebf5226ef07aa0777e4cbb77a9ee20adf570f39c960c9186ac2a477e861dfd5565d3364fdff22f9870f8c9ab30479
+DIST afflib-3.7.22.tar.gz 588290 BLAKE2B d3c63125a5a3823c0bc6ba8040ad596a1669713017ac92e57333d0b847ff19617c11ee4cc9d1ba5d8170a6c0629c89a2dada963d317a4247c39c15c3648712c2 SHA512 d649ce8198d8e6f05b6ba503fd9b454fceb06bf182dec8bc135eb126ad4b100301d7c4fc9ef6dac0f3d98edd785133bc841332333634f4534b8f51041ba51f43
diff --git a/app-forensics/afflib/afflib-3.7.20-r1.ebuild b/app-forensics/afflib/afflib-3.7.20-r1.ebuild
new file mode 100644
index 000000000000..ac063d166fd2
--- /dev/null
+++ b/app-forensics/afflib/afflib-3.7.20-r1.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit autotools python-single-r1
+
+MY_PN=AFFLIBv3
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Library that implements the AFF image standard"
+HOMEPAGE="https://github.com/sshock/AFFLIBv3/"
+SRC_URI="https://github.com/sshock/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~hppa ppc x86 ~x64-macos"
+IUSE="fuse ncurses python qemu readline s3 static-libs threads"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+# Tests don't play well with sandbox
+RESTRICT="test"
+
+RDEPEND="
+ dev-libs/expat
+ virtual/zlib:=
+ fuse? ( sys-fs/fuse:0 )
+ dev-libs/openssl:=
+ ncurses? ( sys-libs/ncurses:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/cython[${PYTHON_USEDEP}]')
+ )
+ readline? ( sys-libs/readline:= )
+ s3? ( net-misc/curl )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.7.19-search-path.patch"
+ "${FILESDIR}/${PN}-3.7.20-c99.patch"
+ "${FILESDIR}/${PN}-3.7.20-missing-objects.patch"
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/FLAGS/s: -g::' \
+ -e 's:-D_FORTIFY_SOURCE=2::' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Hacks for automagic dependencies
+ use ncurses || export ac_cv_lib_ncurses_initscr=no
+ use readline || export ac_cv_lib_readline_readline=no
+
+ local myeconfargs=(
+ $(use_enable fuse)
+ $(use_enable python)
+ $(use_enable qemu)
+ $(use_enable s3)
+ $(use_enable static-libs static)
+ $(use_enable threads threading)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ find "${ED}" -name "*.la" -delete || die
+}
diff --git a/app-forensics/afflib/afflib-3.7.22.ebuild b/app-forensics/afflib/afflib-3.7.22.ebuild
new file mode 100644
index 000000000000..bdcb8026f80e
--- /dev/null
+++ b/app-forensics/afflib/afflib-3.7.22.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit autotools python-single-r1
+
+MY_PN=AFFLIBv3
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Library that implements the AFF image standard"
+HOMEPAGE="https://github.com/sshock/AFFLIBv3/"
+SRC_URI="https://github.com/sshock/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~hppa ppc x86 ~x64-macos"
+IUSE="fuse ncurses python qemu readline s3 static-libs threads"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+# Tests don't play well with sandbox
+RESTRICT="test"
+
+RDEPEND="
+ dev-libs/expat
+ virtual/zlib:=
+ fuse? ( sys-fs/fuse:3= )
+ dev-libs/openssl:=
+ ncurses? ( sys-libs/ncurses:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/cython[${PYTHON_USEDEP}]')
+ )
+ readline? ( sys-libs/readline:= )
+ s3? ( net-misc/curl )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.7.19-search-path.patch"
+ "${FILESDIR}/${PN}-3.7.20-missing-objects.patch"
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/FLAGS/s: -g::' \
+ -e 's:-D_FORTIFY_SOURCE=2::' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Hacks for automagic dependencies
+ use ncurses || export ac_cv_lib_ncurses_initscr=no
+ use readline || export ac_cv_lib_readline_readline=no
+
+ local myeconfargs=(
+ $(use_enable fuse)
+ $(use_enable python)
+ $(use_enable qemu)
+ $(use_enable s3)
+ $(use_enable static-libs static)
+ $(use_enable threads threading)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ find "${ED}" -name "*.la" -delete || die
+}
diff --git a/app-forensics/afflib/files/afflib-3.7.19-search-path.patch b/app-forensics/afflib/files/afflib-3.7.19-search-path.patch
new file mode 100644
index 000000000000..db646eb5065b
--- /dev/null
+++ b/app-forensics/afflib/files/afflib-3.7.19-search-path.patch
@@ -0,0 +1,29 @@
+diff --git a/configure.ac b/configure.ac
+index d902e4b..914ccf5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -30,24 +30,6 @@ AC_CONFIG_MACRO_DIR([m4])
+ m4_include([m4/acx_pthread.m4])
+ ACX_PTHREAD()
+
+-if test x"${cross_compiling}" = "xno" ; then
+- # Bring additional directories where things might be found into our
+- # search path. I don't know why autoconf doesn't do this by default
+- for spfx in ${prefix} /sw /opt/local /usr/local ; do
+- AC_MSG_NOTICE([checking ${spfx}/include])
+- if test -d ${spfx}/include; then
+- CPPFLAGS="$CPPFLAGS -I${spfx}/include"
+- LDFLAGS="$LDFLAGS -L${spfx}/lib"
+- AC_MSG_NOTICE([ *** ADDING ${spfx}/include to CPPFLAGS *** ])
+- AC_MSG_NOTICE([ *** ADDING ${spfx}/lib to LDFLAGS *** ])
+- fi
+- done
+- AC_MSG_NOTICE([ CPPFLAGS = ${CPPFLAGS} ])
+- AC_MSG_NOTICE([ LDFLAGS = ${LDFLAGS} ])
+-else
+- AC_MSG_NOTICE([Cross Compiling --- will not update CPPFALGS or LDFLAGS with /usr/local, /opt/local or /sw])
+-fi
+-
+ if test -r /bin/uname.exe ; then
+ if test `uname -o` == "Msys" ; then
+ AC_MSG_NOTICE([Compiling with Msys. Setting flags appropriately.])
diff --git a/app-forensics/afflib/files/afflib-3.7.20-c99.patch b/app-forensics/afflib/files/afflib-3.7.20-c99.patch
new file mode 100644
index 000000000000..faee6c48dd82
--- /dev/null
+++ b/app-forensics/afflib/files/afflib-3.7.20-c99.patch
@@ -0,0 +1,33 @@
+https://bugs.gentoo.org/921727
+https://github.com/sshock/AFFLIBv3/issues/53
+https://github.com/sshock/AFFLIBv3/commit/01210f488410a23838c54fcc22297cf08ac7de66
+
+From 01210f488410a23838c54fcc22297cf08ac7de66 Mon Sep 17 00:00:00 2001
+From: Phillip Hellewell <sshock@gmail.com>
+Date: Wed, 14 Feb 2024 00:43:56 -0700
+Subject: [PATCH] Fix #53: incompatible pointer types in pyaff.c
+
+--- a/pyaff/afflib.pxd
++++ b/pyaff/afflib.pxd
+@@ -2,7 +2,8 @@ from libc.stdint cimport int64_t, uint32_t, uint64_t
+ from posix.fcntl cimport O_RDONLY
+
+ cdef extern from "afflib/afflib.h":
+- struct AFFILE
++ struct _AFFILE
++ ctypedef _AFFILE AFFILE
+
+ enum: AF_MAX_NAME_LEN
+
+--- a/pyaff/pyaff.c
++++ b/pyaff/pyaff.c
+@@ -1478,7 +1478,7 @@ struct __pyx_obj_5pyaff_affile;
+ */
+ struct __pyx_obj_5pyaff_affile {
+ PyObject_HEAD
+- struct AFFILE *af;
++ AFFILE *af;
+ int64_t size;
+ };
+
+
diff --git a/app-forensics/afflib/files/afflib-3.7.20-missing-objects.patch b/app-forensics/afflib/files/afflib-3.7.20-missing-objects.patch
new file mode 100644
index 000000000000..27ef44026820
--- /dev/null
+++ b/app-forensics/afflib/files/afflib-3.7.20-missing-objects.patch
@@ -0,0 +1,18 @@
+https://bugs.gentoo.org/964738
+https://github.com/sshock/AFFLIBv3/issues/60
+
+--- a/lib/Makefile.am
++++ b/lib/Makefile.am
+@@ -100,10 +100,12 @@ LZMA_SOURCES = \
+ @top_srcdir@/lzma443/C/7zip/Compress/LZ/LZInWindow.cpp \
+ @top_srcdir@/lzma443/C/7zip/Compress/LZ/LZOutWindow.cpp \
+ @top_srcdir@/lzma443/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp \
++ @top_srcdir@/lzma443/C/7zip/Common/FileStreams.cpp \
+ @top_srcdir@/lzma443/C/7zip/Common/InBuffer.cpp \
+ @top_srcdir@/lzma443/C/7zip/Common/OutBuffer.cpp \
+ @top_srcdir@/lzma443/C/7zip/Common/StreamUtils.cpp \
+ @top_srcdir@/lzma443/C/Common/Alloc.cpp \
++ @top_srcdir@/lzma443/C/Common/C_FileIO.cpp \
+ @top_srcdir@/lzma443/C/Common/CommandLineParser.cpp \
+ @top_srcdir@/lzma443/C/Common/CRC.cpp \
+ @top_srcdir@/lzma443/C/Common/String.cpp \
diff --git a/app-forensics/afflib/metadata.xml b/app-forensics/afflib/metadata.xml
new file mode 100644
index 000000000000..1c4efc1f79df
--- /dev/null
+++ b/app-forensics/afflib/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <use>
+ <flag name="fuse">Enable extra fuse thingies</flag>
+ <flag name="qemu">Enable qemu stuff</flag>
+ <flag name="s3">Enable support for Amazon S3</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/afl/Manifest b/app-forensics/afl/Manifest
new file mode 100644
index 000000000000..f67a27b26981
--- /dev/null
+++ b/app-forensics/afl/Manifest
@@ -0,0 +1 @@
+DIST afl-2.57b.tar.gz 839871 BLAKE2B 69029d59451e468528386154e8938a1a7303765e039f98aa05e36f07314398f60ff2578f765142e1f1ff653e5ab93ea53a2efb98abe275046ebacdd3ca8363b6 SHA512 5d12b96229e966aeb11deb47cd8eb36cde2fa32656eb187db02c7240909d6acda36be59b2baf7e42cddd228d25ec94c8bffc3fa27f7f4b5e1e462b62929ce75d
diff --git a/app-forensics/afl/afl-2.57b-r2.ebuild b/app-forensics/afl/afl-2.57b-r2.ebuild
new file mode 100644
index 000000000000..1d63aae81046
--- /dev/null
+++ b/app-forensics/afl/afl-2.57b-r2.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+# See https://github.com/google/AFL/pull/117
+PATCHES=(
+ "${FILESDIR}/${P}-install-readmemd.diff"
+ "${FILESDIR}/${P}-implicit-int-clang16.patch"
+)
+
+DESCRIPTION="american fuzzy lop - compile-time instrumentation fuzzer"
+HOMEPAGE="https://lcamtuf.coredump.cx/afl/"
+SRC_URI="https://github.com/google/AFL/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="sys-devel/gcc:*
+ !app-forensics/aflplusplus"
+RDEPEND="${DEPEND}"
+QA_PREBUILT="/usr/share/afl/testcases/others/elf/small_exec.elf"
+
+S="${WORKDIR}/AFL-${PV}"
+
+src_compile() {
+ emake CC="$(tc-getCC)" \
+ PREFIX="${EPREFIX}/usr" \
+ HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+ DOC_PATH="${EPREFIX}/usr/share/doc/${PF}"
+# Not compatible with latest clang, see
+# https://github.com/google/AFL/issues/151
+#
+# CC="clang" CXX="clang++" strip-unsupported-flags
+# cd llvm_mode || die
+# emake \
+# PREFIX="${EPREFIX}/usr" \
+# HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+# DOC_PATH="${EPREFIX}/usr/share/doc/${PF}"
+}
+
+src_install() {
+ emake DESTDIR="${D}" \
+ PREFIX="${EPREFIX}/usr" \
+ HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+ DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \
+ install
+}
diff --git a/app-forensics/afl/files/afl-2.57b-implicit-int-clang16.patch b/app-forensics/afl/files/afl-2.57b-implicit-int-clang16.patch
new file mode 100644
index 000000000000..dc432c5c08c4
--- /dev/null
+++ b/app-forensics/afl/files/afl-2.57b-implicit-int-clang16.patch
@@ -0,0 +1,14 @@
+Bug: https://bugs.gentoo.org/894514
+diff --git a/Makefile b/Makefile
+index 3819312..536c20b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -50,7 +50,7 @@ ifndef AFL_NO_X86
+
+ test_x86:
+ @echo "[*] Checking for the ability to compile x86 code..."
+- @echo 'main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 )
++ @echo 'int main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 )
+ @rm -f .test
+ @echo "[+] Everything seems to be working, ready to compile."
+
diff --git a/app-forensics/afl/files/afl-2.57b-install-readmemd.diff b/app-forensics/afl/files/afl-2.57b-install-readmemd.diff
new file mode 100644
index 000000000000..50b777413c19
--- /dev/null
+++ b/app-forensics/afl/files/afl-2.57b-install-readmemd.diff
@@ -0,0 +1,12 @@
+diff --git a/Makefile b/Makefile
+index 5e800db26..381931289 100644
+--- a/Makefile
++++ b/Makefile
+@@ -133,7 +133,7 @@ endif
+ set -e; for i in afl-g++ afl-clang afl-clang++; do ln -sf afl-gcc $${DESTDIR}$(BIN_PATH)/$$i; done
+ install -m 755 afl-as $${DESTDIR}$(HELPER_PATH)
+ ln -sf afl-as $${DESTDIR}$(HELPER_PATH)/as
+- install -m 644 docs/README docs/ChangeLog docs/*.txt $${DESTDIR}$(DOC_PATH)
++ install -m 644 README.md docs/ChangeLog docs/*.txt $${DESTDIR}$(DOC_PATH)
+ cp -r testcases/ $${DESTDIR}$(MISC_PATH)
+ cp -r dictionaries/ $${DESTDIR}$(MISC_PATH)
diff --git a/app-forensics/afl/metadata.xml b/app-forensics/afl/metadata.xml
new file mode 100644
index 000000000000..c6eb48b47eb8
--- /dev/null
+++ b/app-forensics/afl/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>hanno@gentoo.org</email>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/aflplusplus/Manifest b/app-forensics/aflplusplus/Manifest
new file mode 100644
index 000000000000..ea3e15d575da
--- /dev/null
+++ b/app-forensics/aflplusplus/Manifest
@@ -0,0 +1,6 @@
+DIST aflplusplus-4.30c-patches.tar.xz 5008 BLAKE2B 60031d726e0d1834d0791bb88e437ac81bca1995dd424d64a0694b7e518e3ddbcf490413d830d2fe7649a1eb5c4cfa0e34e8115505a8c5df5e3fddce80b31efd SHA512 6d9d6bf03f5e899b58252eb299029f1b3630f129e78dd7ec2512ae48244822e0614d915c04ba699b2b56d4f839451b0e76e3f1148eb3027e6e7f53a79111add3
+DIST aflplusplus-4.30c.tar.gz 3031558 BLAKE2B 7f9c7d32afc5316cef460a72e7603aee36161559c2bb5c03edc408c16e8ba8bf96ced2c90e5578caa401ace37caf3ff7bba72ab58b7070c7c5b69004dc2d4da7 SHA512 072c9524978843eec6be5428793be43d10f3530a3f569fd4015d950cdd87696e887c3b567440afee8cb5e359b234d0c5e668cf9ab90622783fc82f68e3ec5f98
+DIST aflplusplus-4.32c-patches.tar.xz 4776 BLAKE2B 75cbe9dfa1d3fccd358cb2f9c3d339d7854d2a690f7e32d57e65a76d7b8a34c30acd6776e2be28280a981d2b9cae7dc4685a28a8cd8b47a5e224074acaf257d1 SHA512 0c863c4d67fc535fdb96f27a429cc11e960820c9825667156987eb468b45d893caf3df37a6c949c47cdc95b250fa92791c3d03ffc4faa61fd728c116c25ae9db
+DIST aflplusplus-4.32c.tar.gz 3045679 BLAKE2B 259edf3fe4405a8703a7452f99406fd390e97763d687445e0a6104f884ba304b3f6755fcdef36f7f8d9743db945ef60791402462cf4599c5a90593ecbb414daf SHA512 9688f476129b45e842918b2e185c5fc82eb94aecd7ac27bfeecc74f5525aaf3754dbb4c442fec3902a93aad079178e1523a544f0808a4b6d21a11dc9508be0a0
+DIST aflplusplus-4.35c-patches.tar.xz 4932 BLAKE2B 3e564d1d035b9b9b6d7fcdd0a11a5a6c4e3302457a7e5d1ae1e61966623a684d5c78b3a4735c1f6fd446760fe4c9231f2d2e862335c761eab2d42ae5986b0dc5 SHA512 287abeed965749609fe18a43e559a807c4de60b9d9e21443a3def68f1902e44302eb6147cdd30f941e412caf857d561eec5744adb46fa842f59909bb5f554c2b
+DIST aflplusplus-4.35c.tar.gz 3117948 BLAKE2B b8b068a5b7eca17eee8bc71f70df9220adb438ed82a169fbfb8da1d7948012b712d3d7ac24bddb48f779abb33467211a3d708eb3b4f0b13bc6e5a832c88a922f SHA512 07a503d22c42f55092367255907d7173d2aef9beb8bcfa9c2d7aca24f6de342305a0310b780c692bc4db807042fd38c479c7ba3ba13210715bd7c0143499785e
diff --git a/app-forensics/aflplusplus/aflplusplus-4.30c.ebuild b/app-forensics/aflplusplus/aflplusplus-4.30c.ebuild
new file mode 100644
index 000000000000..ea57aa6c86ed
--- /dev/null
+++ b/app-forensics/aflplusplus/aflplusplus-4.30c.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {15..19} )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic toolchain-funcs llvm-r1 optfeature python-single-r1
+
+AFL_PATCHSET="${PN}-4.30c-patches"
+DESCRIPTION="Fork of AFL, the popular compile-time instrumentation fuzzer"
+HOMEPAGE="https://github.com/AFLplusplus/AFLplusplus"
+SRC_URI="https://github.com/AFLplusplus/AFLplusplus/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${AFL_PATCHSET}.tar.xz"
+S="${WORKDIR}"/AFLplusplus-${PV}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 arm64"
+IUSE="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Tests involve heavy use of LD_PRELOAD in some cases
+# This isn't compatible with sandbox
+RESTRICT="test"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=
+ ')
+ !app-forensics/afl
+"
+DEPEND="
+ ${RDEPEND}
+ test? ( dev-util/cmocka )
+"
+
+QA_FLAGS_IGNORED="
+ usr/lib.*/afl/afl-gcc-cmplog-pass.so
+ usr/lib.*/afl/afl-gcc-cmptrs-pass.so
+"
+QA_PREBUILT="usr/share/afl/testcases/others/elf/small_exec.elf"
+
+PATCHES=(
+ "${WORKDIR}"/${AFL_PATCHSET}
+)
+
+pkg_setup() {
+ llvm-r1_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+mymake() {
+ # afl-fuzz spews garbage to stdout if the environment contains any
+ # variables whose name beginning with USE_ (including the underscore),
+ # regardless of their value (even if empty!). The ebuild environment
+ # contains several such variables and the garbage that gets printed
+ # ends up in the generated man page.
+ #
+ # We can work around the problem by unsetting all these variables when
+ # running make.
+ local badvars=("${!USE_@}")
+
+ env "${badvars[@]/#/-u}" emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS_FLTO="" \
+ PREFIX="${EPREFIX}/usr" \
+ HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+ DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \
+ MAN_PATH="${EPREFIX}/usr/share/man/man8" \
+ "$@"
+}
+
+src_compile() {
+ # bug #945258
+ append-cflags -std=gnu17
+
+ mymake
+}
+
+src_test() {
+ mymake test
+}
+
+src_install() {
+ mymake DESTDIR="${D}" install
+ dostrip -x /usr/share/afl/testcases/
+}
+
+pkg_postinst() {
+ # TODO: Any others?
+ optfeature "fuzzing with AFL_USE_ASAN" llvm-runtimes/compiler-rt-sanitizers[asan]
+ optfeature "fuzzing with AFL_USE_MSAN" llvm-runtimes/compiler-rt-sanitizers[msan]
+}
diff --git a/app-forensics/aflplusplus/aflplusplus-4.32c.ebuild b/app-forensics/aflplusplus/aflplusplus-4.32c.ebuild
new file mode 100644
index 000000000000..73c78f77bd1d
--- /dev/null
+++ b/app-forensics/aflplusplus/aflplusplus-4.32c.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {15..20} )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic toolchain-funcs llvm-r1 optfeature python-single-r1
+
+AFL_PATCHSET="${PN}-4.32c-patches"
+DESCRIPTION="Fork of AFL, the popular compile-time instrumentation fuzzer"
+HOMEPAGE="https://github.com/AFLplusplus/AFLplusplus"
+SRC_URI="https://github.com/AFLplusplus/AFLplusplus/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${AFL_PATCHSET}.tar.xz"
+S="${WORKDIR}"/AFLplusplus-${PV}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 arm64"
+IUSE="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Tests involve heavy use of LD_PRELOAD in some cases
+# This isn't compatible with sandbox
+RESTRICT="test"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=
+ ')
+ !app-forensics/afl
+"
+DEPEND="
+ ${RDEPEND}
+ test? ( dev-util/cmocka )
+"
+
+QA_FLAGS_IGNORED="
+ usr/lib.*/afl/afl-gcc-cmplog-pass.so
+ usr/lib.*/afl/afl-gcc-cmptrs-pass.so
+"
+QA_PREBUILT="usr/share/afl/testcases/others/elf/small_exec.elf"
+
+PATCHES=(
+ "${WORKDIR}"/${AFL_PATCHSET}
+ "${FILESDIR}"/${PN}-4.32c-gcc16.patch
+)
+
+pkg_setup() {
+ llvm-r1_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+mymake() {
+ # afl-fuzz spews garbage to stdout if the environment contains any
+ # variables whose name beginning with USE_ (including the underscore),
+ # regardless of their value (even if empty!). The ebuild environment
+ # contains several such variables and the garbage that gets printed
+ # ends up in the generated man page.
+ #
+ # We can work around the problem by unsetting all these variables when
+ # running make.
+ local badvars=("${!USE_@}")
+
+ env "${badvars[@]/#/-u}" emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS_FLTO="" \
+ PREFIX="${EPREFIX}/usr" \
+ HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+ DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \
+ MAN_PATH="${EPREFIX}/usr/share/man/man8" \
+ "$@"
+}
+
+src_compile() {
+ # bug #945258
+ append-cflags -std=gnu17
+
+ strip-unsupported-flags
+ CC=clang CXX=clang++ strip-unsupported-flags
+
+ mymake
+}
+
+src_test() {
+ mymake test
+}
+
+src_install() {
+ mymake DESTDIR="${D}" install
+ dostrip -x /usr/share/afl/testcases/
+}
+
+pkg_postinst() {
+ # TODO: Any others?
+ optfeature "fuzzing with AFL_USE_ASAN" llvm-runtimes/compiler-rt-sanitizers[asan]
+ optfeature "fuzzing with AFL_USE_MSAN" llvm-runtimes/compiler-rt-sanitizers[msan]
+}
diff --git a/app-forensics/aflplusplus/aflplusplus-4.35c.ebuild b/app-forensics/aflplusplus/aflplusplus-4.35c.ebuild
new file mode 100644
index 000000000000..a91e0c0c8188
--- /dev/null
+++ b/app-forensics/aflplusplus/aflplusplus-4.35c.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {15..22} )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic toolchain-funcs llvm-r2 optfeature python-single-r1
+
+AFL_PATCHSET="${PN}-4.35c-patches"
+DESCRIPTION="Fork of AFL, the popular compile-time instrumentation fuzzer"
+HOMEPAGE="https://github.com/AFLplusplus/AFLplusplus"
+SRC_URI="https://github.com/AFLplusplus/AFLplusplus/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${AFL_PATCHSET}.tar.xz"
+S="${WORKDIR}"/AFLplusplus-${PV}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+IUSE="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# Tests involve heavy use of LD_PRELOAD in some cases
+# This isn't compatible with sandbox
+RESTRICT="test"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=
+ ')
+ !app-forensics/afl
+"
+DEPEND="
+ ${RDEPEND}
+ test? ( dev-util/cmocka )
+"
+
+QA_FLAGS_IGNORED="
+ usr/lib.*/afl/afl-gcc-cmplog-pass.so
+ usr/lib.*/afl/afl-gcc-cmptrs-pass.so
+"
+QA_PREBUILT="usr/share/afl/testcases/others/elf/small_exec.elf"
+
+PATCHES=(
+ "${WORKDIR}"/${AFL_PATCHSET}
+)
+
+pkg_setup() {
+ llvm-r2_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+mymake() {
+ # afl-fuzz spews garbage to stdout if the environment contains any
+ # variables whose name beginning with USE_ (including the underscore),
+ # regardless of their value (even if empty!). The ebuild environment
+ # contains several such variables and the garbage that gets printed
+ # ends up in the generated man page.
+ #
+ # We can work around the problem by unsetting all these variables when
+ # running make.
+ local badvars=("${!USE_@}")
+
+ env "${badvars[@]/#/-u}" emake -Onone \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS_FLTO="" \
+ PREFIX="${EPREFIX}/usr" \
+ HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \
+ DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \
+ MAN_PATH="${EPREFIX}/usr/share/man/man8" \
+ "$@"
+}
+
+src_compile() {
+ # bug #945258
+ append-cflags -std=gnu17
+
+ strip-unsupported-flags
+ CC=clang CXX=clang++ strip-unsupported-flags
+
+ mymake
+}
+
+src_test() {
+ mymake test
+}
+
+src_install() {
+ mymake DESTDIR="${D}" install
+ dostrip -x /usr/share/afl/testcases/
+}
+
+pkg_postinst() {
+ # TODO: Any others?
+ optfeature "fuzzing with AFL_USE_ASAN" llvm-runtimes/compiler-rt-sanitizers[asan]
+ optfeature "fuzzing with AFL_USE_MSAN" llvm-runtimes/compiler-rt-sanitizers[msan]
+}
diff --git a/app-forensics/aflplusplus/files/aflplusplus-4.32c-gcc16.patch b/app-forensics/aflplusplus/files/aflplusplus-4.32c-gcc16.patch
new file mode 100644
index 000000000000..8806a35d55f9
--- /dev/null
+++ b/app-forensics/aflplusplus/files/aflplusplus-4.32c-gcc16.patch
@@ -0,0 +1,45 @@
+https://bugs.gentoo.org/957401
+https://github.com/AFLplusplus/AFLplusplus/pull/2465
+--- a/instrumentation/afl-gcc-cmplog-pass.so.cc
++++ b/instrumentation/afl-gcc-cmplog-pass.so.cc
+@@ -44,8 +44,7 @@ static const struct pass_data afl_cmplog_pass_data = {
+ .properties_provided = 0,
+ .properties_destroyed = 0,
+ .todo_flags_start = 0,
+- .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg | TODO_verify_il |
+- TODO_rebuild_cgraph_edges),
++ .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg | TODO_rebuild_cgraph_edges),
+
+ };
+
+--- a/instrumentation/afl-gcc-cmptrs-pass.so.cc
++++ b/instrumentation/afl-gcc-cmptrs-pass.so.cc
+@@ -44,8 +44,7 @@ static const struct pass_data afl_cmptrs_pass_data = {
+ .properties_provided = 0,
+ .properties_destroyed = 0,
+ .todo_flags_start = 0,
+- .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg | TODO_verify_il |
+- TODO_rebuild_cgraph_edges),
++ .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg | TODO_rebuild_cgraph_edges),
+
+ };
+
+--- a/instrumentation/afl-gcc-pass.so.cc
++++ b/instrumentation/afl-gcc-pass.so.cc
+@@ -65,7 +65,6 @@
+ The new pass is to be a GIMPLE_PASS. Given the sort of
+ instrumentation it's supposed to do, its todo_flags_finish will
+ certainly need TODO_update_ssa, and TODO_cleanup_cfg.
+- TODO_verify_il is probably desirable, at least during debugging.
+ TODO_rebuild_cgraph_edges is required only in the out-of-line
+ instrumentation mode.
+
+@@ -148,7 +147,7 @@ static constexpr struct pass_data afl_pass_data = {
+ .properties_provided = 0,
+ .properties_destroyed = 0,
+ .todo_flags_start = 0,
+- .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg | TODO_verify_il),
++ .todo_flags_finish = (TODO_update_ssa | TODO_cleanup_cfg),
+
+ };
+
diff --git a/app-forensics/aflplusplus/metadata.xml b/app-forensics/aflplusplus/metadata.xml
new file mode 100644
index 000000000000..d9201802d6c5
--- /dev/null
+++ b/app-forensics/aflplusplus/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/aide/Manifest b/app-forensics/aide/Manifest
new file mode 100644
index 000000000000..58481ccdd29b
--- /dev/null
+++ b/app-forensics/aide/Manifest
@@ -0,0 +1 @@
+DIST aide-0.18.8.tar.gz 383589 BLAKE2B a3b7efca89d0be99614e423a983fb0a3413f1cbdbc370b54f755e6dae8bb7f5612921ba998fd6db9248ae739fdaf3d344e092933b7dad7fd94dc1844e68a605e SHA512 38763f527cfbc11847eca2fca17eceabc46158624954f0457feb49b885f34e4311f2dbc50b5471f4ff972e9e4e9c9f55c2da8dd8d55c04063a9043ab4829ff05
diff --git a/app-forensics/aide/aide-0.18.8.ebuild b/app-forensics/aide/aide-0.18.8.ebuild
new file mode 100644
index 000000000000..5d5de463dfda
--- /dev/null
+++ b/app-forensics/aide/aide-0.18.8.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit readme.gentoo-r1
+
+DESCRIPTION="AIDE (Advanced Intrusion Detection Environment) is a file integrity checker"
+HOMEPAGE="https://aide.github.io/ https://github.com/aide/aide"
+SRC_URI="https://github.com/aide/aide/releases/download/v${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~arm64 x86"
+IUSE="acl audit curl e2fs mhash selinux xattr"
+
+DEPEND="
+ dev-libs/libpcre2
+ virtual/zlib:=
+ acl? ( virtual/acl )
+ audit? ( sys-process/audit )
+ curl? ( net-misc/curl )
+ e2fs? ( sys-fs/e2fsprogs )
+ !mhash? (
+ dev-libs/libgcrypt:=
+ dev-libs/libgpg-error
+ )
+ mhash? ( app-crypt/mhash )
+ selinux? ( sys-libs/libselinux )
+ xattr? ( sys-apps/attr )
+"
+RDEPEND="
+ ${DEPEND}
+ selinux? ( sec-policy/selinux-aide )
+"
+BDEPEND="
+ sys-devel/bison
+ sys-devel/flex
+ virtual/pkgconfig
+"
+
+DISABLE_AUTOFORMATTING=1
+DOC_CONTENTS="
+Example configuration file was installed at '${EPREFIX}/etc/aide/aide.conf'.
+Please edit it to meet your needs. Refer to aide.conf(5) manual page
+for more information.
+
+A helper script, aideinit, was installed and can be used to make AIDE
+management easier. Please run 'aideinit --help' for more information."
+
+src_prepare() {
+ default
+
+ # Only needed for snapshots.
+ if [[ ${PV} == *_p* ]] ; then
+ echo "m4_define([AIDE_VERSION], [${PV}])" > version.m4 || die
+ fi
+}
+
+src_configure() {
+ # Needs Bison, flex
+ unset YACC
+ export LEX=flex
+
+ local myeconfargs=(
+ --sysconfdir="${EPREFIX}"/etc/${PN}
+
+ # Needed even in EAPI=8, >=portage-3.0.40 skips it here (bug #887177)
+ --disable-static
+
+ # Disable broken l10n support: https://sourceforge.net/p/aide/bugs/98/
+ # This doesn't affect anything because there are no localizations yet.
+ --without-locale
+
+ --with-zlib
+ $(use_with curl)
+ $(use_with acl posix-acl)
+ $(use_with selinux)
+ $(use_with xattr)
+ $(use_with e2fs e2fsattrs)
+ $(use_with mhash mhash)
+ $(use_with !mhash gcrypt)
+ $(use_with audit)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ readme.gentoo_create_doc
+
+ insinto /etc/${PN}
+ insopts -m0600
+ newins "${FILESDIR}"/aide.conf-r2 aide.conf
+
+ dosbin "${FILESDIR}"/aideinit
+ dodoc -r contrib/ "${FILESDIR}"/aide.cron-r2
+
+ keepdir /var/{lib,log}/${PN}
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+}
diff --git a/app-forensics/aide/files/aide.conf-r2 b/app-forensics/aide/files/aide.conf-r2
new file mode 100644
index 000000000000..4bce675f7da3
--- /dev/null
+++ b/app-forensics/aide/files/aide.conf-r2
@@ -0,0 +1,136 @@
+# Example configuration file for AIDE
+# See more: man 5 aide.conf
+
+database_in=file:/var/lib/aide/aide.db
+database_out=file:/var/lib/aide/aide.db.new
+
+# Change this to "no" or remove it to not gzip output
+# (only useful on systems with few CPU cycles to spare)
+gzip_dbout=yes
+
+# Default: warning
+#log_level=info
+
+# Default: changed_attributes
+#report_level=added_removed_attributes
+
+report_url=file:/var/log/aide/aide.log
+report_url=stdout
+#report_url=stderr
+
+# Here are all the things we can check - these are the default rules
+#
+# p: permissions
+# ftype: file type
+# i: inode
+# l: link name
+# n: number of links
+# u: user
+# g: group
+# s: size
+# b: block count
+# m: mtime (modification time)
+# a: atime (access time)
+# c: ctime (change time)
+# S: check for growing size
+# I: ignore changed filename
+# ANF: allow new files
+# ARF: allow removed files
+# md5: md5 checksum
+# sha1: sha1 checksum
+# sha256: sha256 checksum
+# sha512: sha512 checksum
+# rmd160: rmd160 checksum
+# tiger: tiger checksum
+# crc32: crc32 checksum
+# R: p+ftype+i+l+n+u+g+s+m+c+md5+X
+# L: p+ftype+i+l+n+u+g+X
+# E: Empty group
+# X: acl+selinux+xattrs+e2fsattrs (if groups are explicitly enabled)
+# >: Growing file p+ftype+l+u+g+i+n+S+X
+
+# Defines formerly set here have been moved to /etc/default/aide.
+
+# Custom rules
+Binlib = p+i+n+u+g+s+b+m+c+md5+sha256+rmd160
+ConfFiles = p+i+n+u+g+s+b+m+c+md5+sha256+rmd160
+Logs = p+i+n+u+g+S
+Devices = p+i+n+u+g+s+b+c+md5+sha256+rmd160
+Databases = p+n+u+g
+StaticDir = p+i+n+u+g
+ManPages = p+i+n+u+g+s+b+m+c+md5+sha256+rmd160
+
+# Next decide what directories/files you want in the database
+
+# Kernel, system map, etc.
+=/boot$ Binlib
+# Configs
+/etc ConfFiles
+!/etc/mtab
+# Binaries
+/bin Binlib
+/sbin Binlib
+/usr/bin Binlib
+/usr/sbin Binlib
+/usr/libexec Binlib
+/usr/local/bin Binlib
+/usr/local/sbin Binlib
+#/usr/games Binlib
+# Libraries
+/lib(64)? Binlib
+/usr/lib(64)? Binlib
+/usr/local/lib(64)? Binlib
+# Log files
+=/var/log$ StaticDir
+#!/var/log/ksymoops
+/var/log/aide/aide.log(.[0-9])?(.gz)? Databases
+/var/log/aide/error.log(.[0-9])?(.gz)? Databases
+#/var/log/setuid.changes(.[0-9])?(.gz)? Databases
+!/var/log/aide
+/var/log Logs
+# Devices
+!/dev/pts
+# If you get spurious warnings about being unable to mmap() /dev/cpu/mtrr,
+# you may uncomment this to get rid of them. They're harmless but sometimes
+# annoying.
+#!/dev/cpu/mtrr
+#!/dev/xconsole
+/dev Devices
+# Other miscellaneous files
+/var/run$ StaticDir
+!/var/run
+# Test only the directory when dealing with /proc
+/proc$ StaticDir
+!/proc
+
+# You can look through these examples to get further ideas
+
+# MD5 sum files - especially useful with debsums -g
+#/var/lib/dpkg/info/([^\.]+).md5sums u+g+s+m+md5+sha1
+
+# Check crontabs
+#/var/spool/anacron/cron.daily Databases
+#/var/spool/anacron/cron.monthly Databases
+#/var/spool/anacron/cron.weekly Databases
+#/var/spool/cron Databases
+#/var/spool/cron/crontabs Databases
+
+# manpages can be trojaned, especially depending on *roff implementation
+#/usr/man ManPages
+#/usr/share/man ManPages
+#/usr/local/man ManPages
+
+# docs
+#/usr/doc ManPages
+#/usr/share/doc ManPages
+
+# check users' home directories
+#/home Binlib
+
+# check sources for modifications
+#/usr/src L
+#/usr/local/src L
+
+# Check headers for same
+#/usr/include L
+#/usr/local/include L
diff --git a/app-forensics/aide/files/aide.cron-r2 b/app-forensics/aide/files/aide.cron-r2
new file mode 100644
index 000000000000..b8a78ba2a856
--- /dev/null
+++ b/app-forensics/aide/files/aide.cron-r2
@@ -0,0 +1,188 @@
+#!/bin/bash
+# Modified: Benjamin Smee
+# Date: Fri Sep 10 11:35:41 BST 2004
+
+# This is the email address reports get mailed to
+MAILTO=root@localhost
+
+# Set this to suppress mailings when there's nothing to report
+QUIETREPORTS=1
+
+# This parameter defines which aide command to run from the cron script.
+# Sensible values are "update" and "check".
+# Default is "check", ensuring backwards compatibility.
+# Since "update" does not take any longer, it is recommended to use "update",
+# so that a new database is created every day. The new database needs to be
+# manually copied over the current one, though.
+COMMAND=update
+
+# This parameter defines how many lines to return per e-mail. Output longer
+# than this value will be truncated in the e-mail sent out.
+LINES=1000
+
+# This parameter gives a grep regular expression. If given, all output lines
+# that _don't_ match the regexp are listed first in the script's output. This
+# allows to easily remove noise from the aide report.
+NOISE="(/var/cache/|/var/lib/|/var/tmp)"
+PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+LOGDIR="/var/log/aide"
+LOGFILE="aide.log"
+CONFFILE="/etc/aide/aide.conf"
+ERRORLOG="aide_error.log"
+MAILLOG="aide_mail.log"
+ERRORTMP=$(mktemp "${ERRORLOG}.XXXXXX")
+
+[ -f /usr/bin/aide ] || exit 0
+
+DATABASE=$(grep "^database=file:/" $CONFFILE | head -n 1 | cut --delimiter=: --fields=2)
+FQDN=$(hostname -f)
+DATE=$(date +"at %Y-%m-%d %H:%M")
+
+# default values
+
+DATABASE="${DATABASE:-/var/lib/aide/aide.db}"
+
+AIDEARGS=""
+
+if [ ! -f "$DATABASE" ]; then
+ /usr/sbin/sendmail $MAILTO <<EOF
+Subject: Daily AIDE report for $FQDN
+From: root@${FQDN}
+To: ${MAILTO}
+Fatal error: The AIDE database does not exist!
+This may mean you haven't created it, or it may mean that someone has removed it.
+EOF
+ exit 0
+fi
+
+aide $AIDEARGS --$COMMAND >"$LOGDIR/$LOGFILE" 2>"$ERRORTMP"
+RETVAL=$?
+
+if [ -n "$QUIETREPORTS" ] && ! [ -s "$LOGDIR/$LOGFILE" ] && ! [ -s "$ERRORTMP" ] ; then
+ # Bail now because there was no output and QUIETREPORTS is set
+ exit 0
+fi
+
+MAILTMP=$(mktemp "${MAILLOG}.XXXXXX")
+
+(cat << EOF
+This is an automated report generated by the Advanced Intrusion Detection
+Environment on $FQDN ${DATE}.
+
+EOF
+
+# include error log in daily report e-mail
+
+if [ "$RETVAL" != "0" ]; then
+ cat > "$LOGDIR/$ERRORLOG" << EOF
+
+*****************************************************************************
+* aide returned a non-zero exit value *
+*****************************************************************************
+
+EOF
+ echo "exit value is: $RETVAL" >> "$LOGDIR/$ERRORLOG"
+else
+ touch "$LOGDIR/$ERRORLOG"
+fi
+< "$ERRORTMP" cat >> "$LOGDIR/$ERRORLOG"
+rm -f "$ERRORTMP"
+
+if [ -s "$LOGDIR/$ERRORLOG" ]; then
+ errorlines=$(wc -l "$LOGDIR/$ERRORLOG" | awk '{ print $1 }')
+ if [ "${errorlines:=0}" -gt $LINES ]; then
+ cat << EOF
+
+****************************************************************************
+* aide has returned many errors. *
+* the error log output has been truncated in this mail *
+****************************************************************************
+
+EOF
+ echo "Error output is $errorlines lines, truncated to $LINES."
+ head -$LINES "$LOGDIR/$ERRORLOG"
+ echo "The full output can be found in $LOGDIR/$ERRORLOG."
+ else
+ echo "Errors produced ($errorlines lines):"
+ cat "$LOGDIR/$ERRORLOG"
+ fi
+else
+ echo "AIDE produced no errors."
+fi
+
+# include de-noised log
+
+if [ -n "$NOISE" ]; then
+ NOISETMP=$(mktemp "aidenoise.XXXXXX")
+ NOISETMP2=$(mktemp "aidenoise.XXXXXX")
+ sed -n '1,/^Detailed information about changes:/p' "$LOGDIR/$LOGFILE" | \
+ grep '^\(changed\|removed\|added\):' | \
+ grep -v "^added: THERE WERE ALSO [0-9]\+ FILES ADDED UNDER THIS DIRECTORY" > "$NOISETMP2"
+
+ if [ -n "$NOISE" ]; then
+ < "$NOISETMP2" grep -v "^\(changed\|removed\|added\):$NOISE" > "$NOISETMP"
+ rm -f "$NOISETMP2"
+ echo "De-Noised output removes everything matching $NOISE."
+ else
+ mv "$NOISETMP2" "$NOISETMP"
+ echo "No noise expression was given."
+ fi
+
+ if [ -s "$NOISETMP" ]; then
+ loglines=$(< "$NOISETMP" wc -l | awk '{ print $1 }')
+ if [ "${loglines:=0}" -gt $LINES ]; then
+ cat << EOF
+
+****************************************************************************
+* aide has returned long output which has been truncated in this mail *
+****************************************************************************
+
+EOF
+ echo "De-Noised output is $loglines lines, truncated to $LINES."
+ < "$NOISETMP" head -$LINES
+ echo "The full output can be found in $LOGDIR/$LOGFILE."
+ else
+ echo "De-Noised output of the daily AIDE run ($loglines lines):"
+ cat "$NOISETMP"
+ fi
+ else
+ echo "AIDE detected no changes after removing noise."
+ fi
+ rm -f "$NOISETMP"
+ echo "============================================================================"
+fi
+
+# include non-de-noised log
+
+if [ -s "$LOGDIR/$LOGFILE" ]; then
+ loglines=$(wc -l "$LOGDIR/$LOGFILE" | awk '{ print $1 }')
+ if [ "${loglines:=0}" -gt $LINES ]; then
+ cat << EOF
+
+****************************************************************************
+* aide has returned long output which has been truncated in this mail *
+****************************************************************************
+
+EOF
+ echo "Output is $loglines lines, truncated to $LINES."
+ head -$LINES "$LOGDIR/$LOGFILE"
+ echo "The full output can be found in $LOGDIR/$LOGFILE."
+ else
+ echo "Output of the daily AIDE run ($loglines lines):"
+ cat "$LOGDIR/$LOGFILE"
+ fi
+else
+ echo "AIDE detected no changes."
+fi
+) > "${MAILTMP}"
+
+(
+cat <<EOF
+Subject: Daily AIDE report for $FQDN
+From: root@${FQDN}
+To: ${MAILTO}
+EOF
+cat "${MAILTMP}"
+) | /usr/sbin/sendmail $MAILTO
+
+rm -f "$MAILTMP"
diff --git a/app-forensics/aide/files/aideinit b/app-forensics/aide/files/aideinit
new file mode 100644
index 000000000000..6a3c60c37837
--- /dev/null
+++ b/app-forensics/aide/files/aideinit
@@ -0,0 +1,145 @@
+#!/bin/sh
+# Copyright 2003 Mike Markley <mike@markley.org>
+# This script is free for any purpose whatseoever so long as the above
+# copyright notice remains in place.
+#
+# Modified for Gentoo: Benjamin Smee
+# Date: Fri Sep 10 11:36:04 BST 2004
+
+# This is the email address reports get mailed to
+MAILTO=root@localhost
+
+# Defaults
+#MAILTO="${MAILTO:-root}"
+
+# Options
+opt_f=0
+opt_y=0
+opt_c=0
+opt_b=0
+config="/etc/aide/aide.conf"
+
+aideinit_usage() {
+ echo "Usage: $0 [options] -- [aide options]"
+ echo " -y|--yes Overwrite output file"
+ echo " -f|--force Force overwrite of database"
+ echo " -c|--config Specify alternate config file"
+ echo " -o|--output Specify alternate output file"
+ echo " -d|--database Specify alternate database file"
+ echo " -b|--background Run in the background"
+}
+
+while [ -n "$1" ]; do
+ case "$1" in
+ -h|--help)
+ aideinit_usage
+ exit 0
+ ;;
+ -f|--force)
+ opt_f=1
+ shift
+ ;;
+ -y|--yes)
+ opt_y=1
+ shift
+ ;;
+ -b|--background)
+ opt_b=1
+ shift
+ ;;
+ -o|--output)
+ shift
+ [ -z "$1" ] && aideinit_usage && exit 1
+ outfile=$1
+ shift
+ ;;
+ -d|--database)
+ shift
+ [ -z "$1" ] && aideinit_usage && exit 1
+ dbfile=$1
+ shift
+ ;;
+ -c|--config)
+ opt_c=1
+ shift
+ [ -z "$1" ] && aideinit_usage && exit 1
+ config=$1
+ shift
+ ;;
+ --)
+ shift
+ break 2
+ ;;
+ *)
+ echo "Unknown option $1 (use -- to delimit aideinit and aide options)"
+ exit
+ ;;
+ esac
+done
+
+if [ ! -f "$config" ]; then
+ echo "$0: $config: file not found"
+ exit 1
+fi
+
+if [ -z "$outfile" ]; then
+ outfile=`egrep "database_out=file:" $config | cut -d: -f2`
+ [ -z "$outfile" ] && outfile="/var/lib/aide/aide.db.new"
+fi
+if [ -z "$dbfile" ]; then
+ dbfile=`egrep "database=file:" $config | cut -d: -f2`
+ [ -z "$dbfile" ] && dbfile="/var/lib/aide/aide.db"
+fi
+
+if [ -f $outfile ]; then
+ if [ $opt_y -eq 0 ]; then
+ echo -n "Overwrite existing $outfile [Yn]? "
+ read yn
+ case "$yn" in
+ [Nn]*)
+ exit 0
+ ;;
+ esac
+ fi
+fi
+
+extraflags=""
+
+if [ $opt_c -eq 1 ]; then
+ extraflags="$extraflags --config $config"
+fi
+
+if [ $opt_b -eq 1 ]; then
+ (aide --init $extraflags $@ >/var/log/aide/aideinit.log 2>/var/log/aide/aideinit.errors
+ if [ -f "$dbfile" -a $opt_f -eq 0 ]; then
+ echo "$dbfile exists and -f was not specified" >> /var/log/aide/aideinit.errors
+ fi
+ lines=`wc -l /var/log/aide/aideinit.errors | awk '{ print $1 }'`
+ if [ "$lines" -gt 0 ]; then
+ (echo "AIDE init errors:"; cat /var/log/aide/aideinit.errors) | /bin/mail -s "AIDE initialization problem" $MAILTO
+ else
+ cp -f $outfile $dbfile
+ fi) &
+ exit 0
+fi
+
+echo "Running aide --init..."
+aide --init $extraflags $@
+
+return=$?
+if [ $return -ne 0 ]; then
+ echo "Something didn't quite go right; see $outfile for details" >&2
+ exit $return
+fi
+
+if [ -f "$dbfile" -a $opt_f -eq 0 ]; then
+ echo -n "Overwrite $dbfile [yN]? "
+ read yn
+ case "$yn" in
+ [yY]*)
+ cp -f $outfile $dbfile
+ ;;
+ esac
+else
+ cp -f $outfile $dbfile
+fi
diff --git a/app-forensics/aide/metadata.xml b/app-forensics/aide/metadata.xml
new file mode 100644
index 000000000000..e4f5eea126b0
--- /dev/null
+++ b/app-forensics/aide/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <use>
+ <flag name="e2fs">Enable support for checking file attributes on ext2/ext3/ext4 filesystems</flag>
+ <flag name="curl">Use curl for http,https and ftp backends</flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:freebsd:advanced_intrusion_detection_environment</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/chkrootkit/Manifest b/app-forensics/chkrootkit/Manifest
new file mode 100644
index 000000000000..be732886f1c7
--- /dev/null
+++ b/app-forensics/chkrootkit/Manifest
@@ -0,0 +1,4 @@
+DIST chkrootkit-0.58b-gentoo.patch.bz2 5067 BLAKE2B f1690d72f40269429e437c4ea407e0edbb080b760457a85cfd0c32843f69dc7ecdada795545c390887658a34504243cb8a814f082da85fd78eb3c3e9a99f485f SHA512 266b981304fe129117cb11c304a44f39e2c76c9acc634e6aa5a6654ac7ea76480950652b80378e43cab57a3993d3a0c11b413c9b9e9699924f9b44f6f50a9ec1
+DIST chkrootkit-0.58b.tar.gz 42957 BLAKE2B 92a17d9bb01e2c713791404568a1a625138d2ccd898f2624b1e076dd7d29d6a9154013f6408ffdcf1a5e2cea7236d3c218849ee732dd89f53e1f121cd560d342 SHA512 50829446aa5a320ef3aa678c7bbc03ba2ebc14dca3b4c1f312fb46d3d8206345628d2e94b99cfea33e0d3971afbc025dbd387fb32c4e1135a7466c20eb3afab2
+DIST chkrootkit-0.59-gentoo.patch.bz2 5132 BLAKE2B 7107435ae5f9fc075d2730b63ca51353d2b44fa6e745854204fe723ac7a956e95f51c2714ccb3d642fdd9b53abe0488c071ac4d31f97ce9a03c744fda31527f9 SHA512 f6cebbbf5a429d2ebd9da9dd50120bc63c0403692c6dbe2bb14bcbd8992d66e72b012e0e1922f6233eea720850eb476b879a2cd90e716a9a3370ee61206d0693
+DIST chkrootkit-0.59.tar.gz 45088 BLAKE2B ca43a36f8c5f4c063268fad7ca5f1cd3db732b648dd0d0e8e2a94fa3d6a837be05cad186b07eec185eec2b0446e288c71df933d5ddd5c125a9853cbb762cb440 SHA512 b67b726e60e58d1486bae171f6de0ba6422f71822aa62cb14bc9fcc30edbb6e00d84673a58a9cb8cf21da18d41355d0ee14135b848eafb69045315f519ac33e4
diff --git a/app-forensics/chkrootkit/chkrootkit-0.58b.ebuild b/app-forensics/chkrootkit/chkrootkit-0.58b.ebuild
new file mode 100644
index 000000000000..029e83152960
--- /dev/null
+++ b/app-forensics/chkrootkit/chkrootkit-0.58b.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd toolchain-funcs
+
+GENTOO_PATCH="${P}-gentoo.patch"
+
+DESCRIPTION="Tool to locally check for signs of a rootkit"
+HOMEPAGE="https://www.chkrootkit.org/"
+SRC_URI="ftp://ftp.chkrootkit.org/pub/seg/pac/${P}.tar.gz
+ https://md11.it.cx/download/${PN}/${GENTOO_PATCH}.bz2"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm ~hppa ~mips ppc ppc64 ~s390 ~sparc x86"
+IUSE="+cron selinux"
+
+RDEPEND="
+ cron? ( virtual/cron )
+ selinux? ( sec-policy/selinux-chkrootkit )
+"
+
+PATCHES=(
+ "${WORKDIR}/${P}-gentoo.patch"
+ "${FILESDIR}/${PN}-0.55-fcntl_h.patch"
+ "${FILESDIR}/${PN}-0.55-limits_h.patch"
+ "${FILESDIR}/${PN}-0.58b-fix_c23.patch"
+)
+
+src_prepare() {
+ default
+
+ sed -e 's:/var/adm/:/var/log/:g' \
+ -i chklastlog.c || die
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" STRIP=/bin/true sense
+}
+
+src_install() {
+ dosbin chkdirs chklastlog chkproc chkrootkit chkwtmp chkutmp ifpromisc strings-static
+ dodoc ACKNOWLEDGMENTS README*
+
+ if use cron ; then
+ exeinto /etc/cron.weekly
+ newexe "${FILESDIR}"/${PN}.cron ${PN}
+ fi
+
+ systemd_dounit "${FILESDIR}/${PN}.timer" "${FILESDIR}/${PN}.service"
+}
+
+pkg_postinst() {
+ if use cron ; then
+ elog
+ elog "Edit ${EROOT}/etc/cron.weekly/chkrootkit to activate chkrootkit!"
+ elog
+ fi
+
+ if systemd_is_booted || has_version sys-apps/systemd ; then
+ elog
+ elog "To enable the systemd timer, run the following command:"
+ elog " systemctl enable --now chkrootkit.timer"
+ elog
+ fi
+
+ elog
+ elog "Some applications, such as portsentry, will cause chkrootkit"
+ elog "to produce false positives. Read the chkrootkit FAQ at"
+ elog "http://www.chkrootkit.org/ for more information."
+ elog
+}
diff --git a/app-forensics/chkrootkit/chkrootkit-0.59.ebuild b/app-forensics/chkrootkit/chkrootkit-0.59.ebuild
new file mode 100644
index 000000000000..6c72e6a0829a
--- /dev/null
+++ b/app-forensics/chkrootkit/chkrootkit-0.59.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd toolchain-funcs
+
+GENTOO_PATCH="${P}-gentoo.patch"
+
+DESCRIPTION="Tool to locally check for signs of a rootkit"
+HOMEPAGE="https://www.chkrootkit.org/"
+SRC_URI="ftp://ftp.chkrootkit.org/pub/seg/pac/${P}.tar.gz
+ https://md11.it.cx/download/${PN}/${GENTOO_PATCH}.bz2"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="+cron selinux"
+
+RDEPEND="
+ cron? ( virtual/cron )
+ selinux? ( sec-policy/selinux-chkrootkit )
+"
+
+PATCHES=(
+ "${WORKDIR}/${P}-gentoo.patch"
+ "${FILESDIR}/${PN}-0.55-fcntl_h.patch"
+ "${FILESDIR}/${PN}-0.55-limits_h.patch"
+)
+
+src_prepare() {
+ default
+
+ sed -e 's:/var/adm/:/var/log/:g' \
+ -i chklastlog.c || die
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" STRIP=/bin/true sense
+}
+
+src_install() {
+ dosbin chkdirs chklastlog chkproc chkrootkit chkwtmp chkutmp ifpromisc strings-static
+ dodoc ACKNOWLEDGMENTS README*
+
+ if use cron ; then
+ exeinto /etc/cron.weekly
+ newexe "${FILESDIR}"/${PN}.cron ${PN}
+ fi
+
+ systemd_dounit "${FILESDIR}/${PN}.timer" "${FILESDIR}/${PN}.service"
+}
+
+pkg_postinst() {
+ if use cron ; then
+ elog
+ elog "Edit ${EROOT}/etc/cron.weekly/chkrootkit to activate chkrootkit!"
+ elog
+ fi
+
+ if systemd_is_booted || has_version sys-apps/systemd ; then
+ elog
+ elog "To enable the systemd timer, run the following command:"
+ elog " systemctl enable --now chkrootkit.timer"
+ elog
+ fi
+
+ elog
+ elog "Some applications, such as portsentry, will cause chkrootkit"
+ elog "to produce false positives. Read the chkrootkit FAQ at"
+ elog "http://www.chkrootkit.org/ for more information."
+ elog
+}
diff --git a/app-forensics/chkrootkit/files/chkrootkit-0.55-fcntl_h.patch b/app-forensics/chkrootkit/files/chkrootkit-0.55-fcntl_h.patch
new file mode 100644
index 000000000000..26ab42c0e437
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit-0.55-fcntl_h.patch
@@ -0,0 +1,30 @@
+--- a/chklastlog.c
++++ b/chklastlog.c
+@@ -41,6 +41,7 @@ int main () { return 0; }
+ #include <stdlib.h>
+ #endif
+ #include <sys/stat.h>
++#include <fcntl.h>
+ #include <unistd.h>
+ #include <string.h>
+ #include <signal.h>
+--- a/chkproc.c
++++ b/chkproc.c
+@@ -62,6 +62,7 @@ int main (){ return 0; }
+ #include <string.h>
+ #include <errno.h>
+ #include <sys/types.h>
++#include <fcntl.h>
+ #include <dirent.h>
+ #include <ctype.h>
+ #include <stdlib.h>
+--- a/chkwtmp.c
++++ b/chkwtmp.c
+@@ -25,6 +25,7 @@ int main () { return 0; }
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
++#include <fcntl.h>
+ #include <string.h>
+ #include <utmp.h>
+ #include <time.h>
diff --git a/app-forensics/chkrootkit/files/chkrootkit-0.55-limits_h.patch b/app-forensics/chkrootkit/files/chkrootkit-0.55-limits_h.patch
new file mode 100644
index 000000000000..8046e9488992
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit-0.55-limits_h.patch
@@ -0,0 +1,10 @@
+--- a/chkdirs.c
++++ b/chkdirs.c
+@@ -33,6 +33,7 @@
+ #include <sys/syslimits.h>
+ #endif
+
++#include <limits.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
diff --git a/app-forensics/chkrootkit/files/chkrootkit-0.58b-fix_c23.patch b/app-forensics/chkrootkit/files/chkrootkit-0.58b-fix_c23.patch
new file mode 100644
index 000000000000..9b3cac5bb4ed
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit-0.58b-fix_c23.patch
@@ -0,0 +1,35 @@
+fix c23, see https://bugs.gentoo.org/943851
+https://src.fedoraproject.org/rpms/chkrootkit/raw/rawhide/f/chkrootkit-0.57-sighandler-type.patch + remove old style definition
+--- a/chklastlog.c
++++ b/chklastlog.c
+@@ -77,7 +77,7 @@
+ long total_wtmp_bytes_read=0;
+ size_t wtmp_file_size;
+ uid_t *uid;
+-void read_status();
++void read_status(int signum);
+
+ struct s_localpwd {
+ int numentries;
+@@ -213,7 +213,7 @@
+ }
+ #endif
+
+-void read_status() {
++void read_status(int signum) {
+ double remaining_time;
+ static long last_total_bytes_read=0;
+ int diff;
+--- a/chkwtmp.c
++++ b/chkwtmp.c
+@@ -43,9 +43,7 @@ int main () { return 0; }
+ #endif
+ #endif
+
+-void printit(counter, start, end)
+-int counter;
+-long start,end;
++void printit(int counter, long start, long end)
+ {
+ char buffer[30];
+
diff --git a/app-forensics/chkrootkit/files/chkrootkit.cron b/app-forensics/chkrootkit/files/chkrootkit.cron
new file mode 100644
index 000000000000..9f7eb17b13b1
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit.cron
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# uncomment this to make it work
+#
+
+#exec /usr/sbin/chkrootkit -q
diff --git a/app-forensics/chkrootkit/files/chkrootkit.service b/app-forensics/chkrootkit/files/chkrootkit.service
new file mode 100644
index 000000000000..a4de628cae4a
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=local check for signs of a rootkit
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/chkrootkit -q
+SyslogIdentifier=chkrootkit
diff --git a/app-forensics/chkrootkit/files/chkrootkit.timer b/app-forensics/chkrootkit/files/chkrootkit.timer
new file mode 100644
index 000000000000..0a6c0e5f5c4a
--- /dev/null
+++ b/app-forensics/chkrootkit/files/chkrootkit.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Periodic check for signs of a rootkit
+
+[Timer]
+# Run on Sunday at 3:20am, to avoid running afoul of DST changes
+OnCalendar=Sun *-*-* 03:20:00
+RandomizedDelaySec=120
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/app-forensics/chkrootkit/metadata.xml b/app-forensics/chkrootkit/metadata.xml
new file mode 100644
index 000000000000..51ec23820801
--- /dev/null
+++ b/app-forensics/chkrootkit/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>martin.dummer@gmx.net</email>
+ <name>Martin Dummer</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="cron">Install cron script for weekly rootkit scans</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/cmospwd/Manifest b/app-forensics/cmospwd/Manifest
new file mode 100644
index 000000000000..ac2101c39ca6
--- /dev/null
+++ b/app-forensics/cmospwd/Manifest
@@ -0,0 +1 @@
+DIST cmospwd-5.1.tar.bz2 36792 BLAKE2B 763bf04af7591843190570d7084e16c2a4490319bc4a3aba9b4a32e440c66ee981f8d90749dca9df69f963294a29500da4641b51e74c7bb6f0f0e4f23a165d63 SHA512 eb76bbab2e686b54421556c5228b90a35c2883d59b31815ab04494df8e2d03e7193abdd83c4a7fa5915abdff1f189eb69bd29fc02ea9d84565ea8767e2c455a8
diff --git a/app-forensics/cmospwd/cmospwd-5.1-r1.ebuild b/app-forensics/cmospwd/cmospwd-5.1-r1.ebuild
new file mode 100644
index 000000000000..c982da0f0866
--- /dev/null
+++ b/app-forensics/cmospwd/cmospwd-5.1-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="CmosPwd decrypts password stored in cmos used to access BIOS SETUP"
+HOMEPAGE="https://www.cgsecurity.org/wiki/CmosPwd"
+SRC_URI="https://www.cgsecurity.org/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+src_compile() {
+ cd src || die
+ $(tc-getCC) ${CFLAGS} ${LDFLAGS} cmospwd.c -o cmospwd || die
+}
+
+src_install() {
+ dosbin src/cmospwd
+ dodoc cmospwd.txt
+}
diff --git a/app-forensics/cmospwd/metadata.xml b/app-forensics/cmospwd/metadata.xml
new file mode 100644
index 000000000000..ba43f3179f0e
--- /dev/null
+++ b/app-forensics/cmospwd/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <longdescription>
+ CmosPwd decrypts password stored in cmos used to access BIOS SETUP.
+
+ Works with the following BIOSes
+ - ACER/IBM BIOS
+ - AMI BIOS
+ - AMI WinBIOS 2.5
+ - Award 4.5x/4.6x/6.0
+ - Compaq (1992)
+ - Compaq (New version)
+ - IBM (PS/2, Activa, Thinkpad)
+ - Packard Bell
+ - Phoenix 1.00.09.AC0 (1994), a486 1.03, 1.04, 1.10 A03, 4.05 rev 1.02.943, 4.06 rev 1.13.1107
+ - Phoenix 4 release 6 (User)
+ - Gateway Solo - Phoenix 4.0 release 6
+ - Toshiba
+ - Zenith AMI
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/dfxml/Manifest b/app-forensics/dfxml/Manifest
new file mode 100644
index 000000000000..bc3893f8c855
--- /dev/null
+++ b/app-forensics/dfxml/Manifest
@@ -0,0 +1 @@
+DIST dfxml-20170921.tar.gz 163616 BLAKE2B 17214d15596a136efb2afc7246ee0f5696620b5aac7c2d78e37764f51487ff816de5a7c0f59e7484d358a8cd8eab34841716970cd859f0ce868ac29c8532754c SHA512 0885947aaf8efe639c13324413ef0cca49750027b48b434f226fb9fbfba494e84e245da879dc0d77b46bddc27798f7f5df12590fce47b096683034bbc61280e1
diff --git a/app-forensics/dfxml/dfxml-20170921-r2.ebuild b/app-forensics/dfxml/dfxml-20170921-r2.ebuild
new file mode 100644
index 000000000000..2cd2be159d72
--- /dev/null
+++ b/app-forensics/dfxml/dfxml-20170921-r2.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Digital Forensics XML"
+HOMEPAGE="https://github.com/simsong/dfxml"
+SRC_URI="https://api.github.com/repos/simsong/${PN}/tarball/7d11eaa7da8d31f588ce8aecb4b4f5e7e8169ba6 -> ${P}.tar.gz"
+S="${WORKDIR}/${P}/src"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="dev-libs/expat:="
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ default
+ mv simsong-dfxml-* ${P} || die
+}
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/app-forensics/dfxml/metadata.xml b/app-forensics/dfxml/metadata.xml
new file mode 100644
index 000000000000..011d298371ee
--- /dev/null
+++ b/app-forensics/dfxml/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>netmon@gentoo.org</email>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/examiner/Manifest b/app-forensics/examiner/Manifest
new file mode 100644
index 000000000000..87d13e95f8b2
--- /dev/null
+++ b/app-forensics/examiner/Manifest
@@ -0,0 +1 @@
+DIST examiner-0.5.tar.gz 34286 BLAKE2B e3dff787385896379bef21101797ae8f95ef060d2533ef5582d77fa4624984048986785debc894423dd8a2b81d3130870df0cf69f581fe3a8b30b2dccb2a78df SHA512 d10866f654e19e1c69e28488e39828026af65201fadb56cbed01a7fbab51069fe93476c6108927d042322ac8d15bb249f911acc412aad94985b4030c6c7e6d6b
diff --git a/app-forensics/examiner/examiner-0.5-r3.ebuild b/app-forensics/examiner/examiner-0.5-r3.ebuild
new file mode 100644
index 000000000000..1e4125c652e4
--- /dev/null
+++ b/app-forensics/examiner/examiner-0.5-r3.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Utilizes the objdump command to disassemble and comment foreign binaries"
+HOMEPAGE="http://www.academicunderground.org/examiner/"
+SRC_URI="http://www.academicunderground.org/examiner/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+
+RDEPEND="dev-lang/perl"
+
+src_prepare() {
+ default
+ # Do not install docs through Makefile wrt bug #241256
+ sed -i -e '/$(DOC)/d' Makefile || die 'sed failed'
+ eapply "${FILESDIR}"/${P}-perl.patch
+}
+
+src_compile() { :; }
+
+src_install() {
+ dodir /usr/bin /usr/share/${PN} /usr/share/man/man1
+
+ emake \
+ MAN="${D}/usr/share/man/man1" \
+ BIN="${D}/usr/bin" \
+ SHARE="${D}/usr/share/examiner" \
+ install
+
+ dodoc docs/{README*,BUGS,CHANGELOG,TODO,TUTORIAL}
+ dodoc -r utils
+}
diff --git a/app-forensics/examiner/files/examiner-0.5-perl.patch b/app-forensics/examiner/files/examiner-0.5-perl.patch
new file mode 100644
index 000000000000..e9e838692539
--- /dev/null
+++ b/app-forensics/examiner/files/examiner-0.5-perl.patch
@@ -0,0 +1,38 @@
+--- a/os/linux/examiner_hashes.pl.orig 2005-05-22 10:39:56.000000000 +1000
++++ b/os/linux/examiner_hashes.pl 2005-05-22 10:40:11.000000000 +1000
+@@ -1,6 +1,6 @@
+ $loaded_library=1;
+
+-syscalls = (
++$syscalls = (
+ 1 => "exit",
+ 2 => "fork",
+ 3 => "read",
+@@ -240,7 +240,7 @@
+ 237 => "fremovexattr",
+ );
+
+-socketcall = (
++$socketcall = (
+ 1 => "SOCKET",
+ 2 => "BIND",
+ 3 => "CONNECT",
+--- a/os/bsd/examiner_hashes.pl.orig 2005-05-22 10:45:39.000000000 +1000
++++ b/os/bsd/examiner_hashes.pl 2005-05-22 10:45:58.000000000 +1000
+@@ -1,6 +1,6 @@
+ $loaded_library=1;
+
+-syscalls = (
++$syscalls = (
+ 1 => "exit",
+ 2 => "fork",
+ 3 => "read",
+@@ -186,7 +186,7 @@
+ 281 => "MAXSYSCALL",
+ );
+
+-socketcall = (
++$socketcall = (
+ 1 => "SOCKET",
+ 2 => "BIND",
+ 3 => "CONNECT",
diff --git a/app-forensics/examiner/metadata.xml b/app-forensics/examiner/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/examiner/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/foremost/Manifest b/app-forensics/foremost/Manifest
new file mode 100644
index 000000000000..96062d4cef62
--- /dev/null
+++ b/app-forensics/foremost/Manifest
@@ -0,0 +1 @@
+DIST foremost-1.5.7.tar.gz 52352 BLAKE2B 5642c1afd86aab0a2f90986c3b030d37b37700c5d0e4b04e4f4a2004d69745280fabd4086a72c33b9eab05b57d125d6b11105c9e11b0112e30077f101eeab7ac SHA512 8827c29d52496783be26374f3943eb26a154d842f34e50fb489f87b3a5045bf85f1e44d7d8d8b12b2355ba3fe4b06a0db979cc22c0f431593c5976001eb931ab
diff --git a/app-forensics/foremost/files/foremost-1.4-config-location.patch b/app-forensics/foremost/files/foremost-1.4-config-location.patch
new file mode 100644
index 000000000000..95372e1af9c0
--- /dev/null
+++ b/app-forensics/foremost/files/foremost-1.4-config-location.patch
@@ -0,0 +1,12 @@
+diff -uNr foremost-1.4.orig/config.c foremost-1.4/config.c
+--- foremost-1.4.orig/config.c 2006-08-31 17:50:47.000000000 +0100
++++ foremost-1.4/config.c 2006-08-31 17:51:09.000000000 +0100
+@@ -288,7 +288,7 @@
+ #ifdef __WIN32
+ set_config_file(s, "/Program Files/foremost/foremost.conf");
+ #else
+- set_config_file(s, "/usr/local/etc/foremost.conf");
++ set_config_file(s, "/etc/foremost.conf");
+ #endif
+ if ((f = fopen(get_config_file(s), "r")) == NULL)
+ {
diff --git a/app-forensics/foremost/files/foremost-1.5.7-fno-common.patch b/app-forensics/foremost/files/foremost-1.5.7-fno-common.patch
new file mode 100644
index 000000000000..8506f59cf95a
--- /dev/null
+++ b/app-forensics/foremost/files/foremost-1.5.7-fno-common.patch
@@ -0,0 +1,99 @@
+diff -up foremost-1.5.7/api.c.me foremost-1.5.7/api.c
+--- foremost-1.5.7/api.c.me 2020-02-06 14:15:48.218200745 +0100
++++ foremost-1.5.7/api.c 2020-02-06 14:16:42.624853860 +0100
+@@ -20,6 +20,7 @@ int currFATblk;
+ int highblk = 0;
+ int block_list[OUR_BLK_SIZE / sizeof(int)];
+ extern int errno;
++struct DIRECTORY *dirlist, *dl;
+
+ /*Inititialize those globals used by extract_ole*/
+ void init_ole()
+diff -up foremost-1.5.7/extract.c.me foremost-1.5.7/extract.c
+--- foremost-1.5.7/extract.c.me 2020-02-06 14:10:30.446386101 +0100
++++ foremost-1.5.7/extract.c 2020-02-06 14:15:14.736798823 +0100
+@@ -25,6 +25,7 @@ extern char *extract_name;
+ extern int extract;
+ extern int FATblk;
+ extern int highblk;
++extern struct DIRECTORY *dirlist, *dl;
+
+ /********************************************************************************
+ *Function: extract_zip
+diff -up foremost-1.5.7/main.h.me foremost-1.5.7/main.h
+--- foremost-1.5.7/main.h.me 2020-02-06 13:48:46.923922983 +0100
++++ foremost-1.5.7/main.h 2020-02-06 13:50:08.001849830 +0100
+@@ -292,7 +292,7 @@ char *__progname;
+ /* -----------------------------------------------------------------
+ State Variable and Global Variables
+ ----------------------------------------------------------------- */
+-char wildcard;
++extern char wildcard;
+ typedef struct f_state
+ {
+ off_t mode;
+@@ -344,7 +344,7 @@ typedef struct s_spec
+ int written; /*used for -a mode*/
+ }s_spec;
+
+-s_spec search_spec[50]; /*ARRAY OF BUILTIN SEARCH TYPES*/
++extern s_spec search_spec[50]; /*ARRAY OF BUILTIN SEARCH TYPES*/
+
+ typedef struct f_info {
+ char *file_name;
+@@ -367,7 +367,7 @@ typedef struct f_info {
+ } f_info;
+
+ /* Set if the user hits ctrl-c */
+-int signal_caught;
++extern int signal_caught;
+
+ /* -----------------------------------------------------------------
+ Function definitions
+@@ -433,7 +433,7 @@ off_t find_file_size(FILE *f);
+ char *human_readable(off_t size, char *buffer);
+ char *units(unsigned int c);
+ unsigned int chop(char *buf);
+-void print_search_specs(f_state *s);
++extern void print_search_specs(f_state *s);
+ int memwildcardcmp(const void *s1, const void *s2,size_t n,int caseSensitive);
+ int charactersMatch(char a, char b, int caseSensitive);
+ void printx(unsigned char* buf,int start, int end);
+diff -up foremost-1.5.7/ole.h.me foremost-1.5.7/ole.h
+--- foremost-1.5.7/ole.h.me 2020-02-06 14:08:16.524783353 +0100
++++ foremost-1.5.7/ole.h 2020-02-06 14:10:02.954056080 +0100
+@@ -84,8 +84,8 @@ struct DIRECTORY
+ int s2;
+ int d1;
+ int d2;
+-}
+-*dirlist, *dl;
++};
++
+
+ int get_dir_block(unsigned char *fd, int blknum, int buffersize);
+ int get_dir_info(unsigned char *src);
+diff -up foremost-1.5.7/state.c.me foremost-1.5.7/state.c
+--- foremost-1.5.7/state.c.me 2020-02-06 14:06:44.514684887 +0100
++++ foremost-1.5.7/state.c 2020-02-06 14:08:03.329625827 +0100
+@@ -2,6 +2,9 @@
+
+ #include "main.h"
+
++s_spec search_spec[50];
++char wildcard;
++
+ int initialize_state (f_state * s, int argc, char **argv)
+ {
+ char **argv_copy = argv;
+diff -up foremost-1.5.7/main.c.me foremost-1.5.7/main.c
+--- foremost-1.5.7/main.c.me 2020-02-06 14:20:09.918342282 +0100
++++ foremost-1.5.7/main.c 2020-02-06 14:20:42.531733786 +0100
+@@ -15,6 +15,7 @@
+ *
+ */
+ #include "main.h"
++int signal_caught;
+
+ #ifdef __WIN32
+
diff --git a/app-forensics/foremost/files/foremost-1.5.7-format-security.patch b/app-forensics/foremost/files/foremost-1.5.7-format-security.patch
new file mode 100644
index 000000000000..32d1a4d3c7f6
--- /dev/null
+++ b/app-forensics/foremost/files/foremost-1.5.7-format-security.patch
@@ -0,0 +1,22 @@
+diff --git a/extract.c b/extract.c
+index 30bdf54..9639117 100755
+--- a/extract.c
++++ b/extract.c
+@@ -2110,7 +2110,6 @@ unsigned char *extract_exe(f_state *s, u_int64_t c_offset, unsigned char *founda
+ int i = 0;
+ time_t compile_time = 0;
+ struct tm *ret_time;
+- char comment[32];
+ char ascii_time[32];
+
+ if (buflen < 100)
+@@ -2145,8 +2144,7 @@ unsigned char *extract_exe(f_state *s, u_int64_t c_offset, unsigned char *founda
+ ret_time->tm_sec);
+ chop(ascii_time);
+
+- sprintf(comment, ascii_time);
+- strcat(needle->comment, comment);
++ strcat(needle->comment, ascii_time);
+ exe_char = htos(&foundat[22], FOREMOST_LITTLE_ENDIAN);
+ if (exe_char & 0x2000)
+ {
diff --git a/app-forensics/foremost/files/foremost-1.5.7-musl.patch b/app-forensics/foremost/files/foremost-1.5.7-musl.patch
new file mode 100644
index 000000000000..18bca055c584
--- /dev/null
+++ b/app-forensics/foremost/files/foremost-1.5.7-musl.patch
@@ -0,0 +1,33 @@
+Index: foremost-1.5.7/main.c
+===================================================================
+--- foremost-1.5.7.orig/main.c
++++ foremost-1.5.7/main.c
+@@ -232,9 +232,7 @@ int main(int argc, char **argv)
+ char **temp = argv;
+ DIR* dir;
+
+-#ifndef __GLIBC__
+- __progname = basename(argv[0]);
+-#endif
++ char * __progname = basename(argv[0]);
+
+ /*Initialize the global state struct*/
+ if (initialize_state(s, argc, argv))
+Index: foremost-1.5.7/main.h
+===================================================================
+--- foremost-1.5.7.orig/main.h
++++ foremost-1.5.7/main.h
+@@ -187,12 +187,8 @@ int getopt(int argc, char *const argv[],
+ #endif /* ifdef _WIN32 */
+
+
+-/* On non-glibc systems we have to manually set the __progname variable */
+-#ifdef __GLIBC__
++/* On non-GNU systems we have to manually set the __progname variable */
+ extern char *__progname;
+-#else
+-char *__progname;
+-#endif /* ifdef __GLIBC__ */
+
+ /* -----------------------------------------------------------------
+ Program Defaults
diff --git a/app-forensics/foremost/files/foremost-1.5.7-set-but-unused.patch b/app-forensics/foremost/files/foremost-1.5.7-set-but-unused.patch
new file mode 100644
index 000000000000..59b52c68615d
--- /dev/null
+++ b/app-forensics/foremost/files/foremost-1.5.7-set-but-unused.patch
@@ -0,0 +1,230 @@
+diff --git a/api.c b/api.c
+index e3ee339..67463a6 100755
+--- a/api.c
++++ b/api.c
+@@ -478,7 +478,7 @@ int dump_dirent(int which_one)
+ {
+ int i;
+ char *p;
+- short unknown;
++ // short unknown;
+ struct OLE_DIR *dir;
+
+ dir = (struct OLE_DIR *) &buffer[which_one * sizeof(struct OLE_DIR)];
+@@ -493,7 +493,7 @@ int dump_dirent(int which_one)
+ p = dir->name;
+ if (*p < ' ')
+ {
+- unknown = *((short *)p);
++ //unknown = *((short *)p);
+
+ //fprintf (stderr, "%04x\t", unknown);
+ p += 2; /* step over unknown short */
+diff --git a/engine.c b/engine.c
+index 85add5f..4a1ef13 100755
+--- a/engine.c
++++ b/engine.c
+@@ -316,7 +316,6 @@ int search_chunk(f_state *s, unsigned char *buf, f_info *i, u_int64_t chunk_size
+ //u_int64_t buf_off = 0;
+
+ unsigned char *foundat = buf;
+- unsigned char *current_pos = NULL;
+ unsigned char *header_pos = NULL;
+ unsigned char *newbuf = NULL;
+ unsigned char *ind_ptr = NULL;
+@@ -461,7 +460,6 @@ int search_chunk(f_state *s, unsigned char *buf, f_info *i, u_int64_t chunk_size
+ }
+
+ c_offset = (foundat - buf);
+- current_pos = foundat;
+
+ /*Now lets analyze the file and see if we can determine its size*/
+
+@@ -511,12 +509,12 @@ int search_chunk(f_state *s, unsigned char *buf, f_info *i, u_int64_t chunk_size
+ newbuf = read_from_disk(c_offset + f_offset, i, needle->max_len);
+ if (newbuf == NULL)
+ break;
+- current_pos = extract_file(s,
+- c_offset,
+- newbuf,
+- needle->max_len,
+- needle,
+- f_offset);
++ extract_file(s,
++ c_offset,
++ newbuf,
++ needle->max_len,
++ needle,
++ f_offset);
+
+ /*Lets put the fp back*/
+ fseeko(i->handle, saveme, SEEK_SET);
+diff --git a/extract.c b/extract.c
+index 9639117..4fecde5 100755
+--- a/extract.c
++++ b/extract.c
+@@ -553,7 +553,6 @@ unsigned char *extract_htm(f_state *s, u_int64_t c_offset, unsigned char *founda
+ {
+ unsigned char *buf = foundat;
+ unsigned char *extractbuf = NULL;
+- unsigned char *currentpos = NULL;
+
+ int bytes_to_search = 0;
+ int i = 0;
+@@ -582,7 +581,6 @@ unsigned char *extract_htm(f_state *s, u_int64_t c_offset, unsigned char *founda
+ }
+
+ /*Store the current position and search for the HTML> tag*/
+- currentpos = foundat;
+ foundat = bm_search(needle->footer,
+ needle->footer_len,
+ foundat,
+@@ -1146,15 +1144,15 @@ unsigned char *extract_mov(f_state *s, u_int64_t c_offset, unsigned char *founda
+ unsigned char *extract_wmv(f_state *s, u_int64_t c_offset, unsigned char *foundat, u_int64_t buflen,
+ s_spec *needle, u_int64_t f_offset)
+ {
+-
+- unsigned char *currentpos = NULL;
++#ifdef DEBUG
++ u_int64_t fileObjHeaderSize = 0;
++#endif
+ unsigned char *header = foundat;
+ unsigned char *extractbuf = NULL;
+ unsigned char *buf = foundat;
+ unsigned int size = 0;
+ u_int64_t file_size = 0;
+ u_int64_t headerSize = 0;
+- u_int64_t fileObjHeaderSize = 0;
+ int numberofHeaderObjects = 0;
+ int reserved[2];
+ int bytes_to_search = 0;
+@@ -1184,7 +1182,6 @@ unsigned char *extract_wmv(f_state *s, u_int64_t c_offset, unsigned char *founda
+ return foundat;
+ }
+
+- currentpos = foundat;
+ if (buflen - (foundat - buf) >= needle->max_len)
+ bytes_to_search = needle->max_len;
+ else
+@@ -1201,7 +1198,9 @@ unsigned char *extract_wmv(f_state *s, u_int64_t c_offset, unsigned char *founda
+ if (foundat)
+ {
+ foundat += 16; /*jump to the headersize*/
++#ifdef DEBUG
+ fileObjHeaderSize = htoll(foundat, FOREMOST_LITTLE_ENDIAN);
++#endif
+ //printx(foundat,0,8);
+ foundat += 24; //Jump to the file size obj
+ size = htoi(foundat, FOREMOST_LITTLE_ENDIAN);
+@@ -1401,7 +1400,6 @@ unsigned char *extract_gif(f_state *s, u_int64_t c_offset, unsigned char *founda
+ s_spec *needle, u_int64_t f_offset)
+ {
+ unsigned char *buf = foundat;
+- unsigned char *currentpos = foundat;
+ unsigned char *extractbuf = NULL;
+ int bytes_to_search = 0;
+ unsigned short width = 0;
+@@ -1420,7 +1418,6 @@ unsigned char *extract_gif(f_state *s, u_int64_t c_offset, unsigned char *founda
+ sprintf(comment, " (%d x %d)", width, height);
+ strcat(needle->comment, comment);
+
+- currentpos = foundat;
+ if (buflen - (foundat - buf) >= needle->max_len)
+ bytes_to_search = needle->max_len;
+ else
+@@ -1821,7 +1818,6 @@ unsigned char *extract_jpeg(f_state *s, u_int64_t c_offset, unsigned char *found
+ s_spec *needle, u_int64_t f_offset)
+ {
+ unsigned char *buf = foundat;
+- unsigned char *currentpos = NULL;
+
+ unsigned char *extractbuf = NULL;
+ unsigned short headersize;
+@@ -1899,8 +1895,6 @@ unsigned char *extract_jpeg(f_state *s, u_int64_t c_offset, unsigned char *found
+ return buf + needle->header_len;
+ }
+
+- currentpos = foundat;
+-
+ //sprintf("Searching for footer\n");
+ if (buflen < (foundat - buf)) {
+ #ifdef DEBUG
+@@ -2094,19 +2088,21 @@ unsigned char *extract_exe(f_state *s, u_int64_t c_offset, unsigned char *founda
+ unsigned char *extractbuf = NULL;
+ u_int64_t file_size = 0;
+ unsigned short pe_offset = 0;
+- unsigned int SizeOfCode = 0;
+- unsigned int SizeOfInitializedData = 0;
+- unsigned int SizeOfUninitializedData = 0;
+- unsigned int rva = 0;
+ unsigned int offset = 0;
+ unsigned short sections = 0;
+- unsigned int sizeofimage = 0;
+ unsigned int raw_section_size = 0;
+- unsigned int size_of_headers = 0;
+ unsigned short dll = 0;
+ unsigned int sum = 0;
+ unsigned short exe_char = 0;
++#ifdef DEBUG
++ unsigned int SizeOfInitializedData = 0;
++ unsigned int SizeOfUninitializedData = 0;
++ unsigned int SizeOfCode = 0;
++ unsigned int rva = 0;
++ unsigned int sizeofimage = 0;
++ unsigned int size_of_headers = 0;
+ unsigned int align = 0;
++#endif
+ int i = 0;
+ time_t compile_time = 0;
+ struct tm *ret_time;
+@@ -2167,14 +2163,16 @@ unsigned char *extract_exe(f_state *s, u_int64_t c_offset, unsigned char *founda
+
+ foundat += 0x18; /*Jump to opt header should be 0x0b 0x01*/
+
++#ifdef DEBUG
+ SizeOfCode = htoi(&foundat[4], FOREMOST_LITTLE_ENDIAN);
+ SizeOfInitializedData = htoi(&foundat[8], FOREMOST_LITTLE_ENDIAN);
+ SizeOfUninitializedData = htoi(&foundat[12], FOREMOST_LITTLE_ENDIAN);
+ rva = htoi(&foundat[16], FOREMOST_LITTLE_ENDIAN);
+ align = htoi(&foundat[36], FOREMOST_LITTLE_ENDIAN);
+-
+ sizeofimage = htoi(&foundat[56], FOREMOST_LITTLE_ENDIAN);
+ size_of_headers = htoi(&foundat[60], FOREMOST_LITTLE_ENDIAN);
++#endif
++
+ foundat += 224;
+
+ /*Start of sections*/
+@@ -2193,13 +2191,13 @@ unsigned char *extract_exe(f_state *s, u_int64_t c_offset, unsigned char *founda
+ sum = offset + raw_section_size;
+ }
+
+- /*
++#ifdef DEBUG
+ printf("rva is %d sum= %d\n",rva,sum);
+ printf("soi is %d,soh is %d \n",sizeofimage,size_of_headers);
+ printf("we are off by %d\n",sum-buflen);
+ printf("soc=%d ,soidr=%d, souid=%d\n",SizeOfCode,SizeOfInitializedData,SizeOfUninitializedData);
+ printf("fs=%d ,extr=%d\n",SizeOfCode+SizeOfInitializedData,SizeOfUninitializedData);
+- */
++#endif
+ file_size = sum;
+ if (file_size < 512 || file_size > 4 * MEGABYTE)
+ {
+@@ -2267,7 +2265,6 @@ unsigned char *extract_rar(f_state *s, u_int64_t c_offset, unsigned char *founda
+ {
+ unsigned char *buf = foundat;
+ unsigned char *extractbuf = NULL;
+- u_int64_t file_size = 0;
+ unsigned short headersize = 0;
+ unsigned short flags = 0;
+ unsigned int filesize = 0;
+@@ -2424,8 +2421,6 @@ unsigned char *extract_rar(f_state *s, u_int64_t c_offset, unsigned char *founda
+
+ /*We found the EOF, write the file to disk and return*/
+ tot_file_size = (foundat - buf);
+- if (tot_file_size > buflen)
+- file_size = buflen;
+
+ extractbuf = buf;
+ write_to_disk(s, needle, tot_file_size, extractbuf, c_offset + f_offset);
diff --git a/app-forensics/foremost/foremost-1.5.7-r4.ebuild b/app-forensics/foremost/foremost-1.5.7-r4.ebuild
new file mode 100644
index 000000000000..8175620881ee
--- /dev/null
+++ b/app-forensics/foremost/foremost-1.5.7-r4.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs prefix
+
+DESCRIPTION="Console program to recover files based on their headers and footers"
+HOMEPAGE="https://foremost.sourceforge.net/"
+#SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+# starting to hate sf.net ...
+SRC_URI="https://foremost.sourceforge.net/pkg/${P}.tar.gz"
+
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="amd64 ppc x86 ~arm64-macos ~x64-macos"
+
+src_prepare() {
+ PATCHES=(
+ "${FILESDIR}/${PN}-1.4-config-location.patch"
+ "${FILESDIR}/${PN}-1.5.7-format-security.patch" # bug 521038
+ "${FILESDIR}/${PN}-1.5.7-set-but-unused.patch" # bug 706886
+ "${FILESDIR}/${PN}-1.5.7-fno-common.patch" # bug 722196
+ "${FILESDIR}/${PN}-1.5.7-musl.patch" # bug 830473
+ )
+
+ default
+ hprefixify config.c
+}
+
+src_compile() {
+ # see also bug 906187
+
+ emake \
+ RAW_FLAGS="${CFLAGS} -Wall ${LDFLAGS} -D_LARGEFILE64_SOURCE" \
+ RAW_CC="$(tc-getCC) -DVERSION=\\\"${PV}\\\"" \
+ CONF=/etc
+}
+
+src_install() {
+ dobin foremost
+ gunzip foremost.8.gz || die
+ doman foremost.8
+ insinto /etc
+ doins foremost.conf
+ dodoc README CHANGES
+}
diff --git a/app-forensics/foremost/metadata.xml b/app-forensics/foremost/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/foremost/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/galleta/Manifest b/app-forensics/galleta/Manifest
new file mode 100644
index 000000000000..9bee80790614
--- /dev/null
+++ b/app-forensics/galleta/Manifest
@@ -0,0 +1 @@
+DIST galleta_20040505_1.tar.gz 2813 BLAKE2B bbdbd2e004986f51a48c254d3ebfb795e24bf9623dc9254060fb68ddc94e365decf083c38fb8f04818db5c0634fdfde5457d05b44b59c57d9da452c3261d4384 SHA512 7c420a413371cd9d7d818941026bc6981c8a749b8d3c97a9f0fc867116f9e642a06ad2832ded6de08780ed24885c2de7e8b655400569cb7ae56844161308dc3d
diff --git a/app-forensics/galleta/files/galleta-20040505_p1-Wimplicit-function-declaration.patch b/app-forensics/galleta/files/galleta-20040505_p1-Wimplicit-function-declaration.patch
new file mode 100644
index 000000000000..396739d358fc
--- /dev/null
+++ b/app-forensics/galleta/files/galleta-20040505_p1-Wimplicit-function-declaration.patch
@@ -0,0 +1,11 @@
+--- a/galleta.c
++++ b/galleta.c
+@@ -35,6 +35,8 @@
+ #include <stdio.h>
+ #include <time.h>
+ #include <math.h>
++#include <stdlib.h>
++#include <string.h>
+
+ #define STRSIZE 1000
+
diff --git a/app-forensics/galleta/files/galleta-20040505_p1-fix-build-system.patch b/app-forensics/galleta/files/galleta-20040505_p1-fix-build-system.patch
new file mode 100644
index 000000000000..125643c894df
--- /dev/null
+++ b/app-forensics/galleta/files/galleta-20040505_p1-fix-build-system.patch
@@ -0,0 +1,12 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,6 @@
+-all: install
++LDLIBS += -lm
+
+-install: galleta.c
+- gcc -o galleta galleta.c -lm -lc;cp galleta ../bin
++all: galleta
+
+ installwin: galleta.c
+ gcc -DCYGWIN -o galleta.exe galleta.c -lm -lc;cp galleta.exe ../bin
diff --git a/app-forensics/galleta/galleta-20040505_p1-r1.ebuild b/app-forensics/galleta/galleta-20040505_p1-r1.ebuild
new file mode 100644
index 000000000000..dcb711dc235a
--- /dev/null
+++ b/app-forensics/galleta/galleta-20040505_p1-r1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+MY_P="${PN}_${PV/_p/_}"
+
+DESCRIPTION="IE Cookie Parser"
+HOMEPAGE="https://sourceforge.net/projects/odessa/"
+SRC_URI="https://downloads.sourceforge.net/odessa/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}/src"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc x86"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix-build-system.patch
+ "${FILESDIR}"/${P}-Wimplicit-function-declaration.patch
+)
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ dobin ${PN}
+ dodoc ../{CHANGES,Readme.txt}
+}
diff --git a/app-forensics/galleta/metadata.xml b/app-forensics/galleta/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/galleta/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/honggfuzz/Manifest b/app-forensics/honggfuzz/Manifest
new file mode 100644
index 000000000000..521bc1519fe1
--- /dev/null
+++ b/app-forensics/honggfuzz/Manifest
@@ -0,0 +1 @@
+DIST honggfuzz-2.6.tar.gz 65227315 BLAKE2B 527d36dd66974b74be29e3dc22e22c893d0e35654a768bfd93c6a919de82841cc1552af2b479ac0d65ce2fcfd66886ca0e43bc95db5b8187c8d13191e65de320 SHA512 cdd97b65e679652be888b966e2c010fe29af262e88d6c94b94b2e78c88258c5c53b4928fdf9e8afe54029c0742c5dfb0f6f8e8cb8157093e7f5ffdcfa5c92fd4
diff --git a/app-forensics/honggfuzz/files/honggfuzz-2.6-no-werror.patch b/app-forensics/honggfuzz/files/honggfuzz-2.6-no-werror.patch
new file mode 100644
index 000000000000..d8af6bd046f8
--- /dev/null
+++ b/app-forensics/honggfuzz/files/honggfuzz-2.6-no-werror.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -26,7 +26,7 @@
+ BIN := honggfuzz
+ HFUZZ_CC_BIN := hfuzz_cc/hfuzz-cc
+ HFUZZ_CC_SRCS := hfuzz_cc/hfuzz-cc.c
+-COMMON_CFLAGS := -std=c11 -I/usr/local/include -D_GNU_SOURCE -Wall -Wextra -Werror -Wno-format-truncation -Wno-override-init -I.
++COMMON_CFLAGS := -std=c11 -I/usr/local/include -D_GNU_SOURCE -Wall -Wextra -Wno-format-truncation -Wno-override-init -I.
+ COMMON_LDFLAGS := -pthread -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lm
+ COMMON_SRCS := $(sort $(wildcard *.c))
+ CFLAGS ?= -O3 -mtune=native -funroll-loops
diff --git a/app-forensics/honggfuzz/honggfuzz-2.6.ebuild b/app-forensics/honggfuzz/honggfuzz-2.6.ebuild
new file mode 100644
index 000000000000..234ac8b97131
--- /dev/null
+++ b/app-forensics/honggfuzz/honggfuzz-2.6.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="A general purpose fuzzer with feedback support"
+HOMEPAGE="https://honggfuzz.dev/"
+SRC_URI="https://github.com/google/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="clang"
+
+RDEPEND="
+ >=sys-libs/binutils-libs-2.29:=
+ sys-libs/libunwind:=
+ app-arch/xz-utils
+ clang? ( sys-libs/blocksruntime )
+"
+
+DEPEND="${RDEPEND}
+ elibc_musl? ( sys-libs/queue-standalone )"
+
+DOCS=(
+ CHANGELOG
+ COPYING
+ CONTRIBUTING.md
+ README.md
+)
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.6-no-werror.patch
+)
+
+pkg_pretend() {
+ if tc-is-clang; then
+ use clang || die "${P}: to use clang enable USE=clang for ${P} (bug #729256)."
+ fi
+}
+
+src_prepare() {
+ default
+ tc-export AR CC
+ export CFLAGS
+ export LDFLAGS
+}
+
+src_install() {
+ dobin ${PN}
+ dobin hfuzz_cc/hfuzz-cc
+
+ einstalldocs
+}
diff --git a/app-forensics/honggfuzz/metadata.xml b/app-forensics/honggfuzz/metadata.xml
new file mode 100644
index 000000000000..3b9a51f07010
--- /dev/null
+++ b/app-forensics/honggfuzz/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <use>
+ <flag name="clang">Enable clang support (pull <pkg>sys-libs/blocksruntime</pkg> dependency).</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/lynis/Manifest b/app-forensics/lynis/Manifest
new file mode 100644
index 000000000000..00a9032b2a8a
--- /dev/null
+++ b/app-forensics/lynis/Manifest
@@ -0,0 +1 @@
+DIST lynis-3.1.6.tar.gz 362815 BLAKE2B 54971cee772c968f6bdda974c9fb756696f6871ff3d4485d0020189ab764c84936afc4844e1b8fda52e332952feb1bcf7f6829b29873ac338c3268afa268d099 SHA512 d89ec356dc3cff4731d2bb228ee0bc3c4d0835837fa98e185ca51b5def68fbcc62808d6a3b0a0bf4898b13b3e7765313cf0461095697c68f555728d6698656f8
diff --git a/app-forensics/lynis/files/lynis.cron-new b/app-forensics/lynis/files/lynis.cron-new
new file mode 100644
index 000000000000..b5e4b0c23628
--- /dev/null
+++ b/app-forensics/lynis/files/lynis.cron-new
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/usr/sbin/lynis audit system --auditor "automated" --cronjob
diff --git a/app-forensics/lynis/lynis-3.1.6.ebuild b/app-forensics/lynis/lynis-3.1.6.ebuild
new file mode 100644
index 000000000000..b74aea68257b
--- /dev/null
+++ b/app-forensics/lynis/lynis-3.1.6.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+inherit bash-completion-r1 systemd
+
+DESCRIPTION="Security and system auditing tool"
+HOMEPAGE="https://cisofy.com/lynis/"
+SRC_URI="https://github.com/CISOfy/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+cron systemd"
+
+RDEPEND="
+ app-shells/bash
+ cron? ( !systemd? ( virtual/cron ) )"
+
+src_install() {
+ doman lynis.8
+ dodoc FAQ README
+ newdoc CHANGELOG.md CHANGELOG
+
+ # Remove the old one during the next stabilize progress
+ exeinto /etc/cron.daily
+ newexe "${FILESDIR}"/lynis.cron-new lynis
+
+ dobashcomp extras/bash_completion.d/lynis
+
+ # stricter default perms - bug 507436
+ diropts -m0700
+ insopts -m0600
+
+ insinto /usr/share/${PN}
+ doins -r db/ include/ plugins/
+
+ dosbin lynis
+
+ insinto /etc/${PN}
+ doins default.prf
+ sed -i -e 's/\/path\/to\///' "${S}/extras/systemd/${PN}.service" || die "Sed Failed!"
+ systemd_dounit "${S}/extras/systemd/${PN}.service" || die "Sed Failed!"
+ systemd_dounit "${S}/extras/systemd/${PN}.timer"
+
+ if ! use cron; then
+ ebegin "removing cron files from installation image"
+ rm -rfv "${ED}/etc/cron.daily" || die
+ eend "$?"
+ fi
+}
+
+pkg_postinst() {
+ if use cron; then
+ if systemd_is_booted || has_version sys-apps/systemd; then
+ echo
+ ewarn "Both 'cron' and 'systemd' flags are enabled."
+ ewarn "So both ${PN}.target and cron files were installed."
+ ewarn "Please don't use 2 implementations at the same time."
+ ewarn "Cronjobs are usually enabled by default via /etc/cron.* jobs"
+ ewarn "If you want to use systemd ${PN}.target timers"
+ ewarn "disable 'cron' flag and reinstall ${PN}"
+ echo
+ else
+ einfo "A cron script has been installed to ${ROOT}/etc/cron.daily/lynis."
+ fi
+ fi
+}
diff --git a/app-forensics/lynis/metadata.xml b/app-forensics/lynis/metadata.xml
new file mode 100644
index 000000000000..0cd9a7ec7bd0
--- /dev/null
+++ b/app-forensics/lynis/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mpagano@gentoo.org</email>
+ <name>Mike Pagano</name>
+ </maintainer>
+ <use>
+ <flag name="cron">Install /etc/cron.* files</flag>
+ </use>
+ <upstream>
+ <bugs-to>https://github.com/CISOfy/lynis/issues</bugs-to>
+ <changelog>https://raw.githubusercontent.com/CISOfy/lynis/refs/heads/master/CHANGELOG.md</changelog>
+ <remote-id type="cpe">cpe:/a:cisofy:lynis</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/mac-robber/Manifest b/app-forensics/mac-robber/Manifest
new file mode 100644
index 000000000000..724ddea6be76
--- /dev/null
+++ b/app-forensics/mac-robber/Manifest
@@ -0,0 +1 @@
+DIST mac-robber-1.02.tar.gz 11708 BLAKE2B d6d35be3c52b5bc93eb779ca3693c4213c57dcb4ecfb24912e92f47b3f896d948c8ccadef39f49af3c455cdff3a92adbca7e3d1e35ef0ebc885034bfa3c0743b SHA512 5330f766eb08aa766ca3f430684e0a40ecf29b7230a582c30a36bbaaa481d52c2a8519fa04e82762f09259ada9e77466c1430aebdff22615a511d519916d54a7
diff --git a/app-forensics/mac-robber/files/mac-robber-1.02-posix.patch b/app-forensics/mac-robber/files/mac-robber-1.02-posix.patch
new file mode 100644
index 000000000000..a45d4718e51b
--- /dev/null
+++ b/app-forensics/mac-robber/files/mac-robber-1.02-posix.patch
@@ -0,0 +1,19 @@
+--- a/mac-robber.c
++++ b/mac-robber.c
+@@ -45,6 +45,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <dirent.h>
++#include <limits.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -238,7 +239,7 @@
+ /* Make a buffer for the full path
+ * the 2 is for 1 NULL and 1 '/' for recursive directories
+ */
+- path_len = dir_len + MAXNAMLEN + 2;
++ path_len = dir_len + NAME_MAX + 2;
+ if (!(curpath = (char *) malloc(path_len))) {
+ printf("error allocating space for curpath\n");
+ exit(1);
diff --git a/app-forensics/mac-robber/mac-robber-1.02-r1.ebuild b/app-forensics/mac-robber/mac-robber-1.02-r1.ebuild
new file mode 100644
index 000000000000..364bc3224431
--- /dev/null
+++ b/app-forensics/mac-robber/mac-robber-1.02-r1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="mac-robber is a digital forensics and incident response tool that collects data"
+HOMEPAGE="http://www.sleuthkit.org/mac-robber/index.php"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc x86"
+
+PATCHES=( "${FILESDIR}"/${P}-posix.patch )
+
+src_prepare() {
+ default
+ # just rely on implicit rules
+ rm Makefile || die
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_compile() {
+ emake mac-robber
+}
+
+src_install() {
+ dobin mac-robber
+ einstalldocs
+}
diff --git a/app-forensics/mac-robber/metadata.xml b/app-forensics/mac-robber/metadata.xml
new file mode 100644
index 000000000000..2f02dec674d3
--- /dev/null
+++ b/app-forensics/mac-robber/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <longdescription>
+ mac-robber is a digital forensics and incident response tool that collects data from allocated files in a mounted file system.
+ The data can be used by the mactime tool in The Sleuth Kit to make a timeline of file activity. The mac-robber tool is based on
+ the grave-robber tool from TCT and is written in C instead of Perl.
+
+ mac-robber requires that the file system be mounted by the operating system, unlike the tools in The Sleuth Kit that process the
+ file system themselves. Therefore, mac-robber will not collect data from deleted files or files that have been hidden by
+ rootkits. mac-robber will also modify the Access times on directories that are mounted with write permissions.
+
+
+ "What is mac-robber good for then", you ask? mac-robber is useful when dealing with a file system that is not supported by The
+ Sleuth Kit or other forensic tools. mac-robber is very basic C and should compile on any UNIX system. Therefore, you can run
+ mac-robber on an obscure, suspect UNIX file system that has been mounted read-only on a trusted system. I have also used
+ mac-robber during investigations of common UNIX systems such as AIX.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/magicrescue/Manifest b/app-forensics/magicrescue/Manifest
new file mode 100644
index 000000000000..8c38341739eb
--- /dev/null
+++ b/app-forensics/magicrescue/Manifest
@@ -0,0 +1 @@
+DIST magicrescue-1.1.10.tar.gz 227237 BLAKE2B a1584f4e6f4b6771783c565901775e181ba2e952e780565831e5d46245a4dd4670657cec7fb57b18d7dfc09954faec410da2dfe1b35130c23d22d8a6ccf0ab07 SHA512 54fc943a1f521563a3416040eb6b140e3ef79966b615ae0223be0558b810f9202c2d1e5ba0165c43a614caf78dbce1b0992775bef39e9611d2dc290e4582c29d
diff --git a/app-forensics/magicrescue/files/magicrescue-1.1.10-fhs-paths.patch b/app-forensics/magicrescue/files/magicrescue-1.1.10-fhs-paths.patch
new file mode 100644
index 000000000000..e249f67f280d
--- /dev/null
+++ b/app-forensics/magicrescue/files/magicrescue-1.1.10-fhs-paths.patch
@@ -0,0 +1,67 @@
+https://github.com/jbj/magicrescue/commit/0426af2a23918d7064d58ac5f9a2a752eb329501
+https://bugs.gentoo.org/875383
+
+From 0426af2a23918d7064d58ac5f9a2a752eb329501 Mon Sep 17 00:00:00 2001
+From: Jonas Jensen <jbj@knef.dk>
+Date: Sun, 29 Aug 2021 20:14:33 +0200
+Subject: [PATCH] Debian's 040_fix-install.patch
+
+Description: fix and modernize install, in accordance with FHS 3.0
+Author: Joao Eriberto Mota Filho <eriberto@debian.org>
+Last-Update: 2020-04-06
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -56,32 +56,32 @@ docs-clean:
+ maintainer-clean: distclean docs-clean
+
+ install: all
+- mkdir -p $(INSTALLDIR)/share/magicrescue/tools \
++ mkdir -p $(INSTALLDIR)/libexec/magicrescue/tools \
+ $(INSTALLDIR)/share/magicrescue/recipes \
+- $(INSTALLDIR)/man/man1 \
++ $(INSTALLDIR)/share/man/man1 \
+ $(INSTALLDIR)/bin
+
+ cp magicrescue$(EXE) dupemap$(EXE) magicsort $(INSTALLDIR)/bin/
+ cp recipes/* $(INSTALLDIR)/share/magicrescue/recipes/
+- cp $(DOCS) $(INSTALLDIR)/man/man1
++ cp $(DOCS) $(INSTALLDIR)/share/man/man1
+
+ for f in tools/*; do \
+ if [ -x "$$f" ]; then \
+- cp -f "$$f" $(INSTALLDIR)/share/magicrescue/tools/; \
++ cp -f "$$f" $(INSTALLDIR)/libexec/magicrescue/tools/; \
+ fi; \
+ done
+- cp -f tools/laola.pl $(INSTALLDIR)/share/magicrescue/tools/
++ cp -f tools/laola.pl $(INSTALLDIR)/libexec/magicrescue/tools/
++ chmod 755 $(INSTALLDIR)/libexec/magicrescue/tools/laola.pl
+
+ uninstall:
+ rm -f $(INSTALLDIR)/bin/magicrescue$(EXE)
+ rm -f $(INSTALLDIR)/bin/dupemap$(EXE)
+ rm -f $(INSTALLDIR)/bin/magicsort
+ for f in $(DOCS); do \
+- rm -f "$(INSTALLDIR)/man/man1/`basename $$f`"; \
++ rm -f "$(INSTALLDIR)/share/man/man1/`basename $$f`"; \
+ done
+- rm -rf $(INSTALLDIR)/share/magicrescue/tools
+- rm -rf $(INSTALLDIR)/share/magicrescue/recipes
+- -rmdir $(INSTALLDIR)/share/magicrescue
++ rm -rf $(INSTALLDIR)/libexec/magicrescue/
++ rm -rf $(INSTALLDIR)/share/magicrescue/
+
+ .PHONY: all clean distclean docs-clean maintainer-clean install uninstall docs
+
+--- a/config.d/80magicrescue_defs
++++ b/config.d/80magicrescue_defs
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+
+ cat >> config.h << EOF
+-#define COMMAND_PATH "$prefix/share/magicrescue/tools"
++#define COMMAND_PATH "$prefix/libexec/magicrescue/tools"
+ #define RECIPE_PATH "$prefix/share/magicrescue/recipes"
+ #include "largefile.h"
+ EOF
+
diff --git a/app-forensics/magicrescue/files/magicrescue-1.1.10-ldflags.patch b/app-forensics/magicrescue/files/magicrescue-1.1.10-ldflags.patch
new file mode 100644
index 000000000000..773bab4ff19c
--- /dev/null
+++ b/app-forensics/magicrescue/files/magicrescue-1.1.10-ldflags.patch
@@ -0,0 +1,38 @@
+--- magicrescue-1.1.9/config.d/50dbm 2008-06-27 00:24:05.000000000 +0400
++++ magicrescue-1.1.9.new//config.d/50dbm 2012-05-13 07:56:16.000000000 +0400
+@@ -14,18 +14,14 @@
+ flag="`echo $flag|sed 's/./-l&/'`"
+ echo "trying to link with flags [$flag]" >&5
+
+- bak_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $flag"
++ LIBS="$flag"
+ if conftest_link; then
+ # we found it!
+- LDFLAGS="$bak_LDFLAGS"
+ DBM_LDFLAGS="$flag"
+ env_vars="$env_vars DBM_LDFLAGS"
+ echo "#define $dbmdef" >> config.h
+ echo "#define HAVE_NDBM" >> config.h
+ return 0
+- else
+- LDFLAGS="$bak_LDFLAGS"
+ fi
+ done
+
+Common subdirectories: a/config.d and b/config.d
+diff -u a/configure b/configure
+--- a/configure 2018-11-24 20:21:20.000000000 +0100
++++ b/configure 2019-11-12 22:13:03.744338398 +0100
+@@ -63,9 +63,9 @@
+ }
+
+ conftest_link() {
+- echo "$CC -o conftest conftest.o $LDFLAGS" >&5
++ echo "$CC -o conftest conftest.o $LDFLAGS $LIBS" >&5
+ echo >&5
+- $CC -o conftest conftest.o $LDFLAGS >&5 2>&5 \
++ $CC -o conftest conftest.o $LDFLAGS $LIBS >&5 2>&5 \
+ && [ -x conftest ] && ./conftest 2>&5
+ }
+
diff --git a/app-forensics/magicrescue/magicrescue-1.1.10-r4.ebuild b/app-forensics/magicrescue/magicrescue-1.1.10-r4.ebuild
new file mode 100644
index 000000000000..5c3b26f1aa10
--- /dev/null
+++ b/app-forensics/magicrescue/magicrescue-1.1.10-r4.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="Find deleted files in block devices"
+HOMEPAGE="https://github.com/jbj/magicrescue"
+SRC_URI="https://github.com/jbj/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+
+# - File collision with net-mail/safecat, bug #702004
+# - BDEPEND on perl for pod2man, bug #852671
+DEPEND="sys-libs/gdbm:="
+RDEPEND="${DEPEND}
+ !net-mail/safecat"
+BDEPEND="dev-lang/perl"
+
+PATCHES=(
+ "${FILESDIR}/${P}-ldflags.patch"
+ "${FILESDIR}/${P}-fhs-paths.patch"
+)
+
+src_configure() {
+ tc-export CC
+
+ # Not autotools, just looks like it sometimes
+ ./configure --prefix=/usr || die
+}
diff --git a/app-forensics/magicrescue/metadata.xml b/app-forensics/magicrescue/metadata.xml
new file mode 100644
index 000000000000..285da03c456a
--- /dev/null
+++ b/app-forensics/magicrescue/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <longdescription>
+ Magic Rescue scans a block device for file types it knows how to recover and calls an external program to extract them. It looks
+ at "magic bytes" in file contents, so it can be used both as an undelete utility and for recovering a corrupted drive or
+ partition. As long as the file data is there, it will find it.
+
+ It works on any file system, but on very fragmented file systems it can only recover the first chunk of each file. Practical
+ experience (this program was not written for fun) shows, however, that chunks of 30-50MB are not uncommon.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/memdump/Manifest b/app-forensics/memdump/Manifest
new file mode 100644
index 000000000000..daf49e69f2b1
--- /dev/null
+++ b/app-forensics/memdump/Manifest
@@ -0,0 +1 @@
+DIST memdump-1.01.tar.gz 12713 BLAKE2B 96fac28977f55e99cc31aec61761d91e83074c2e45d1e4c832dab6b7326f3361e902d02b5b59191daf81f81659adfb6209c41d51ed917c8375d03ba107446e28 SHA512 46d013f812b0a5807c7ba38d6c3940e105057ba8e64b4f45b75a0800cab212d164caf881efbc1958d5c5c239236fdcb61f6fe093886ff3e28bc0b70791aaee3e
diff --git a/app-forensics/memdump/files/memdump-1.01-linux3.patch b/app-forensics/memdump/files/memdump-1.01-linux3.patch
new file mode 100644
index 000000000000..55563c4e077a
--- /dev/null
+++ b/app-forensics/memdump/files/memdump-1.01-linux3.patch
@@ -0,0 +1,24 @@
+--- memdump-1.01.orig/makedefs
++++ memdump-1.01/makedefs
+@@ -30,9 +30,7 @@
+ SunOS.5*) DEFS="-DSUNOS5 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ RANLIB=":"
+ ;;
+- Linux.2.4*) DEFS="-DLINUX2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+- ;;
+- Linux.2*) DEFS="-DLINUX2"
++ Linux.*) DEFS="-DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ ;;
+ *) echo unsupported system: $SYSTEM.$RELEASE 1>&2; exit 1
+ ;;
+--- memdump-1.01.orig/memdump.c
++++ memdump-1.01/memdump.c
+@@ -118,7 +118,7 @@
+ #define SUPPORTED
+ #endif
+
+-#ifdef LINUX2
++#ifdef LINUX
+ #include <paths.h>
+ #define GETPAGESIZE getpagesize
+ #define SUPPORTED
diff --git a/app-forensics/memdump/memdump-1.01-r1.ebuild b/app-forensics/memdump/memdump-1.01-r1.ebuild
new file mode 100644
index 000000000000..d95964dbd548
--- /dev/null
+++ b/app-forensics/memdump/memdump-1.01-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Simple memory dumper for UNIX-Like systems"
+HOMEPAGE="http://www.porcupine.org/forensics"
+SRC_URI="http://www.porcupine.org/forensics/${P}.tar.gz"
+
+LICENSE="IBM"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+
+PATCHES=( "${FILESDIR}"/${P}-linux3.patch )
+
+src_prepare() {
+ default
+ sed -i -e 's:$(CFLAGS):\0 $(LDFLAGS):' Makefile || die
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" XFLAGS="${CFLAGS}" OPT= DEBUG=
+}
+
+src_test() {
+ if [[ ${EUID} -ne 0 ]];
+ then
+ einfo "Cannot test with FEATURES=userpriv"
+ elif [ -x /bin/wc ];
+ then
+ einfo "testing"
+ if [ "`./memdump -s 344 | wc -c`" = "344" ];
+ then
+ einfo "passed test"
+ else
+ die "failed test"
+ fi
+ fi
+}
+
+src_install() {
+ dosbin memdump
+ dodoc README
+ doman memdump.1
+}
diff --git a/app-forensics/memdump/metadata.xml b/app-forensics/memdump/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/memdump/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/metadata.xml b/app-forensics/metadata.xml
new file mode 100644
index 000000000000..763c50015647
--- /dev/null
+++ b/app-forensics/metadata.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ The app-forensics category contains software which helps detect and
+ analyse security breaches.
+ </longdescription>
+ <longdescription lang="de">
+ Die Kategorie app-forensics enthält Programme welche beim Erkennen
+ und Analysieren von Sicherheitsbrüchen helfen.
+ </longdescription>
+ <longdescription lang="es">
+ La categoría app-forensics contiene programas para ayudar a detectar
+ y analizar problemas de seguridad.
+ </longdescription>
+ <longdescription lang="ja">
+ app-forensicsカテゴリには安全保侵犯を捜し当てると取調べる
+ ソフトウェアが含まれます。
+ </longdescription>
+ <longdescription lang="nl">
+ De app-forensics categorie bevat applicaties voor het detecteren en
+ analyseren van inbreuken op de veiligheid van het systeem.
+ </longdescription>
+ <longdescription lang="vi">
+ Nhóm app-forensics chứa các phần mềm hỗ trợ dò tìm,
+ phân tích các lỗ hổng bảo mật.
+ </longdescription>
+ <longdescription lang="it">
+ La categoria app-forensics contiene programmi che aiutono a trovare
+ ed analizzare problemi di sicurezza.
+ </longdescription>
+ <longdescription lang="pt">
+ A categoria app-forensics contém programas que ajudam a detectar
+ e analisar problemas de segurança.
+ </longdescription>
+ <longdescription lang="pl">
+ Kategoria app-forensics zawiera oprogramowanie ułatwiające
+ przeprowadzanie audytu bezpieczeństwa systemu.
+ </longdescription>
+</catmetadata>
diff --git a/app-forensics/pasco/Manifest b/app-forensics/pasco/Manifest
new file mode 100644
index 000000000000..620936abc55e
--- /dev/null
+++ b/app-forensics/pasco/Manifest
@@ -0,0 +1 @@
+DIST pasco_20040505_1.tar.gz 4032 BLAKE2B 2a6520f48fbe8410b73ab01e95d14c1ff7e1f872dd8b4ab0e02a70c5880abd99d1d0418f82ea65fb19bd941bd8104d3a8e96697652cefc18e01c16f873fa3c79 SHA512 fd3c1b31618a64ea9a381c68971800a511f8c826a26ca0f554bd6c69f4992312c0c34adf7067da97ff6d7c11b7ed8a64401435fa9ceb218e165cf83a3b6083db
diff --git a/app-forensics/pasco/files/pasco-20040505_p1-Wimplicit-function-declaration.patch b/app-forensics/pasco/files/pasco-20040505_p1-Wimplicit-function-declaration.patch
new file mode 100644
index 000000000000..22acc9edd9f0
--- /dev/null
+++ b/app-forensics/pasco/files/pasco-20040505_p1-Wimplicit-function-declaration.patch
@@ -0,0 +1,10 @@
+--- a/pasco.c
++++ b/pasco.c
+@@ -36,6 +36,7 @@
+ #include <stdio.h>
+ #include <time.h>
+ #include <math.h>
++#include <string.h>
+
+ //
+ /* This is the default block size for an activity record */
diff --git a/app-forensics/pasco/files/pasco-20040505_p1-fix-build-system.patch b/app-forensics/pasco/files/pasco-20040505_p1-fix-build-system.patch
new file mode 100644
index 000000000000..63a6102c8c13
--- /dev/null
+++ b/app-forensics/pasco/files/pasco-20040505_p1-fix-build-system.patch
@@ -0,0 +1,12 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,6 @@
+-all: install
++LDLIBS += -lm
+
+-install: pasco.c
+- gcc -o pasco pasco.c -lm -lc;cp pasco ../bin
++all: pasco
+
+ installwin: pasco.c
+ gcc -DCYGWIN -o pasco.exe pasco.c -lm -lc;cp pasco.exe ../bin
diff --git a/app-forensics/pasco/metadata.xml b/app-forensics/pasco/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/pasco/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/pasco/pasco-20040505_p1-r2.ebuild b/app-forensics/pasco/pasco-20040505_p1-r2.ebuild
new file mode 100644
index 000000000000..a75dc503ae1f
--- /dev/null
+++ b/app-forensics/pasco/pasco-20040505_p1-r2.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+MY_P="${PN}_${PV/_p/_}"
+
+DESCRIPTION="IE Activity Parser"
+HOMEPAGE="https://sourceforge.net/projects/odessa/"
+SRC_URI="https://downloads.sourceforge.net/odessa/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}/src"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc x86"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix-build-system.patch
+ "${FILESDIR}"/${P}-Wimplicit-function-declaration.patch
+)
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ dobin ${PN}
+ dodoc ../{CHANGES,Readme.txt}
+}
diff --git a/app-forensics/radamsa/Manifest b/app-forensics/radamsa/Manifest
new file mode 100644
index 000000000000..34877e4c9408
--- /dev/null
+++ b/app-forensics/radamsa/Manifest
@@ -0,0 +1,2 @@
+DIST radamsa-0.7.c.gz 139939 BLAKE2B ae3e2fca777bdc672431810ec6e9a245774e3f761fb4552ae973caf3b82348c73221e9cfac023e80f161c37fb3e63ff043aac2f98cb932056c1618a842245f52 SHA512 f0b0c21034cb33182be74d8927c879a2a49cb20c992e97556bb9d76c35c8a39f1caf2042a3d001f0063b09e80705fa5d285d1d95b9f8a2dd5c62deb9a18d9bde
+DIST radamsa-v0.7.tar.bz2 49194 BLAKE2B a3e24302c67ed887373109ce3bd1b3b796c742ad50c04d83980caf7b5e92793668c9262791749653e72e15d65d7a4971d498013d3c5a8fafda9033cddc5b3e03 SHA512 ca55e499b739e4a24038b36115106dc10b6f68e3e127d3c45b0ab79676a1e6e82021be02e378bd6fd09f6df537d266ea4cf8f3528a25ed9e788548d6edc62fb5
diff --git a/app-forensics/radamsa/files/radamsa-0.7-no-which.patch b/app-forensics/radamsa/files/radamsa-0.7-no-which.patch
new file mode 100644
index 000000000000..6a6d04a9c806
--- /dev/null
+++ b/app-forensics/radamsa/files/radamsa-0.7-no-which.patch
@@ -0,0 +1,10 @@
+--- a/tests/uniq.sh
++++ b/tests/uniq.sh
+@@ -2,6 +2,6 @@
+
+ set -e
+ echo "HAL 9000" | $@ -o tmp/uniq-%n -n 100 -p od -m num
+-md5cmd=$(test -x "$(which md5)" && echo "md5 -r" || echo "md5sum")
++md5cmd=md5sum
+ test 0 = $($md5cmd tmp/uniq-* | sed -e 's/ .*//' | sort | uniq -c | grep -v " 1 " | wc -l)
+ rm tmp/uniq-*
diff --git a/app-forensics/radamsa/files/radamsa-0.7_prebuilt-c.patch b/app-forensics/radamsa/files/radamsa-0.7_prebuilt-c.patch
new file mode 100644
index 000000000000..94fad4879f91
--- /dev/null
+++ b/app-forensics/radamsa/files/radamsa-0.7_prebuilt-c.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -15,7 +15,7 @@
+ mkdir -p bin
+ $(CC) $(CFLAGS) $(LDFLAGS) -o bin/radamsa radamsa.c
+
+-bin/radamsa: radamsa.c
++bin/radamsa:
+ mkdir -p bin
+ $(CC) $(CFLAGS) $(LDFLAGS) -o bin/radamsa radamsa.c
+
diff --git a/app-forensics/radamsa/metadata.xml b/app-forensics/radamsa/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/radamsa/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/radamsa/radamsa-0.7-r1.ebuild b/app-forensics/radamsa/radamsa-0.7-r1.ebuild
new file mode 100644
index 000000000000..226d86d3a64b
--- /dev/null
+++ b/app-forensics/radamsa/radamsa-0.7-r1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+MY_P="${PN}-v${PV}"
+
+DESCRIPTION="A general-purpose fuzzer"
+HOMEPAGE="https://gitlab.com/akihe/radamsa"
+SRC_URI="
+ https://gitlab.com/akihe/${PN}/-/archive/v${PV}/${MY_P}.tar.bz2
+ https://gitlab.com/akihe/${PN}/uploads/d774a42f7893012d0a56c490a75ae12b/${P}.c.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="test? ( dev-scheme/owl-lisp )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.7_prebuilt-c.patch
+ "${FILESDIR}"/${PN}-0.7-no-which.patch
+)
+
+src_prepare() {
+ default
+
+ cp "${WORKDIR}"/${P}.c "${S}"/${PN}.c || die
+}
+
+src_compile() {
+ emake -Onone bin/radamsa CC="$(tc-getCC)" CFLAGS="${CFLAGS}"
+}
+
+src_test() {
+ ln -s "${BROOT}"/usr/bin/ol bin/ol || die
+ emake -Onone test
+}
+
+src_install() {
+ dobin bin/radamsa
+ # avoid man compression by build system
+ doman doc/radamsa.1
+
+ einstalldocs
+}
diff --git a/app-forensics/radamsa/radamsa-0.7.ebuild b/app-forensics/radamsa/radamsa-0.7.ebuild
new file mode 100644
index 000000000000..baf922c968eb
--- /dev/null
+++ b/app-forensics/radamsa/radamsa-0.7.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+MY_P="${PN}-v${PV}"
+
+DESCRIPTION="A general-purpose fuzzer"
+HOMEPAGE="https://gitlab.com/akihe/radamsa"
+SRC_URI="
+ https://gitlab.com/akihe/${PN}/-/archive/v${PV}/${MY_P}.tar.bz2
+ https://gitlab.com/akihe/${PN}/uploads/d774a42f7893012d0a56c490a75ae12b/${P}.c.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# needs an owl-lisp
+RESTRICT=test
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.7_prebuilt-c.patch
+)
+
+S="${WORKDIR}"/${MY_P}
+
+src_prepare() {
+ default
+
+ cp "${WORKDIR}"/${P}.c "${S}"/${PN}.c || die
+}
+
+src_compile() {
+ emake bin/radamsa CC="$(tc-getCC)" CFLAGS="${CFLAGS}"
+}
+
+src_install() {
+ dobin bin/radamsa
+ # avoid man compression by build system
+ doman doc/radamsa.1
+
+ einstalldocs
+}
diff --git a/app-forensics/rifiuti/Manifest b/app-forensics/rifiuti/Manifest
new file mode 100644
index 000000000000..6ef0760e0947
--- /dev/null
+++ b/app-forensics/rifiuti/Manifest
@@ -0,0 +1 @@
+DIST rifiuti_20040505_1.tar.gz 2823 BLAKE2B 786ad2b6b4f2744b960300cf7cd35e46782a3b6a56a23b6cf1157855d5df8237806cf35243409efdab6e41f6fb004f1954a9291e608152f961a4107a11c37f65 SHA512 9d7e77c3eb74b97fedd66c0cac9c1960d3de0f284fcdee81c1e523eb9898cc9758194d7913b1bd7e0bc82eae4eeed656b7b3c699bcdd536325604d17c41da6de
diff --git a/app-forensics/rifiuti/files/rifiuti-20040505_p1-Wimplicit-function-declaration.patch b/app-forensics/rifiuti/files/rifiuti-20040505_p1-Wimplicit-function-declaration.patch
new file mode 100644
index 000000000000..1ac3207a7c4f
--- /dev/null
+++ b/app-forensics/rifiuti/files/rifiuti-20040505_p1-Wimplicit-function-declaration.patch
@@ -0,0 +1,11 @@
+--- a/rifiuti.c
++++ b/rifiuti.c
+@@ -35,6 +35,8 @@
+ #include <stdio.h>
+ #include <time.h>
+ #include <math.h>
++#include <stdlib.h>
++#include <string.h>
+
+ #ifdef CYGWIN
+ ssize_t pread( int d, void *buf, size_t nbytes, off_t offset) {
diff --git a/app-forensics/rifiuti/files/rifiuti-20040505_p1-fix-build-system.patch b/app-forensics/rifiuti/files/rifiuti-20040505_p1-fix-build-system.patch
new file mode 100644
index 000000000000..a1c452047913
--- /dev/null
+++ b/app-forensics/rifiuti/files/rifiuti-20040505_p1-fix-build-system.patch
@@ -0,0 +1,12 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,6 @@
+-all: install
++LDLIBS += -lm
+
+-install: rifiuti.c
+- gcc -o rifiuti rifiuti.c -lm -lc;cp rifiuti ../bin
++all: rifiuti
+
+ installwin: rifiuti.c
+ gcc -DCYGWIN -o rifiuti.exe rifiuti.c -lm -lc;cp rifiuti.exe ../bin
diff --git a/app-forensics/rifiuti/metadata.xml b/app-forensics/rifiuti/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/rifiuti/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/rifiuti/rifiuti-20040505_p1-r1.ebuild b/app-forensics/rifiuti/rifiuti-20040505_p1-r1.ebuild
new file mode 100644
index 000000000000..e56d1acac3ef
--- /dev/null
+++ b/app-forensics/rifiuti/rifiuti-20040505_p1-r1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+MY_P="${PN}_${PV/_p/_}"
+
+DESCRIPTION="Recycle Bin Analyzer"
+HOMEPAGE="https://sourceforge.net/projects/odessa/"
+SRC_URI="https://downloads.sourceforge.net/odessa/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}/src"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc x86"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix-build-system.patch
+ "${FILESDIR}"/${P}-Wimplicit-function-declaration.patch
+)
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ dobin ${PN}
+ dodoc ../{CHANGES,Readme.txt}
+}
diff --git a/app-forensics/rkhunter/Manifest b/app-forensics/rkhunter/Manifest
new file mode 100644
index 000000000000..a181f515787e
--- /dev/null
+++ b/app-forensics/rkhunter/Manifest
@@ -0,0 +1,2 @@
+DIST rkhunter-1.4.6-grep-3.8.patch.xz 7232 BLAKE2B a4be08fbe2094f531b0b71fe30dca3e3fb54f9be566f578b4008c7139737cee8d19aca20beb1369bbd877faa270f4ea43c195042b1431eeb34817f0d9063c100 SHA512 c5d21da2fbd8bffa282c716acc2550268fd5f436791635481b79986b1fa1dc631d6551f735344ff7bebbb835748b0e3a508949fb9a45bc4f76a4650732920230
+DIST rkhunter-1.4.6.tar.gz 302137 BLAKE2B 89c61386b57f743f4205f8c826eaa8a9dc9a0d413ac47efb26b6f93d8d642f619f35b7a4c021521b662547c02a16071b8980d158cfb9e081a64870558dbaeff0 SHA512 c51a21b6b66ed1f73a19d8ce04eaba35999eefcb666acc824989c3bf53ac56d24a33ac4fec290be942e33fe24674406b371eafff73f7e697b9e03ec031b37216
diff --git a/app-forensics/rkhunter/files/rkhunter-1.4.6-conf.patch b/app-forensics/rkhunter/files/rkhunter-1.4.6-conf.patch
new file mode 100644
index 000000000000..5642436ed412
--- /dev/null
+++ b/app-forensics/rkhunter/files/rkhunter-1.4.6-conf.patch
@@ -0,0 +1,38 @@
+
+--- a/rkhunter.conf
++++ b/rkhunter.conf
+@@ -72,6 +72,7 @@
+ # to use.
+ #
+
++INSTALLDIR=/usr
+
+ #
+ # If this option is set to '1', it specifies that the mirrors file
+@@ -154,7 +155,7 @@
+ # subsequently commented out or removed, then the program will assume a
+ # default directory beneath the installation directory.
+ #
+-#TMPDIR=/var/lib/rkhunter/tmp
++TMPDIR=/var/lib/rkhunter
+
+ #
+ # This option specifies the database directory to use.
+@@ -163,7 +164,7 @@
+ # subsequently commented out or removed, then the program will assume a
+ # default directory beneath the installation directory.
+ #
+-#DBDIR=/var/lib/rkhunter/db
++DBDIR=/var/lib/rkhunter/db
+
+ #
+ # This option specifies the script directory to use.
+@@ -171,7 +172,7 @@
+ # The installer program will set the default directory. If this default is
+ # subsequently commented out or removed, then the program will not run.
+ #
+-#SCRIPTDIR=/usr/local/lib/rkhunter/scripts
++SCRIPTDIR=/usr/lib/rkhunter/scripts
+
+ #
+ # This option can be used to modify the command directory list used by rkhunter
diff --git a/app-forensics/rkhunter/files/rkhunter-1.4.6-no-insecure-web.patch b/app-forensics/rkhunter/files/rkhunter-1.4.6-no-insecure-web.patch
new file mode 100644
index 000000000000..ed3b68c669bc
--- /dev/null
+++ b/app-forensics/rkhunter/files/rkhunter-1.4.6-no-insecure-web.patch
@@ -0,0 +1,46 @@
+Disable insecure web operations (CVE-2017-7480).
+
+Bug: https://bugs.gentoo.org/623150
+
+--- a/rkhunter
++++ b/rkhunter
+@@ -19462,7 +19462,7 @@
+ #
+
+ echo $ECHOOPT ""
+- echo $ECHOOPT "Usage: rkhunter {--check | --unlock | --update | --versioncheck |"
++ echo $ECHOOPT "Usage: rkhunter {--check | --unlock |"
+ echo $ECHOOPT " --propupd [{filename | directory | package name},...] |"
+ echo $ECHOOPT " --list [{tests | {lang | languages} | rootkits | perl | propfiles}] |"
+ echo $ECHOOPT " --config-check | --version | --help} [options]"
+@@ -19518,10 +19518,8 @@
+ echo $ECHOOPT " (Default level is $SYSLOG_DFLT_PRIO)"
+ echo $ECHOOPT " --tmpdir <directory> Use the specified temporary directory"
+ echo $ECHOOPT " --unlock Unlock (remove) the lock file"
+- echo $ECHOOPT " --update Check for updates to database files"
+ echo $ECHOOPT " --vl, --verbose-logging Use verbose logging (on by default)"
+ echo $ECHOOPT " -V, --version Display the version number, then exit"
+- echo $ECHOOPT " --versioncheck Check for latest version of program"
+ echo $ECHOOPT " -x, --autox Automatically detect if X is in use"
+ echo $ECHOOPT " -X, --no-autox Do not automatically detect if X is in use"
+ echo $ECHOOPT ""
+@@ -20396,9 +20394,6 @@
+ --unlock)
+ UNLOCK=1
+ ;;
+- --update)
+- UPDATE=1
+- ;;
+ --vl | --verboselogging | --verbose-logging)
+ VERBOSE_LOGGING=1
+ ;;
+@@ -20407,9 +20402,6 @@
+ echo "${PROGRAM_blurb}"
+ exit 0
+ ;;
+- --versioncheck | --version-check)
+- VERSIONCHECK=1
+- ;;
+ -x | --autox)
+ AUTO_X_OPT=1
+ AUTO_X_DTCT=1
diff --git a/app-forensics/rkhunter/files/rkhunter-1.4.cron b/app-forensics/rkhunter/files/rkhunter-1.4.cron
new file mode 100644
index 000000000000..6c73305d3e8c
--- /dev/null
+++ b/app-forensics/rkhunter/files/rkhunter-1.4.cron
@@ -0,0 +1,134 @@
+#!/bin/bash
+# original author: Aaron Walker <ka0ttic@gentoo.org>
+
+########################## Begin Configuration ###############################
+
+# Default options - more options may be added depending on the
+# configuration variables you set below
+# --cronjob implies -c, --nocolor, --sk
+RKHUNTER_OPTS="--cronjob --summary"
+
+# Set this to 'yes' to enable ; this script does nothing otherwise
+ENABLE=no
+
+# Automatically update rkhunter's dat files prior to running?
+UPDATE=no
+
+# Set this to 'yes' if you wish the output to be mailed to you
+SEND_EMAIL=no
+
+# NOTE: the following EMAIL_* variables are only relevant if you set the
+# SEND_EMAIL variable to 'yes'
+EMAIL_SUBJECT="${HOSTNAME}: rkhunter output"
+EMAIL_RECIPIENT=root
+EMAIL_CMD="|mail -s \"${EMAIL_SUBJECT}\" ${EMAIL_RECIPIENT}"
+
+# Log rkhunter output?
+LOG=no
+
+# The default log location is /var/log/rkhunter.log. Set this variable if
+# you'd like to use an alternate location.
+#LOGFILE=""
+
+# By default, the log file created by rkhunter is world-readable (0644). If
+# you'd like to modify the permissions afterwards, set this variable. The
+# value of this variable, must be a valid chmod argument such as '0600' or
+# 'u+rw,go-rwx'. See the chmod(1) manual page for more information.
+#LOGFILE_PERMS="0600"
+
+# By default, rkhunter overwrites the previous log. Set this variable
+# to 'yes' if you'd like the log output appended to the logfile, instead
+# of overwriting it.
+SAVE_OLD_LOGS=no
+
+# Set to 1 to recieve only warnings & errors
+# Set to 2 to recieve ALL rkhunter output
+# Set to 3 to recieve rkhunter report
+VERBOSITY=3
+
+########################### End Configuration ################################
+
+# exit immediately, unless enabled
+[[ "${ENABLE}" == "yes" ]] || exit 0
+
+# debug mode? (mainly for my benefit)
+if [[ -n "${1}" ]] && [[ ${1} = "-d" ]] ; then
+ set -o verbose -o xtrace
+fi
+
+[[ -z "${LOGFILE}" ]] && LOGFILE="/var/log/rkhunter.log"
+
+# moved this out of config section since it'll
+# probably never need to be changed
+RKHUNTER_EXEC="/usr/sbin/rkhunter"
+
+# sanity check
+if [[ ! -x "${RKHUNTER_EXEC}" ]] ; then
+ echo "${RKHUNTER_EXEC} does not exist or is not executable!"
+ exit 1
+fi
+
+# we create a few tmp files, so let's at least make
+# them readable/writable by root only
+umask 0077
+
+# all output goes to this temp file
+_tmpout=$(mktemp /tmp/rkhunter.cron.XXXXXX)
+exec > ${_tmpout} 2>&1
+
+# update data files
+if [[ "${UPDATE}" == "yes" ]] ; then
+ # save the output of --update in a tmp file so that it can be mailed
+ # along with the scan output; otherwise the user will get 2 mails
+ #${RKHUNTER_EXEC} --nocolor --update
+ echo "In Gentoo, update option is disabled due to CVE-2017-7480."
+fi
+
+# formulate options string according to user configuration
+[[ "${LOG}" == "yes" ]] && \
+ RKHUNTER_OPTS="${RKHUNTER_OPTS} --createlogfile ${LOGFILE}"
+
+case "${VERBOSITY}" in
+ # warnings and errors only
+ 1) RKHUNTER_OPTS="${RKHUNTER_OPTS} --quiet" ;;
+ # default rkhunter output (no extra options)
+# 2) ;;
+ # default to option 3
+ *) ;;
+esac
+
+# save old log
+if [[ "${LOG}" == "yes" && "${SAVE_OLD_LOGS}" == "yes" ]] ; then
+ if [[ -e "${LOGFILE}" ]] ; then
+ _tmpfile=$(mktemp ${LOGFILE}.XXXXXX)
+ mv -f ${LOGFILE} ${_tmpfile}
+ echo -e "--\nrkhunter.cron commencing at: $(date)\n--" >> ${_tmpfile}
+ fi
+fi
+
+# finally, run rkhunter
+CMD="${RKHUNTER_EXEC} ${RKHUNTER_OPTS}"
+eval ${CMD}
+RV=$?
+
+# email output?
+if [[ "${SEND_EMAIL}" == "yes" ]] ; then
+ CMD="cat ${_tmpout} ${EMAIL_CMD}"
+ eval ${CMD}
+fi
+
+# remove temp file
+[[ -n "${_tmpout}" ]] && rm -f ${_tmpout}
+
+[[ "${LOG}" != "yes" ]] && exit ${RV}
+
+# from this point on, we can assume logging is enabled
+
+# append new log to old log and restore
+if [[ -n "${_tmpfile}" ]] ; then
+ cat ${LOGFILE} >> ${_tmpfile}
+ mv ${_tmpfile} ${LOGFILE}
+fi
+
+chmod ${LOGFILE_PERMS:-0644} ${LOGFILE}
+exit ${RV}
diff --git a/app-forensics/rkhunter/files/rkhunter.bash-completion b/app-forensics/rkhunter/files/rkhunter.bash-completion
new file mode 100644
index 000000000000..a28f96f510d1
--- /dev/null
+++ b/app-forensics/rkhunter/files/rkhunter.bash-completion
@@ -0,0 +1,87 @@
+# rkhunter completion
+
+_rkhunter() {
+ local cur prev opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ opts="-c --checkall --createlogfile --cronjob --display-logfile -h --help\
+ --nocolors --report-mode --report-warnings-only \
+ --skip-application-check --skip-keypress --quick --quiet --update \
+ --version --versioncheck --bindir --configfile --dbdir --rootdir \
+ --tmpdir --disable-md5-check --disable-passwd-check \
+ --scan-knownbad-files"
+
+ if [[ "${cur}" == -* ]] || [[ ${COMP_CWORD} -eq 1 ]]; then
+ COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
+ fi
+
+ case "${prev}" in
+ --createlogfile)
+ COMPREPLY=($(compgen -o filenames -A file -W "${opts/--createlogfile}" \
+ -- "${cur}"))
+ ;;
+ --display-logfile)
+ COMPREPLY=($(compgen -W "${opts/--display-logfile}" -- "${cur}"))
+ ;;
+ --*dir)
+ COMPREPLY=($(compgen -o dirnames -A directory -- "${cur}"))
+ ;;
+ --*file)
+ COMPREPLY=($(compgen -o filenames -A file -- "${cur}"))
+ ;;
+ -c|--checkall)
+ COMPREPLY=($(compgen -W "${opts/-c --checkall}" -- "${cur}"))
+ ;;
+ --cronjob)
+ COMPREPLY=($(compgen -W "${opts/--cronjob}" -- "${cur}"))
+ ;;
+ -h|--help)
+ COMPREPLY=($(compgen -W "${opts/-h --help}" -- "${cur}"))
+ ;;
+ --nocolors)
+ COMPREPLY=($(compgen -W "${opts/--nocolors}" -- "${cur}"))
+ ;;
+ --report-mode)
+ COMPREPLY=($(compgen -W "${opts/--report-mode}" -- "${cur}"))
+ ;;
+ --report-warnings-only)
+ COMPREPLY=($(compgen -W "${opts/--report-warnings-only}" -- \
+ "${cur}"))
+ ;;
+ --skip-application-check)
+ COMPREPLY=($(compgen -W "${opts/--skip-application-check}" -- \
+ "${cur}"))
+ ;;
+ --skip-keypress)
+ COMPREPLY=($(compgen -W "${opts/--skip-keypress}" -- "${cur}"))
+ ;;
+ --quick)
+ COMPREPLY=($(compgen -W "${opts/--quick}" -- "${cur}"))
+ ;;
+ --quiet)
+ COMPREPLY=($(compgen -W "${opts/--quiet}" -- "${cur}"))
+ ;;
+ --update)
+ COMPREPLY=($(compgen -W "${opts/--update}" -- "${cur}"))
+ ;;
+ --version)
+ COMPREPLY=($(compgen -W "${opts/--version}" -- "${cur}"))
+ ;;
+ --versioncheck)
+ COMPREPLY=($(compgen -W "${opts/--versioncheck}" -- "${cur}"))
+ ;;
+ --disable-md5-check)
+ COMPREPLY=($(compgen -W "${opts/--disable-md5-check}" -- "${cur}"))
+ ;;
+ --disable-passwd-check)
+ COMPREPLY=($(compgen -W "${opts/--disable-passwd-check}" -- \
+ "${cur}"))
+ ;;
+ --scan-knownbad-files)
+ COMPREPLY=($(compgen -W "${opts/--scan-knownbad-files}" -- \
+ "${cur}"))
+ ;;
+ esac
+}
+complete -F _rkhunter rkhunter
diff --git a/app-forensics/rkhunter/metadata.xml b/app-forensics/rkhunter/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/rkhunter/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/rkhunter/rkhunter-1.4.6-r2.ebuild b/app-forensics/rkhunter/rkhunter-1.4.6-r2.ebuild
new file mode 100644
index 000000000000..dc225c9b3dd8
--- /dev/null
+++ b/app-forensics/rkhunter/rkhunter-1.4.6-r2.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit bash-completion-r1
+
+DESCRIPTION="Rootkit Hunter scans for known and unknown rootkits, backdoors, and sniffers"
+HOMEPAGE="https://rkhunter.sf.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-grep-3.8.patch.xz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~mips ppc x86"
+IUSE="selinux"
+
+RDEPEND="
+ app-shells/bash
+ dev-lang/perl
+ sys-process/lsof[rpc]
+ selinux? ( sec-policy/selinux-rkhunter )
+"
+
+S="${WORKDIR}/${P}/files"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.4.6-conf.patch"
+ "${FILESDIR}/${PN}-1.4.6-no-insecure-web.patch"
+ "${WORKDIR}/${PN}-1.4.6-grep-3.8.patch"
+)
+
+src_install() {
+ # rkhunter requires to be root
+ dosbin ${PN}
+
+ insinto /etc
+ doins ${PN}.conf
+
+ exeinto /usr/lib/${PN}/scripts
+ doexe *.pl
+
+ insinto /var/lib/${PN}/db
+ doins *.dat
+
+ insinto /var/lib/${PN}/db/i18n
+ doins i18n/*
+
+ doman ${PN}.8
+ dodoc ACKNOWLEDGMENTS CHANGELOG FAQ README
+
+ exeinto /etc/cron.daily
+ newexe "${FILESDIR}/${PN}-1.4.cron" ${PN}
+
+ newbashcomp "${FILESDIR}/${PN}.bash-completion" ${PN}
+}
+
+pkg_postinst() {
+ elog "A cron script has been installed to /etc/cron.daily/rkhunter."
+ elog "To enable it, edit /etc/cron.daily/rkhunter and follow the"
+ elog "directions."
+ elog "If you want ${PN} to send mail, you will need to install"
+ elog "virtual/mailx or alter the EMAIL_CMD variable in the"
+ elog "cron script and possibly the MAIL_CMD variable in the"
+ elog "${PN}.conf file to use another mail client."
+}
diff --git a/app-forensics/scalpel/Manifest b/app-forensics/scalpel/Manifest
new file mode 100644
index 000000000000..f5dc0da44e6d
--- /dev/null
+++ b/app-forensics/scalpel/Manifest
@@ -0,0 +1 @@
+DIST scalpel-2.1_pre20210326.tar.gz 1445147 BLAKE2B f70e16d6854c6f781c2ec389b4595e25055bedc5c69b4c0713ae263d138f0bd9824641099e224cd1969688f6b0acb07c707072afe43955c8752391132eb9b84e SHA512 76811437f01125dcdb27e185ad4f82ba589461eb47638a32af4291b0b81803180e095ccf89440d6c50e35e641e9c3eed63d6ffb33715b5ebe0a3a73389c25e5f
diff --git a/app-forensics/scalpel/files/gcc-11-fix-literal-suffix.patch b/app-forensics/scalpel/files/gcc-11-fix-literal-suffix.patch
new file mode 100644
index 000000000000..55809d58e178
--- /dev/null
+++ b/app-forensics/scalpel/files/gcc-11-fix-literal-suffix.patch
@@ -0,0 +1,255 @@
+fix "invalid suffix on literal; C++11 requires a space between literal and string macro"
+
+--- a/src/dig.cpp
++++ b/src/dig.cpp
+@@ -378,10 +378,10 @@
+
+
+ if(state->skip) {
+- fprintf(state->auditFile, "\nSkipped the first %"PRIu64 "bytes of %s...\n",
++ fprintf(state->auditFile, "\nSkipped the first %" PRIu64 "bytes of %s...\n",
+ state->skip, scalpelInputGetId(state->inReader));
+ if(state->modeVerbose) {
+- fprintf(stdout, "\nSkipped the first %"PRIu64 "bytes of %s...\n",
++ fprintf(stdout, "\nSkipped the first %" PRIu64 "bytes of %s...\n",
+ state->skip, scalpelInputGetId(state->inReader));
+ }
+ }
+@@ -448,7 +448,7 @@
+ // found a header--record location in header offsets database
+ if(state->modeVerbose) {
+
+- fprintf(stdout, "A %s header was found at : %"PRIu64 "\n",
++ fprintf(stdout, "A %s header was found at : %" PRIu64 "\n",
+ currentneedle->suffix,
+ positionUseCoverageBlockmap(state, startLocation));
+
+@@ -478,7 +478,7 @@
+
+ if(state->modeVerbose) {
+ fprintf(stdout,
+- "Memory reallocation performed, total header storage = %"PRIu64 "\n",
++ "Memory reallocation performed, total header storage = %" PRIu64 "\n",
+ currentneedle->offsets.headerstorage);
+ }
+ }
+@@ -494,7 +494,7 @@
+ // found a footer--record location in footer offsets database
+ if(state->modeVerbose) {
+
+- fprintf(stdout, "A %s footer was found at : %"PRIu64 "\n",
++ fprintf(stdout, "A %s footer was found at : %" PRIu64 "\n",
+ currentneedle->suffix,
+ positionUseCoverageBlockmap(state, startLocation));
+
+@@ -524,7 +524,7 @@
+ if(state->modeVerbose) {
+
+ fprintf(stdout,
+- "Memory reallocation performed, total footer storage = %"PRIu64 "\n",
++ "Memory reallocation performed, total footer storage = %" PRIu64 "\n",
+ currentneedle->offsets.footerstorage);
+ }
+ }
+@@ -618,7 +618,7 @@
+ // found a header--record location in header offsets database
+ if(state->modeVerbose) {
+
+- fprintf(stdout, "A %s header was found at : %"PRIu64 "\n",
++ fprintf(stdout, "A %s header was found at : %" PRIu64 "\n",
+ currentneedle->suffix,
+ positionUseCoverageBlockmap(state, startLocation));
+ }
+@@ -647,7 +647,7 @@
+ if(state->modeVerbose) {
+
+ fprintf(stdout,
+- "Memory reallocation performed, total header storage = %"PRIu64 "\n",
++ "Memory reallocation performed, total header storage = %" PRIu64 "\n",
+ currentneedle->offsets.headerstorage);
+
+ }
+@@ -756,7 +756,7 @@
+ startLocation = offset + (foundat[needlenum][i] - readbuffer);
+ if(state->modeVerbose) {
+
+- fprintf(stdout, "A %s footer was found at : %"PRIu64 "\n",
++ fprintf(stdout, "A %s footer was found at : %" PRIu64 "\n",
+ currentneedle->suffix,
+ positionUseCoverageBlockmap(state, startLocation));
+ }
+@@ -784,7 +784,7 @@
+ if(state->modeVerbose) {
+
+ fprintf(stdout,
+- "Memory reallocation performed, total footer storage = %"PRIu64 "\n",
++ "Memory reallocation performed, total footer storage = %" PRIu64 "\n",
+ currentneedle->offsets.footerstorage);
+ }
+ }
+@@ -991,7 +991,7 @@
+ state->inReader)) > longestneedle - 1) {
+
+ if(state->modeVerbose) {
+- fprintf(stdout, "Read %"PRIu64 " bytes from image file.\n", bytesread);
++ fprintf(stdout, "Read %" PRIu64 " bytes from image file.\n", bytesread);
+ }
+
+ if((err = scalpelInputGetError(state->inReader))) {
+@@ -1106,7 +1106,7 @@
+
+
+ if(state->modeVerbose) {
+- fprintf(stdout, "Total file size is %"PRIu64 " bytes\n", filesize);
++ fprintf(stdout, "Total file size is %" PRIu64 " bytes\n", filesize);
+ }
+
+
+@@ -1537,7 +1537,7 @@
+ fprintf(stdout, "%s", currentneedle->endtext);
+ }
+
+- fprintf(stdout, "\" --> %"PRIu64 " files\n", currentneedle->numfilestocarve);
++ fprintf(stdout, "\" --> %" PRIu64 " files\n", currentneedle->numfilestocarve);
+
+
+ }
+@@ -1915,7 +1915,7 @@
+ (unsigned long
+ long)(ceil((double)filesize / (double)state->coverageblocksize));
+
+- fprintf(stdout, "# of blocks in coverage blockmap is %"PRIu64 ".\n",
++ fprintf(stdout, "# of blocks in coverage blockmap is %" PRIu64 ".\n",
+ state->coveragenumblocks);
+
+
+@@ -1970,7 +1970,7 @@
+ (unsigned long long)ceil((double)filesize /
+ (double)state->coverageblocksize);
+
+- fprintf(stdout, "# of blocks in coverage blockmap is %"PRIu64 ".\n",
++ fprintf(stdout, "# of blocks in coverage blockmap is %" PRIu64 ".\n",
+ state->coveragenumblocks);
+
+ fprintf(stdout, "Allocating and clearing in-core coverage bitmap.\n");
+@@ -2374,7 +2374,7 @@
+
+ if(state->modeVerbose && state->useCoverageBlockmap) {
+ fprintf(stdout,
+- "Coverage map decreased current file position by %"PRIu64 " bytes.\n",
++ "Coverage map decreased current file position by %" PRIu64 " bytes.\n",
+ (unsigned long long)decrease);
+ }
+ }
+@@ -2399,7 +2399,7 @@
+ if(state->useCoverageBlockmap) {
+ if(state->modeVerbose) {
+ fprintf(stdout,
+- "Issuing coverage map-based READ, wants %"PRIu64 " bytes.\n",
++ "Issuing coverage map-based READ, wants %" PRIu64 " bytes.\n",
+ neededbytes);
+ }
+
+@@ -2425,7 +2425,7 @@
+
+ if(state->modeVerbose) {
+ fprintf(stdout,
+- "fread using coverage map to skip %"PRIu64 " bytes.\n", bytestoskip);
++ "fread using coverage map to skip %" PRIu64 " bytes.\n", bytestoskip);
+ }
+
+ scalpelInputSeeko(inReader, (off64_t) bytestoskip, SCALPEL_SEEK_CUR);
+@@ -2450,7 +2450,7 @@
+
+ if(state->modeVerbose) {
+ fprintf(stdout,
+- "fread using coverage map found %"PRIu64 " consecutive bytes.\n",
++ "fread using coverage map found %" PRIu64 " consecutive bytes.\n",
+ bytestoread);
+ }
+
+@@ -2465,7 +2465,7 @@
+ curpos += bytestoread;
+
+ if(state->modeVerbose) {
+- fprintf(stdout, "fread using coverage map read %"PRIu64 " bytes.\n",
++ fprintf(stdout, "fread using coverage map read %" PRIu64 " bytes.\n",
+ bytesread);
+ }
+ }
+@@ -2879,7 +2879,7 @@
+ }
+
+ // # of headers
+- if(fprintf(dbfile, "%"PRIu64 "\n", currentneedle->offsets.numheaders)
++ if(fprintf(dbfile, "%" PRIu64 "\n", currentneedle->offsets.numheaders)
+ <= 0) {
+
+ fprintf(stderr,
+@@ -2893,7 +2893,7 @@
+ for(i = 0; i < currentneedle->offsets.numheaders; i++) {
+ #ifdef _WIN32
+ if(fprintf
+- (dbfile, "%"PRIu64 "\n",
++ (dbfile, "%" PRIu64 "\n",
+ positionUseCoverageBlockmap(state,
+ currentneedle->offsets.
+ headers[i])) <= 0) {
+@@ -2913,7 +2913,7 @@
+ }
+
+ // # of footers
+- if(fprintf(dbfile, "%"PRIu64 "\n", currentneedle->offsets.numfooters)
++ if(fprintf(dbfile, "%" PRIu64 "\n", currentneedle->offsets.numfooters)
+ <= 0) {
+ fprintf(stderr,
+ "Error writing to header/footer database file: %s\n", fn);
+@@ -2925,7 +2925,7 @@
+ // all footer positions for current suffix
+ for(i = 0; i < currentneedle->offsets.numfooters; i++) {
+ if(fprintf
+- (dbfile, "%"PRIu64 "\n",
++ (dbfile, "%" PRIu64 "\n",
+ positionUseCoverageBlockmap(state,
+ currentneedle->offsets.
+ footers[i])) <= 0) {
+--- a/src/helpers.cpp
++++ b/src/helpers.cpp
+@@ -528,7 +528,7 @@
+ if((scalpelInputSeeko(inReader, state->skip, SCALPEL_SEEK_SET))) {
+
+ fprintf(stderr,
+- "ERROR: Couldn't skip %"PRIu64 " bytes at the start of input file %s\n",
++ "ERROR: Couldn't skip %" PRIu64 " bytes at the start of input file %s\n",
+ state->skip, inputId);
+
+
+@@ -543,7 +543,7 @@
+ }
+ else {
+
+- fprintf(stderr, "\nSkipped the first %"PRIu64 " bytes of %s...\n",
++ fprintf(stderr, "\nSkipped the first %" PRIu64 " bytes of %s...\n",
+ state->skip, inputId);
+
+
+--- a/src/scalpel_exec.cpp
++++ b/src/scalpel_exec.cpp
+@@ -141,7 +141,7 @@
+ }
+
+ fprintf(stdout,
+- "\nScalpel is done, files carved = %"PRIu64 ", elapsed = %ld secs.\n",
++ "\nScalpel is done, files carved = %" PRIu64 ", elapsed = %ld secs.\n",
+ state.fileswritten, (int)time(0) - starttime);
+
+ destroy_threading_model(&state);
+@@ -348,7 +348,7 @@
+ numopts++;
+ state->skip = strtoull(optarg, NULL, 10);
+ fprintf(stdout,
+- "Skipping the first %"PRIu64 " bytes of each image file.\n", state->skip);
++ "Skipping the first %" PRIu64 " bytes of each image file.\n", state->skip);
+ break;
+
+ case 'c':
diff --git a/app-forensics/scalpel/files/musl-error_h.patch b/app-forensics/scalpel/files/musl-error_h.patch
new file mode 100644
index 000000000000..7f8139cf67a6
--- /dev/null
+++ b/app-forensics/scalpel/files/musl-error_h.patch
@@ -0,0 +1,83 @@
+https://raw.githubusercontent.com/gentoo/musl/master/dev-libs/elfutils/files/0.178/musl-error_h.patch
+
+From 9cb8fad40329cc6445233af0b6ac3f2adde19c65 Mon Sep 17 00:00:00 2001
+From:
+Date: Thu, 12 Dec 2019 22:00:47 -0600
+Subject: [PATCH 9/9] Add hacked up error header for non GLIBC machines
+
+---
+ lib/error.h | 27 +++++++++++++++++++++++++++
+ src/error.h | 27 +++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+)
+ create mode 100644 lib/error.h
+ create mode 100644 src/error.h
+
+diff --git a/lib/error.h b/lib/error.h
+new file mode 100644
+index 0000000..ef06827
+--- /dev/null
++++ b/error.h
+@@ -0,0 +1,27 @@
++#ifndef _ERROR_H_
++#define _ERROR_H_
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++static unsigned int error_message_count = 0;
++
++static inline void error(int status, int errnum, const char* format, ...)
++{
++ va_list ap;
++ fprintf(stderr, "%s: ", program_invocation_name);
++ va_start(ap, format);
++ vfprintf(stderr, format, ap);
++ va_end(ap);
++ if (errnum)
++ fprintf(stderr, ": %s", strerror(errnum));
++ fprintf(stderr, "\n");
++ error_message_count++;
++ if (status)
++ exit(status);
++}
++
++#endif /* _ERROR_H_ */
+diff --git a/src/error.h b/src/error.h
+new file mode 100644
+index 0000000..ef06827
+--- /dev/null
++++ b/src/error.h
+@@ -0,0 +1,27 @@
++#ifndef _ERROR_H_
++#define _ERROR_H_
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++static unsigned int error_message_count = 0;
++
++static inline void error(int status, int errnum, const char* format, ...)
++{
++ va_list ap;
++ fprintf(stderr, "%s: ", program_invocation_name);
++ va_start(ap, format);
++ vfprintf(stderr, format, ap);
++ va_end(ap);
++ if (errnum)
++ fprintf(stderr, ": %s", strerror(errnum));
++ fprintf(stderr, "\n");
++ error_message_count++;
++ if (status)
++ exit(status);
++}
++
++#endif /* _ERROR_H_ */
+--
+2.24.1
+
diff --git a/app-forensics/scalpel/metadata.xml b/app-forensics/scalpel/metadata.xml
new file mode 100644
index 000000000000..993bfae01577
--- /dev/null
+++ b/app-forensics/scalpel/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>martin.dummer@gmx.net</email>
+ <name>Martin Dummer</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription lang="en">
+ Scalpel is a fast file carver that reads a database of header and footer
+ definitions and extracts matching files or data fragments from a set of image
+ files or raw device files. Scalpel is filesystem-independent and will carve
+ files from FATx, NTFS, ext2/3, HFS+, or raw partitions. It is useful for both
+ digital forensics investigation and file recovery.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/scalpel/scalpel-2.1_pre20210326.ebuild b/app-forensics/scalpel/scalpel-2.1_pre20210326.ebuild
new file mode 100644
index 000000000000..dd1fe9be6aed
--- /dev/null
+++ b/app-forensics/scalpel/scalpel-2.1_pre20210326.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit autotools flag-o-matic
+
+DESCRIPTION="A high performance file carver"
+HOMEPAGE="https://github.com/sleuthkit/scalpel"
+SCALPEL_COMMIT="35e1367ef2232c0f4883c92ec2839273c821dd39"
+SRC_URI="https://github.com/sleuthkit/scalpel/archive/${SCALPEL_COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/scalpel-${SCALPEL_COMMIT}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="dev-libs/tre"
+RDEPEND="${DEPEND}"
+BDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/gcc-11-fix-literal-suffix.patch" )
+DOCS=( Changelog README )
+
+src_prepare() {
+ # Set the default config file location
+ sed -e "s:scalpel.conf:/etc/\0:" -i src/scalpel.h || die "sed failed"
+
+ sed -e 's|AM_CPPFLAGS =.*|AM_CPPFLAGS = -std=c++11|' -i Makefile.am src/Makefile.am || die "sed failed"
+
+ # #716104 compile with musl misses error.h, solution borrowed from #701478
+ if use elibc_musl; then
+ eapply "${FILESDIR}/musl-error_h.patch"
+ fi
+
+ default
+ eautoreconf
+
+ filter-lto # https://bugs.gentoo.org/865687
+}
+
+src_install() {
+ default
+
+ insinto /etc
+ doins scalpel.conf
+}
diff --git a/app-forensics/sleuthkit/Manifest b/app-forensics/sleuthkit/Manifest
new file mode 100644
index 000000000000..9c30a719b94b
--- /dev/null
+++ b/app-forensics/sleuthkit/Manifest
@@ -0,0 +1,3 @@
+DIST sleuthkit-4.12.1.tar.gz 3768424 BLAKE2B 506d21645cfe809994ebe3edac47402b3590ab4d5bc16260daa706b1fba5ceacf5eb2c3baa96cfa1b7404fbdfcf77705d6f28ddaf293e8d71a1e4cbde93f74a6 SHA512 f3efe1339edc9eb07023975a1e2e2dc7bc47d61d838aada941b7591e2c5beb74fc5298ebf68ae71875bf8f0f09c0d7929a11762fa47840e7e18398d3ff80b9fc
+DIST sleuthkit-libewf_64bit-20130416.tar.gz 23818247 BLAKE2B 23be933ed8a74e4834ee6571a28d81ba16e98e4e4e27b5b1b3b655d1d92a6eadcba35aadf96aa404e6e0a225b27f3f5daff2836879b87fe58440a3ad5645de44 SHA512 611cbb57de17600caee0330bbe9917c4481d7711a35dba8c072fd49cd3e1714e0a3ce30fd8fcac9981db848e80870bf5d215326c56808bb6f5b4c8dcc1e5a3c9
+DIST sqlite-jdbc-3.42.0.0.jar 13030515 BLAKE2B 02ffee9875fefd3f2ba4e9115d0b4fee53163bab994830b28033159ab08df264e5f86bbcfb7d1fae145c9aaafc6537fb9084594ce6b21c9715226a1cf644f174 SHA512 6d0491f7f2f542629f4e69d5891ded85e887f0d8dad8c4568ead07b1eda79e0b97f625374a635f12d419d2f42a4049976365e0a8265ee371172f330be9571616
diff --git a/app-forensics/sleuthkit/files/sleuthkit-4.1.0-tools-shared-libs.patch b/app-forensics/sleuthkit/files/sleuthkit-4.1.0-tools-shared-libs.patch
new file mode 100644
index 000000000000..efa335068333
--- /dev/null
+++ b/app-forensics/sleuthkit/files/sleuthkit-4.1.0-tools-shared-libs.patch
@@ -0,0 +1,55 @@
+--- sleuthkit-4.1.0/tools/autotools/Makefile.am
++++ sleuthkit-4.1.0/tools/autotools/Makefile.am
+@@ -1,6 +1,5 @@
+ AM_CPPFLAGS = -I../.. -I$(srcdir)/../.. -Wall
+ LDADD = ../../tsk/libtsk.la
+-LDFLAGS += -static
+ EXTRA_DIST = .indent.pro
+
+ bin_PROGRAMS = tsk_recover tsk_loaddb tsk_comparedir tsk_gettimes
+--- sleuthkit-4.1.0/tools/fstools/Makefile.am
++++ sleuthkit-4.1.0/tools/fstools/Makefile.am
+@@ -1,6 +1,5 @@
+ AM_CPPFLAGS = -I../.. -I$(srcdir)/../.. -Wall
+ LDADD = ../../tsk/libtsk.la
+-LDFLAGS += -static
+ EXTRA_DIST = .indent.pro fscheck.cpp
+
+ bin_PROGRAMS = blkcalc blkcat blkls blkstat ffind fls fcat fsstat icat ifind ils \
+--- sleuthkit-4.1.0/tools/hashtools/Makefile.am
++++ sleuthkit-4.1.0/tools/hashtools/Makefile.am
+@@ -1,6 +1,5 @@
+ AM_CPPFLAGS = -I../.. -I$(srcdir)/../.. -Wall
+ LDADD = ../../tsk/libtsk.la
+-LDFLAGS += -static
+ EXTRA_DIST = .indent.pro md5.c sha1.c
+
+ bin_PROGRAMS = hfind
+--- sleuthkit-4.1.0/tools/imgtools/Makefile.am
++++ sleuthkit-4.1.0/tools/imgtools/Makefile.am
+@@ -1,6 +1,5 @@
+ AM_CPPFLAGS = -I../.. -I$(srcdir)/../.. -Wall
+ LDADD = ../../tsk/libtsk.la
+-LDFLAGS += -static
+ EXTRA_DIST = .indent.pro
+
+ bin_PROGRAMS = img_cat img_stat
+--- sleuthkit-4.1.0/tools/srchtools/Makefile.am
++++ sleuthkit-4.1.0/tools/srchtools/Makefile.am
+@@ -6,7 +6,6 @@
+
+ sigfind_SOURCES = sigfind.cpp
+ sigfind_LDADD = ../../tsk/libtsk.la
+-sigfind_LDFLAGS = -static
+
+ indent:
+ indent *.c *.cpp
+--- sleuthkit-4.1.0/tools/vstools/Makefile.am
++++ sleuthkit-4.1.0/tools/vstools/Makefile.am
+@@ -1,6 +1,5 @@
+ AM_CPPFLAGS = -I../.. -I$(srcdir)/../.. -Wall
+ LDADD = ../../tsk/libtsk.la
+-LDFLAGS += -static
+ EXTRA_DIST = .indent.pro
+
+ bin_PROGRAMS = mmls mmstat mmcat
diff --git a/app-forensics/sleuthkit/files/sleuthkit-4.10.1-exclude-usr-local.patch b/app-forensics/sleuthkit/files/sleuthkit-4.10.1-exclude-usr-local.patch
new file mode 100644
index 000000000000..256dc54548b0
--- /dev/null
+++ b/app-forensics/sleuthkit/files/sleuthkit-4.10.1-exclude-usr-local.patch
@@ -0,0 +1,28 @@
+From: Gokturk Yuksek <gokturk@gentoo.org>
+
+Do not allow the build system to use libs from /usr/local.
+
+Bug: https://bugs.gentoo.org/774039
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -92,19 +92,6 @@
+ dnl Enable multithreading by default in the presence of pthread
+ AS_IF([test "x$ax_pthread_ok" = "xyes" && test "x$enable_multithreading" != "xno"], [ax_multithread=yes], [ax_multithread=no])
+
+-case "$host" in
+-*-*-mingw*)
+- dnl Adding the native /usr/local is wrong for cross-compiling
+- ;;
+-*)
+- dnl Not all compilers include /usr/local in the include and link path
+- if test -d /usr/local/include; then
+- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+- LDFLAGS="$LDFLAGS -L/usr/local/lib"
+- fi
+- ;;
+-esac
+-
+ dnl Add enable/disable option
+ AC_ARG_ENABLE([java],
+ [AS_HELP_STRING([--disable-java], [Do not build the java bindings or jar file])])
diff --git a/app-forensics/sleuthkit/files/sleuthkit-4.12.0-configure-ac-test-fix.patch b/app-forensics/sleuthkit/files/sleuthkit-4.12.0-configure-ac-test-fix.patch
new file mode 100644
index 000000000000..2bb52435fd9a
--- /dev/null
+++ b/app-forensics/sleuthkit/files/sleuthkit-4.12.0-configure-ac-test-fix.patch
@@ -0,0 +1,34 @@
+https://github.com/sleuthkit/sleuthkit/pull/2835
+
+From fd19051920849343631df1cbf8d4b86f1bf98b2c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=B6kt=C3=BCrk=20Y=C3=BCksek?= <gokturk@gentoo.org>
+Date: Mon, 26 Jun 2023 22:05:47 -0700
+Subject: [PATCH] configure.ac: use '=' for comparison instead of '=='
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The operator '==' isn't POSIX compliant[0]. Use the standard '=', as it's
+done everywhere else in configure.ac.
+
+[0] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
+
+Bug: https://bugs.gentoo.org/870250
+Signed-off-by: Göktürk Yüksek <gokturk@gentoo.org>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c4226f5be4..bec6ddbf62 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -252,7 +252,7 @@ AS_IF([test "x$enable_java" != "xno"], [
+ dnl if we found everything we need, set ax_java_support for the
+ dnl status message and set X_JNI for use in Makefile
+ AS_IF([test "x$JNI_CPPFLAGS" != x && test "x$ANT_FOUND" != x && test "x$JAVA" != x], [ax_java_support=yes], [ax_java_support=no])
+-AM_CONDITIONAL([X_JNI],[test "x$ax_java_support" == "xyes"])
++AM_CONDITIONAL([X_JNI],[test "x$ax_java_support" = "xyes"])
+
+ AC_CONFIG_COMMANDS([tsk/tsk_incs.h],
+ [echo "#ifndef _TSK_INCS_H" > tsk/tsk_incs.h
diff --git a/app-forensics/sleuthkit/files/sleuthkit-4.12.1-c23.patch b/app-forensics/sleuthkit/files/sleuthkit-4.12.1-c23.patch
new file mode 100644
index 000000000000..59b8083c6fd6
--- /dev/null
+++ b/app-forensics/sleuthkit/files/sleuthkit-4.12.1-c23.patch
@@ -0,0 +1,30 @@
+https://bugs.gentoo.org/943976
+https://github.com/sleuthkit/sleuthkit/commit/dc9b299ea2c4fd4d79305df1e62073aac14fdb2e
+
+From dc9b299ea2c4fd4d79305df1e62073aac14fdb2e Mon Sep 17 00:00:00 2001
+From: Joel Uckelman <joel.uckelman@aon.com>
+Date: Fri, 1 Nov 2024 18:11:25 +0000
+Subject: [PATCH] Don't redefine bool. That causes collisions.
+
+--- a/tsk/base/crc.h
++++ b/tsk/base/crc.h
+@@ -91,7 +91,6 @@ Status : Copyright (C) Ross Williams, 1993. However, permission is
+ #ifndef DONE_STYLE
+
+ typedef unsigned long ulong;
+-typedef unsigned bool;
+ typedef unsigned char * p_ubyte_;
+
+ #ifndef TRUE
+@@ -120,8 +119,8 @@ typedef struct
+ int cm_width; /* Parameter: Width in bits [8,32]. */
+ ulong cm_poly; /* Parameter: The algorithm's polynomial. */
+ ulong cm_init; /* Parameter: Initial register value. */
+- bool cm_refin; /* Parameter: Reflect input bytes? */
+- bool cm_refot; /* Parameter: Reflect output CRC? */
++ unsigned cm_refin; /* Parameter: Reflect input bytes? */
++ unsigned cm_refot; /* Parameter: Reflect output CRC? */
+ ulong cm_xorot; /* Parameter: XOR this to output CRC. */
+
+ ulong cm_reg; /* Context: Context during execution. */
+
diff --git a/app-forensics/sleuthkit/files/sleuthkit-4.6.4-default-jar-location-fix.patch b/app-forensics/sleuthkit/files/sleuthkit-4.6.4-default-jar-location-fix.patch
new file mode 100644
index 000000000000..126fce904a8f
--- /dev/null
+++ b/app-forensics/sleuthkit/files/sleuthkit-4.6.4-default-jar-location-fix.patch
@@ -0,0 +1,58 @@
+From f8c1cada7f01826b15a82b20600b8df7562fa2ed Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=B6kt=C3=BCrk=20Y=C3=BCksek?= <gokturk@gentoo.org>
+Date: Wed, 28 Nov 2018 21:33:46 -0500
+Subject: [PATCH v1] Allow --enable-offline to accept a directory argument for
+ jar libs
+
+Allow the hardcoded default_jar_location in build.xml to
+/usr/share/java to be changed using the argument provided to
+--enable-offline. Note that this changes the behavior of the switch
+from "anything other than yes or no is incorrect" to "anything other
+than no implies offline mode".
+---
+ bindings/java/Makefile.am | 4 ++++
+ configure.ac | 10 +++++++++-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/bindings/java/Makefile.am b/bindings/java/Makefile.am
+index ad27526e..f0bb9f68 100644
+--- a/bindings/java/Makefile.am
++++ b/bindings/java/Makefile.am
+@@ -7,6 +7,10 @@ jar_DATA = $(tsk_jar)
+
+ if OFFLINE
+ ant_args=-Doffline=true
++if CUSTOM_DEFAULT_JAR_LOCATION
++ ant_args+= -Ddefault-jar-location="@DEFAULT_JAR_LOCATION@"
++else
++endif
+ else
+
+ endif
+diff --git a/configure.ac b/configure.ac
+index dc9026ed..d3d41646 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -221,10 +221,18 @@ AC_ARG_ENABLE([offline],
+ [case "${enableval}" in
+ yes) offline=true ;;
+ no) offline=false ;;
+- *) AC_MSG_ERROR([bad value ${enableval} for --enable-online]) ;;
++ *)
++ offline=true
++ default_jar_location="${enableval}"
++ ;;
+ esac],[offline=false])
+
+ AM_CONDITIONAL([OFFLINE], [test "x$offline" = xtrue])
++AM_CONDITIONAL([CUSTOM_DEFAULT_JAR_LOCATION], [test "x$default_jar_location" != "x"])
++AM_COND_IF([CUSTOM_DEFAULT_JAR_LOCATION],
++ [AC_SUBST([DEFAULT_JAR_LOCATION], [$default_jar_location])]
++)
++
+
+
+ dnl Check if we should link libewf.
+--
+2.19.1
+
diff --git a/app-forensics/sleuthkit/metadata.xml b/app-forensics/sleuthkit/metadata.xml
new file mode 100644
index 000000000000..041fb969b6fe
--- /dev/null
+++ b/app-forensics/sleuthkit/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <use>
+ <flag name="aff">Enable extra aff formats</flag>
+ <flag name="ewf">Enable libewf support</flag>
+ </use>
+ <slots>
+ <subslots>Reflect ABI compatibility for libtsk.so</subslots>
+ </slots>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:sleuthkit:the_sleuth_kit</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/sleuthkit/sleuthkit-4.12.1-r2.ebuild b/app-forensics/sleuthkit/sleuthkit-4.12.1-r2.ebuild
new file mode 100644
index 000000000000..4857ab4ddaeb
--- /dev/null
+++ b/app-forensics/sleuthkit/sleuthkit-4.12.1-r2.ebuild
@@ -0,0 +1,327 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools java-pkg-opt-2
+
+DESCRIPTION="A collection of file system and media management forensic analysis tools"
+HOMEPAGE="https://www.sleuthkit.org/sleuthkit/"
+# TODO: sqlite-jdbc does not exist in the tree, we bundle it for now
+# See: https://bugs.gentoo.org/690010
+# TODO: Upstream uses a very specific version of libewf which is not in
+# the tree anymore. So we statically compile and link to sleuthkit.
+# Hopefully upstream will figure something out in the future.
+# See: https://bugs.gentoo.org/689752
+SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.tar.gz
+ java? (
+ https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.42.0.0/sqlite-jdbc-3.42.0.0.jar
+ )
+ ewf? ( https://github.com/sleuthkit/libewf_64bit/archive/VisualStudio_2010.tar.gz
+ -> sleuthkit-libewf_64bit-20130416.tar.gz )"
+
+LICENSE="BSD CPL-1.0 GPL-2+ IBM java? ( Apache-2.0 )"
+SLOT="0/19" # subslot = major soname version
+KEYWORDS="amd64 ~hppa ppc x86"
+IUSE="aff doc ewf java static-libs test +threads zlib"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-db/sqlite:3
+ dev-lang/perl:*
+ aff? ( app-forensics/afflib )
+ ewf? ( virtual/zlib:= )
+ java? (
+ >=dev-java/c3p0-0.9.5.5:0
+ dev-java/commons-lang:3.6
+ >=dev-java/commons-validator-1.6:0
+ >=dev-java/gson-2.8.5:0
+ dev-java/guava:0
+ >=dev-java/jdbc-postgresql-9.4:0
+ >=dev-java/joda-time-2.4:0
+ >=dev-java/mchange-commons-0.2.20:0
+ dev-java/sparsebitset:0
+ )
+ zlib? ( virtual/zlib:= )
+"
+# TODO: add support for not-in-tree libraries:
+# libvhdi: https://github.com/libyal/libvhdi
+# libvmdk: https://github.com/libyal/libvmdk
+# libvslvm: https://github.com/libyal/libvslvm
+# Upstream also says "A stand-alone version of libbfio is needed
+# to allow libvslvm to directly read from a TSK_IMAGE." Not sure
+# what it means yet.
+#
+# DEPEND="${DEPEND}
+# vhdi? ( dev-libs/libvhdi )
+# vmdk? ( dev-libs/libvmdk )
+# vslvm? ( dev-libs/libvslvm dev-libs/libbfio )
+# "
+
+RDEPEND="${DEPEND}
+ java? ( virtual/jre:1.8 )
+"
+DEPEND="${DEPEND}
+ java? ( virtual/jdk:1.8 )
+ test? (
+ >=dev-util/cppunit-1.2.1
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+ java? ( >=dev-java/ant-1.10.14-r3:0 )
+ doc? ( app-text/doxygen )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-4.1.0-tools-shared-libs.patch
+ "${FILESDIR}"/${PN}-4.6.4-default-jar-location-fix.patch
+ "${FILESDIR}"/${PN}-4.10.1-exclude-usr-local.patch
+ "${FILESDIR}"/${PN}-4.12.0-configure-ac-test-fix.patch
+ "${FILESDIR}"/${PN}-4.12.1-c23.patch
+)
+
+src_unpack() {
+ local f
+
+ unpack ${P}.tar.gz
+
+ if use ewf; then
+ pushd "${T}" &>/dev/null || die
+ unpack sleuthkit-libewf_64bit-20130416.tar.gz
+ export TSK_LIBEWF_SRCDIR="${T}"/libewf_64bit-VisualStudio_2010
+ popd &>/dev/null || die
+ fi
+
+ # Copy the jar files that don't exist in the tree yet
+ if use java; then
+ TSK_JAR_DIR="${T}/lib"
+ mkdir "${TSK_JAR_DIR}" || die
+ for f in ${A}; do
+ if [[ ${f} =~ .jar$ ]]; then
+ cp "${DISTDIR}"/"${f}" "${TSK_JAR_DIR}" || die
+ fi
+ done
+ export TSK_JAR_DIR
+ fi
+}
+
+tsk_prepare_libewf() {
+ # Inlining breaks the compilation, disable it
+ sed -e 's/LIBUNA_INLINE inline/LIBUNA_INLINE/' \
+ -i "${TSK_LIBEWF_SRCDIR}"/libuna/libuna_inline.h || die
+}
+
+src_prepare() {
+ use ewf && tsk_prepare_libewf
+
+ # Do not pass '-Werror'. This is overkill for user builds.
+ sed -e '/AM_CXXFLAGS/ s/-Werror//g' \
+ -i tsk/util/Makefile.am \
+ -i tsk/pool/Makefile.am || die
+ # Remove -static from LDFLAGS because it doesn't actually create
+ # a static binary. It confuses libtool, who then inserts rpath
+ sed -e '/LDFLAGS/ s/-static//' \
+ -i tools/pooltools/Makefile.am || die
+
+ if use java; then
+ pushd "${S}"/bindings/java &>/dev/null || die
+
+ # Prevent "make install" from installing
+ # jar files under /usr/share/java
+ # We'll use the java eclasses for this
+ # See: https://github.com/sleuthkit/sleuthkit/pull/1379
+ sed -e '/^jar_DATA/ d;' -i Makefile.am || die
+
+ java-pkg-opt-2_src_prepare
+
+ popd &>/dev/null || die
+
+ # Call ant with jar target for case-uco.
+ # The default invocation of ant tries to
+ # run junit tests, which there are none.
+ # It ends up failing with:
+ # junit.framework.AssertionFailedError: No tests found in org.sleuthkit.caseuco.TestSuite
+ sed -e '/\tant \$(ant_args)/ s|$| jar|' \
+ -i "${S}"/case-uco/java/Makefile.am \
+ || die
+
+ export ANT_OPTS=" -Dant.build.javac.source=$(java-pkg_get-source)"
+ export ANT_OPTS+=" -Dant.build.javac.target=$(java-pkg_get-target)"
+
+ java-pkg-opt-2_src_prepare
+ fi
+
+ # Override the doxygen output directories
+ if use doc; then
+ sed -e "/^OUTPUT_DIRECTORY/ s|=.*$|= ${T}/doc|" \
+ -i tsk/docs/Doxyfile \
+ -i bindings/java/doxygen/Doxyfile || die
+ fi
+
+ # It's safe to call this even after java-pkg-opt-2_src_prepare
+ # because future calls to eapply_user do nothing and return 0
+ default
+
+ eautoreconf
+}
+
+tsk_compile_libewf() {
+ local myeconfargs=(
+ --prefix=/
+ --libdir=/lib
+ --enable-static
+ --disable-shared
+ --disable-winapi
+ --without-libbfio
+ --with-zlib
+ --without-bzip2
+ --without-libhmac
+ --without-openssl
+ --without-libuuid
+ --without-libfuse
+
+ --with-libcstring=no
+ --with-libcerror=no
+ --with-libcdata=no
+ --with-libclocale=no
+ --with-libcnotify=no
+ --with-libcsplit=no
+ --with-libuna=no
+ --with-libcfile=no
+ --with-libcpath=no
+ --with-libbfio=no
+ --with-libfcache=no
+ --with-libfvalue=no
+
+ )
+ # We want to contain our build flags
+ local CFLAGS="${CFLAGS}"
+ local LDFLAGS="${LDFLAGS}"
+
+ pushd "${TSK_LIBEWF_SRCDIR}" &>/dev/null || die
+
+ # Produce relocatable code
+ CFLAGS+=" -fPIC"
+ LDFLAGS+=" -fPIC"
+ econf "${myeconfargs[@]}"
+
+ # Do not waste CPU cycles on building ewftools
+ sed -e '/ewftools/ d' -i Makefile || die
+ emake
+
+ # Only install the headers and the library
+ emake -C libewf DESTDIR="${T}"/image install
+ emake -C include DESTDIR="${T}"/image install
+ find "${T}"/image -name '*.la' -delete || die
+
+ popd &>/dev/null || die
+}
+
+src_configure() {
+ local myeconfargs=(
+ --enable-offline="${TSK_JAR_DIR}"
+ $(use_enable java)
+ $(use_enable static-libs static)
+ $(use_enable test cppunit)
+ $(use_enable threads multithreading)
+ $(use_with aff afflib)
+ $(use_with zlib)
+ )
+ # TODO: add support for non-existing libraries:
+ # myeconfargs+=(
+ # $(use_with vhdi libvhdi)
+ # $(use_with vmdk libvmdk)
+ # $(use_with vslvm libvslvm)
+ # $(use_with vslvm libbfio) # not a typo
+ # )
+ myeconfargs+=(
+ --without-libvhdi
+ --without-libvmdk
+ --without-libvslvm
+ --without-libbfio
+ )
+
+ use ewf && tsk_compile_libewf
+ myeconfargs+=( $(use_with ewf libewf "${T}"/image) )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ # Give it an existing bogus ivy home #672220
+ local -x IVY_HOME="${T}"
+
+ # Create symlinks of jars for the required dependencies
+ if use java; then
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" c3p0
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" commons-lang:3.6
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" commons-validator
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" gson
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" guava
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" jdbc-postgresql
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" joda-time
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" mchange-commons
+ java-pkg_jar-from --into "${TSK_JAR_DIR}" sparsebitset
+
+ # case-uco needs gson and expects it under case-uco/java/lib
+ # symlink it to the jar dir we create for java bindings
+ ln -s "${TSK_JAR_DIR}" "${S}"/case-uco/java/lib || die
+ ln -s ./gson.jar "${TSK_JAR_DIR}"/gson-2.8.5.jar || die
+ fi
+
+ # Create the doc output dirs if requested
+ if use doc; then
+ mkdir -p "${T}"/doc/{api-docs,jni-docs} || die
+ fi
+
+ emake all $(usex doc api-docs "")
+}
+
+src_install() {
+ # Give it an existing bogus ivy home #756766
+ local -x IVY_HOME="${T}"
+ local f
+
+ if use java; then
+ pushd "${S}"/bindings/java &>/dev/null || die
+
+ # Install case-uco
+ pushd "${S}"/case-uco/java &>/dev/null || die
+ java-pkg_newjar "dist/${PN}-caseuco-${PV}".jar "${PN}-caseuco.jar"
+ popd || die
+
+ # Install the bundled jar files as well as the
+ # sleuthkit jar installed here by case-uco
+ pushd "${TSK_JAR_DIR}" &>/dev/null || die
+ for f in *; do
+ # Skip the symlinks java-pkg_jar-from created
+ [[ -L ${f} ]] && continue
+
+ # Strip the version numbers as per eclass recommendation
+ [[ ${f} =~ -([0-9]+\.)+jar$ ]] || continue
+
+ java-pkg_newjar "${f}" "${f/${BASH_REMATCH[0]}/.jar}"
+ done
+ popd &>/dev/null || die
+
+ popd &>/dev/null || die
+ fi
+
+ default
+ # Default install target for case-uco installs the jar in the wrong place
+ rm -r "${ED}"/usr/share/java
+
+ # It unconditionally builds both api and jni docs
+ # We install conditionally based on the provided use flags
+ if use doc; then
+ dodoc -r "${T}"/doc/api-docs
+ use java && dodoc -r "${T}"/doc/jni-docs
+ fi
+
+ find "${D}" -name '*.la' -delete || die
+}
+
+src_test() {
+ emake -C "${S}"/unit_tests check
+}
diff --git a/app-forensics/unhide/Manifest b/app-forensics/unhide/Manifest
new file mode 100644
index 000000000000..fece606b0e0b
--- /dev/null
+++ b/app-forensics/unhide/Manifest
@@ -0,0 +1 @@
+DIST unhide-20220611.tgz 80219 BLAKE2B 70cd485197aa22387852b2f71831d9dcf02e2357b798184844d9289796717256ab28d555c29503c53b32718246dc32afccd386decce75dde5a50a35782569ba4 SHA512 0b2bb7d1a536fe572cce94b438cae0495a969e40014e95b2d19406c3108ce05ec8d722d77b76d4095a1dc5cf8fb6613f3e5df295ce10a08648d7c7390aa4500e
diff --git a/app-forensics/unhide/metadata.xml b/app-forensics/unhide/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/unhide/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/unhide/unhide-20220611.ebuild b/app-forensics/unhide/unhide-20220611.ebuild
new file mode 100644
index 000000000000..50157b6d2d57
--- /dev/null
+++ b/app-forensics/unhide/unhide-20220611.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo toolchain-funcs
+
+DESCRIPTION="Forensic tool to find hidden processes and TCP/UDP ports by rootkits/LKMs"
+HOMEPAGE="https://www.unhide-forensics.info"
+SRC_URI="https://github.com/YJesus/Unhide/archive/refs/tags/v${PV}.tar.gz -> ${P}.tgz"
+S="${WORKDIR}/Unhide-${PV}"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+src_compile() {
+ edo $(tc-getCC) ${CFLAGS} ${LDFLAGS} --static -pthread \
+ unhide-linux*.c unhide-output.c -o unhide
+ edo $(tc-getCC) ${CFLAGS} ${LDFLAGS} --static \
+ unhide-tcp.c unhide-tcp-fast.c unhide-output.c -o unhide-tcp
+}
+
+src_install() {
+ dobin ${PN}
+ dobin ${PN}-tcp
+ dodoc changelog README.txt TODO LEEME.txt LISEZ-MOI.TXT NEWS TODO
+ doman man/unhide.8 man/unhide-tcp.8
+ has "fr" ${LINGUAS} && newman man/fr/unhide.8 unhide.fr.8
+ has "es" ${LINGUAS} && newman man/es/unhide.8 unhide.es.8
+}
diff --git a/app-forensics/volatility3/Manifest b/app-forensics/volatility3/Manifest
new file mode 100644
index 000000000000..7a1f58904e8e
--- /dev/null
+++ b/app-forensics/volatility3/Manifest
@@ -0,0 +1,12 @@
+DIST volatility3-2.27.0-symbols-linux.zip 2980184 BLAKE2B 53cd49663938c6f39e71193ae225e4985f8d0e6d301f2420eaa021c2722bfa6f9c9e7d029854b81f4cdd47bf2870e28efeff432fdc1281842b54ee9ffe6e3807 SHA512 59056044c3702c1ffd5f1490cb457831d65d1f48fbc523da92b950963155df994a2ff2f11abd5f3b1a977c7f28ed48b3b256c88f81dfa96a66419cb50934ba49
+DIST volatility3-2.27.0-symbols-mac.zip 84808562 BLAKE2B d10ecf88cc17653373a765b5b49a6025b334565c8aeeeb2069651ad93ad610c613097ada02fedab734f02f4004fc029204d552b44b049ba9ae2d0c72f05d166f SHA512 51063f2023227ecc4492063054e898a99d094a03b9777b1dd6da8dffe38686a6836fdffa22c44bd62f1bd4119aeee0b84714857dc61e434dcbfb7f41fec22c12
+DIST volatility3-2.27.0-symbols-windows.zip 839727133 BLAKE2B a9631b35fc57f079ca3c856d2b8082b263683895c832e468efa9daf5103ce000dde313f343c37b37266eaf5c7b616ccae797a98a7504095640a30e07bb2c432f SHA512 077dde23120ce03d999580acff3c5b10a657d71bcedc3c6373d89e3b3211e1cf0759e22793b49f34ad397c4acf4c150410aff6ec3a4ef9c097de948e3369801b
+DIST volatility3-2.27.0.gh.tar.gz 1176116 BLAKE2B 36ea52b126174d02eb6fb0072130b956e47dbe0bbba7150f28615ab2f784ec30893e3d6f9f92a3d02dc08ac2cd54cc7fa77722ee96f570fbf9a81411747c3995 SHA512 f3a6e0ccbe24275db834389f077e957bbb7a398d62b8cc41bbf253d74e684348586ff33c6ba403260098a3598a61f9bccf7dfe2fafecfc936da3da7cf6437c69
+DIST volatility3-2.28.0-symbols-linux.zip 2980184 BLAKE2B 53cd49663938c6f39e71193ae225e4985f8d0e6d301f2420eaa021c2722bfa6f9c9e7d029854b81f4cdd47bf2870e28efeff432fdc1281842b54ee9ffe6e3807 SHA512 59056044c3702c1ffd5f1490cb457831d65d1f48fbc523da92b950963155df994a2ff2f11abd5f3b1a977c7f28ed48b3b256c88f81dfa96a66419cb50934ba49
+DIST volatility3-2.28.0-symbols-mac.zip 84808562 BLAKE2B d10ecf88cc17653373a765b5b49a6025b334565c8aeeeb2069651ad93ad610c613097ada02fedab734f02f4004fc029204d552b44b049ba9ae2d0c72f05d166f SHA512 51063f2023227ecc4492063054e898a99d094a03b9777b1dd6da8dffe38686a6836fdffa22c44bd62f1bd4119aeee0b84714857dc61e434dcbfb7f41fec22c12
+DIST volatility3-2.28.0-symbols-windows.zip 839727133 BLAKE2B a9631b35fc57f079ca3c856d2b8082b263683895c832e468efa9daf5103ce000dde313f343c37b37266eaf5c7b616ccae797a98a7504095640a30e07bb2c432f SHA512 077dde23120ce03d999580acff3c5b10a657d71bcedc3c6373d89e3b3211e1cf0759e22793b49f34ad397c4acf4c150410aff6ec3a4ef9c097de948e3369801b
+DIST volatility3-2.28.0.gh.tar.gz 1191907 BLAKE2B 9e3720bba5df03b432619dafabe6efa30caa2646dceefab21788ba83aca4a04c922964ccc44310daeb9eef52a80af0e2afdbf5d24b11496e8330483df07560eb SHA512 d92ef665b89b4085531b527e2f51f57a3172f121ce3dca1a3d9b2e14fb684803b5f57e821999154d2f635d3e446e5db7b1ad8adfecb9301a36be9e5132c3968c
+DIST volatility3-linux-sample-1.bin.gz 143967523 BLAKE2B 3321e991a50b6e4ccf19e0ee48d779664f43f4cdbdb950ca31a5d08c8ee9de0018e2d4f69f42206f7e8f1c6ea735c47f8aa42806ed0f85e9a837b611f07b3289 SHA512 82a34aa1d4e7d7deb9ea12e892f14ba0a28908b2da2e31ca76efd1e9e59d87769064a1ffffe8979a58b992cea7005fa20954df50984dbe1dd186513ad95168d7
+DIST volatility3-symbols-symbols_win-10_19041-2025_03.zip 789065 BLAKE2B efe8fb700e1f9388807fe36277faf7459f5e23af0ff11cac713057611a3679315ef6f155d3bf8c768ff0802d0ca807bb529e52b2600e99b8e31fd876e960fa05 SHA512 381c982753f628cef4997d894a7569453ecd34774e09259e87481b94c46a068332f5eb23d0290ee75308752b41cb6abecf322eb50d73bd7e1c5b097aec32ae1f
+DIST volatility3-win-10_19041-2025_03.dmp.gz 693221397 BLAKE2B 4549ef7631150cf88c0e82025ff7f14b8ce3e238abe9ffbc540a9262b17e06fcfad96b4bd633596d02b40394c7a546c9d61ed36b4adb466ec5f6a39afd644dca SHA512 7554ad59a086f18b972a4306975d96e79f595b853680052efe98954a9108b8368acc47276c7c48af5e42cecc309dfb454b1c42ac538dd2b007ab0b7036e73aba
+DIST volatility3-win-xp-laptop-2005-06-25.img.gz 180343409 BLAKE2B 9fc10ddb9208d7023854e9619f6cf5ce140f2a2aa5772ccd8bcd852dd50c6f77e36298dbf7df1512334e7976b6ab35dd77f4c49505e531c3a289dd0f26cfc01e SHA512 a1f758cc1b4febcf11f64bc01b872c7528d19c686d81f8e03d742424fa0600254914e656cdf35c3752b406354f769a8aa256622b2f2afe2d691c4bb6d3be3f52
diff --git a/app-forensics/volatility3/metadata.xml b/app-forensics/volatility3/metadata.xml
new file mode 100644
index 000000000000..997a7196a173
--- /dev/null
+++ b/app-forensics/volatility3/metadata.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <longdescription>
+ Volatility is the world's most widely used framework for extracting
+ digital artifacts from volatile memory (RAM) samples. The extraction
+ techniques are performed completely independent of the system being
+ investigated but offer visibility into the runtime state of the system.
+ </longdescription>
+ <use>
+ <flag name="crypt">support plugins that decrypt passwords, password hashes, etc.</flag>
+ <flag name="disasm">support plugins that perform malware analysis and disassemble code</flag>
+ <flag name="jsonschema">improve error messages regarding improperly configured ISF files</flag>
+ <flag name="leechcore">support memory acquisition via leechcore</flag>
+ <flag name="snappy">support AVMLs native compression format</flag>
+ <flag name="yara">support YARA pattern matching engine</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/volatility3/volatility3-2.27.0.ebuild b/app-forensics/volatility3/volatility3-2.27.0.ebuild
new file mode 100644
index 000000000000..cae987af5ad0
--- /dev/null
+++ b/app-forensics/volatility3/volatility3-2.27.0.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+inherit distutils-r1
+
+MY_PV=${PV//_beta/-beta.}
+
+DESCRIPTION="Framework for analyzing volatile memory"
+HOMEPAGE="https://github.com/volatilityfoundation/volatility3/ https://www.volatilityfoundation.org/"
+SRC_URI="
+ https://github.com/volatilityfoundation/volatility3/archive/v${MY_PV}.tar.gz -> ${P}.gh.tar.gz
+ https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip -> ${P}-symbols-linux.zip
+ https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip -> ${P}-symbols-mac.zip
+ https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip -> ${P}-symbols-windows.zip
+ test?
+ (
+ https://downloads.volatilityfoundation.org/volatility3/images/linux-sample-1.bin.gz -> ${PN}-linux-sample-1.bin.gz
+ https://downloads.volatilityfoundation.org/volatility3/images/win-xp-laptop-2005-06-25.img.gz -> ${PN}-win-xp-laptop-2005-06-25.img.gz
+ https://downloads.volatilityfoundation.org/volatility3/images/win-10_19041-2025_03.dmp.gz -> ${PN}-win-10_19041-2025_03.dmp.gz
+ https://downloads.volatilityfoundation.org/volatility3/symbols/symbols_win-10_19041-2025_03.zip -> ${PN}-symbols-symbols_win-10_19041-2025_03.zip
+ )
+"
+S="${WORKDIR}"/${PN}-${MY_PV}
+
+LICENSE="Volatility-1.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="crypt disasm jsonschema leechcore snappy test yara"
+
+# We need to select *all* subslots of app-arch/snappy which select
+# SONAME=libsnappy.so.1. See (https://github.com/gentoo/gentoo/pull/30585#discussion_r1167753625)
+RDEPEND="
+ >=dev-python/pefile-2024.8.26[${PYTHON_USEDEP}]
+ crypt? ( >=dev-python/pycryptodome-3.21.0[${PYTHON_USEDEP}] )
+ disasm? (
+ >=dev-libs/capstone-5.0.3[python,${PYTHON_USEDEP}]
+ <dev-libs/capstone-6[python,${PYTHON_USEDEP}]
+ )
+ jsonschema? ( >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}] )
+ leechcore? ( >=dev-python/leechcorepyc-2.19.2[${PYTHON_USEDEP}] )
+ snappy? ( app-arch/snappy:0/1.1 )
+ yara? (
+ || (
+ >=app-forensics/yara-x-0.10.0[${PYTHON_USEDEP}]
+ >=dev-python/yara-python-4.5.0[${PYTHON_USEDEP}]
+ )
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/unzip
+"
+
+# Tests require optional features
+REQUIRED_USE="test? ( yara )"
+
+RESTRICT="!test? ( test )"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ mv "${WORKDIR}/linux" "${S}/${PN}/symbols" || die
+ mv "${WORKDIR}"/*.dmg.json.xz "${S}/${PN}/symbols" || die
+ mv "${WORKDIR}/windows" "${S}/${PN}/symbols" || die
+
+ if use test; then
+ # tests want the images in a common directory
+ mkdir "${T}/test_images" || die
+ mv "${WORKDIR}/${PN}-linux-sample-1.bin" "${T}/test_images/linux-sample-1.bin" || die
+ mv "${WORKDIR}/${PN}-win-xp-laptop-2005-06-25.img" "${T}/test_images/win-xp-laptop-2005-06-25.img" || die
+ mv "${WORKDIR}/${PN}-win-10_19041-2025_03.dmp" "${T}/test_images/win-10_19041-2025_03.dmp" || die
+ mv "${WORKDIR}/167FE94B5641C005AC3036212A01F8DC-1.json" "${S}/${PN}/symbols" || die
+ fi
+}
+
+python_test() {
+ # see .github/workflows/test.yaml
+ epytest "${S}/test/plugins/windows/windows.py" \
+ --volatility=volshell.py \
+ --image-dir "${T}/test_images" \
+ -k test_windows_volshell -v
+ epytest "${S}/test/plugins/linux/linux.py" \
+ --volatility=volshell.py \
+ --image-dir "${T}/test_images" \
+ -k test_linux_volshell -v
+
+ # unable to get tests working
+ # epytest "${S}/test/plugins/windows/windows.py" \
+ # --volatility=vol.py \
+ # --image "${T}/test_images/win-10_19041-2025_03.dmp" \
+ # -k "test_windows and not test_windows_volshell" -v --durations=0
+ # epytest "${S}/test/plugins/linux/linux.py" \
+ # --volatility=vol.py \
+ # --image-dir "${T}/test_images" \
+ # -k "test_linux and not test_linux_volshell" -v
+}
diff --git a/app-forensics/volatility3/volatility3-2.28.0.ebuild b/app-forensics/volatility3/volatility3-2.28.0.ebuild
new file mode 100644
index 000000000000..c218baa30e68
--- /dev/null
+++ b/app-forensics/volatility3/volatility3-2.28.0.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+inherit distutils-r1
+
+MY_PV=${PV//_beta/-beta.}
+
+DESCRIPTION="Framework for analyzing volatile memory"
+HOMEPAGE="https://github.com/volatilityfoundation/volatility3/ https://www.volatilityfoundation.org/"
+SRC_URI="
+ https://github.com/volatilityfoundation/volatility3/archive/v${MY_PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/linux.zip -> ${P}-symbols-linux.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/mac.zip -> ${P}-symbols-mac.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/windows.zip -> ${P}-symbols-windows.zip
+ test?
+ (
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/linux-sample-1.bin.gz -> ${PN}-linux-sample-1.bin.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/win-xp-laptop-2005-06-25.img.gz -> ${PN}-win-xp-laptop-2005-06-25.img.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/win-10_19041-2025_03.dmp.gz -> ${PN}-win-10_19041-2025_03.dmp.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/symbols_win-10_19041-2025_03.zip -> ${PN}-symbols-symbols_win-10_19041-2025_03.zip
+ )
+"
+S="${WORKDIR}"/${PN}-${MY_PV}
+
+LICENSE="Volatility-1.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="crypt disasm jsonschema leechcore snappy test yara"
+
+# We need to select *all* subslots of app-arch/snappy which select
+# SONAME=libsnappy.so.1. See (https://github.com/gentoo/gentoo/pull/30585#discussion_r1167753625)
+RDEPEND="
+ >=dev-python/pefile-2024.8.26[${PYTHON_USEDEP}]
+ crypt? ( >=dev-python/pycryptodome-3.21.0[${PYTHON_USEDEP}] )
+ disasm? (
+ >=dev-libs/capstone-5.0.3[python,${PYTHON_USEDEP}]
+ <dev-libs/capstone-6[python,${PYTHON_USEDEP}]
+ )
+ jsonschema? ( >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}] )
+ leechcore? ( >=dev-python/leechcorepyc-2.19.2[${PYTHON_USEDEP}] )
+ snappy? ( app-arch/snappy:0/1.1 )
+ yara? (
+ || (
+ >=app-forensics/yara-x-0.10.0[${PYTHON_USEDEP}]
+ >=dev-python/yara-python-4.5.0[${PYTHON_USEDEP}]
+ )
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/unzip
+"
+
+# Tests require optional features
+REQUIRED_USE="test? ( yara )"
+
+RESTRICT="!test? ( test )"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ mv "${WORKDIR}/linux" "${S}/${PN}/symbols" || die
+ mv "${WORKDIR}"/*.dmg.json.xz "${S}/${PN}/symbols" || die
+ mv "${WORKDIR}/windows" "${S}/${PN}/symbols" || die
+
+ if use test; then
+ # tests want the images in a common directory
+ mkdir "${T}/test_images" || die
+ mv "${WORKDIR}/${PN}-linux-sample-1.bin" "${T}/test_images/linux-sample-1.bin" || die
+ mv "${WORKDIR}/${PN}-win-xp-laptop-2005-06-25.img" "${T}/test_images/win-xp-laptop-2005-06-25.img" || die
+ mv "${WORKDIR}/${PN}-win-10_19041-2025_03.dmp" "${T}/test_images/win-10_19041-2025_03.dmp" || die
+ mv "${WORKDIR}/167FE94B5641C005AC3036212A01F8DC-1.json" "${S}/${PN}/symbols" || die
+ fi
+}
+
+python_test() {
+ # see .github/workflows/test.yaml
+ epytest "${S}/test/plugins/windows/windows.py" \
+ --volatility=volshell.py \
+ --image-dir "${T}/test_images" \
+ -k test_windows_volshell -v
+ epytest "${S}/test/plugins/linux/linux.py" \
+ --volatility=volshell.py \
+ --image-dir "${T}/test_images" \
+ -k test_linux_volshell -v
+
+ # unable to get tests working
+ # epytest "${S}/test/plugins/windows/windows.py" \
+ # --volatility=vol.py \
+ # --image "${T}/test_images/win-10_19041-2025_03.dmp" \
+ # -k "test_windows and not test_windows_volshell" -v --durations=0
+ # epytest "${S}/test/plugins/linux/linux.py" \
+ # --volatility=vol.py \
+ # --image-dir "${T}/test_images" \
+ # -k "test_linux and not test_linux_volshell" -v
+}
diff --git a/app-forensics/yara-x/Manifest b/app-forensics/yara-x/Manifest
new file mode 100644
index 000000000000..b34b1aa3eb01
--- /dev/null
+++ b/app-forensics/yara-x/Manifest
@@ -0,0 +1,6 @@
+DIST yara-x-1.14.0-crates.tar.xz 37085572 BLAKE2B c9c5b6b736e6b7b7ddde4282b414bf357462eb295f28123225f388c87cdcd51b9ecff540f98be2bc1d24f3b8aecbf8fc14a0555b6aa31a615a7372d9847dd0e1 SHA512 0e0c97e4021323b539ba6ee27187a9caa084fc5a020673d01d4e86cb18fe7b2cf38bee141f7d89b901ed55e97295d5372f60de38e7f66ca5ddd79f17d5690f68
+DIST yara-x-1.14.0.tar.gz 53590528 BLAKE2B ec4e4a50cb65b2fd1e56466920130ff4425be5ac9ce82d493cfc0462137656c390683a5cd2000ec8e970baf55181943f32d362c7d168a8714219678979e5db84 SHA512 43c1bdcc793ce7d22ae947ad8b397c32eae2e97ef7b7580dcbb6002da92b897e35f3fe797782d01e343a576c666009af2843abd4b98549da0bd4fc4c8166dd13
+DIST yara-x-1.15.0-crates.tar.xz 36337136 BLAKE2B edaf62976cfed38e191fca21e1d8d45fedd32d3e291b5c0f1998995d1d2bdc22ff0993fc08d2772407d556b370d7baf94115ec99f5aeb11902e460b0ebcabfc8 SHA512 26d04ab7c425237cf83202d13c7e1a68ba5982ed41b9334d14527209aafaae080f8649a5127d552ee6b8398a8677175bd1d6d6a6dfb58eb26a7041f9c30fb13c
+DIST yara-x-1.15.0.tar.gz 56858329 BLAKE2B c4de015dfc0ea638d843ce26fc4cdff34a8b958f2fa643f3336ddc37dad3be7538dc2a30c14c2b2e298709a8dc41b4ce14942f6a7da25f2a737770be69ac2955 SHA512 fbe3d37bc59a7bcf018fab4d6ad44ca56a8a2bee07b2bd5ca50b45ba69325e226d737cb7c86dd00596aa44a69738f98ef072fddb590702f7ec5965a219ad6b15
+DIST yara-x-1.16.0-crates.tar.xz 29258360 BLAKE2B 788fa263443f7fd7fd504445677be571328cf7998b58f00b685faed0a70b699ab7620e48a9f1440a0d0128486686cb8639769eb30b79dd797faafd7fd77fda57 SHA512 8f23b25c7be1310f5991d1c8b6c9a51d1700af5858e3c8f9e1b14f43b3b5ee77d73458dcbf999ba45d2b399987fc6022c9cc846958c5f7a2207cddb9919a021e
+DIST yara-x-1.16.0.tar.gz 56884651 BLAKE2B 9464ef1f657fcdd62cdde78aa9a713de18257f91fab66bd6865afb4de5c607df907d4101c815c762530fdcf51e3b7c8b6c89f087342d2b2a830181e41a410566 SHA512 4ff0de59c24de257db1e0410cc901b52373ca0f2bfca5d0a5e310647c848cd59872fe81f8d8fb11ab06bc4bc559b88368fe07583a1d2d7159d0f29265282aeb1
diff --git a/app-forensics/yara-x/metadata.xml b/app-forensics/yara-x/metadata.xml
new file mode 100644
index 000000000000..1d8b2170561e
--- /dev/null
+++ b/app-forensics/yara-x/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ YARA is a tool aimed at (but not limited to) helping malware
+ researchers to identify and classify malware samples. With YARA you can
+ create descriptions of malware families (or whatever you want to
+ describe) based on textual or binary patterns.
+
+ YARA-X is a re-incarnation of YARA rewritten in Rust, eventually
+ replacing YARA.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/yara-x/yara-x-1.14.0.ebuild b/app-forensics/yara-x/yara-x-1.14.0.ebuild
new file mode 100644
index 000000000000..51edf1060d61
--- /dev/null
+++ b/app-forensics/yara-x/yara-x-1.14.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{13..14} )
+RUST_MIN_VER="1.89.0"
+
+CRATES=""
+
+inherit cargo distutils-r1
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara-x/"
+SRC_URI="https://github.com/VirusTotal/yara-x/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://github.com/gentoo-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz"
+
+LICENSE="BSD"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 EPL-2.0 ISC
+ MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016 WTFPL-2 ZLIB
+"
+
+SLOT="0"
+# Note: cranelift dependency only supports amd64, arm64, s390, and riscv64 as of 2025
+KEYWORDS="amd64"
+IUSE="python"
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ python? ( ${PYTHON_DEPS} )
+"
+BDEPEND="
+ python? (
+ ${PYTHON_DEPS}
+ ${DISTUTILS_DEPS}
+ )
+"
+
+wrap_python() {
+ local phase=$1
+ shift
+
+ if use python; then
+ pushd py >/dev/null || die
+ distutils-r1_${phase} "$@"
+ popd >/dev/null || die
+ fi
+}
+
+# https://bugs.gentoo.org/933231, https://bugs.gentoo.org/933232
+QA_FLAGS_IGNORED="usr/bin/yr"
+
+pkg_setup() {
+ # https://bugs.gentoo.org/933233
+ QA_SONAME="usr/$(get_libdir)/libyara_x.*\\.so usr/lib.*/py.*/site-packages/yara_x/yara_x.*\\.so"
+
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+ wrap_python ${FUNCNAME}
+}
+
+src_compile() {
+ cargo_src_compile --workspace
+ wrap_python ${FUNCNAME}
+}
+
+python_test() {
+ epytest
+}
+
+src_test() {
+ export RUST_BACKTRACE=full
+ cargo_src_test
+ wrap_python ${FUNCNAME}
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/yr
+ dolib.so "$(cargo_target_dir)"/*.so
+
+ wrap_python ${FUNCNAME}
+}
diff --git a/app-forensics/yara-x/yara-x-1.15.0.ebuild b/app-forensics/yara-x/yara-x-1.15.0.ebuild
new file mode 100644
index 000000000000..ceede093e4f3
--- /dev/null
+++ b/app-forensics/yara-x/yara-x-1.15.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{13..14} )
+RUST_MIN_VER="1.89.0"
+
+CRATES=""
+
+inherit cargo distutils-r1
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara-x/"
+SRC_URI="https://github.com/VirusTotal/yara-x/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://github.com/gentoo-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz"
+
+LICENSE="BSD"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 EPL-2.0 ISC
+ MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016 WTFPL-2 ZLIB
+"
+
+SLOT="0"
+# Note: cranelift dependency only supports amd64, arm64, s390, and riscv64 as of 2025
+KEYWORDS="~amd64"
+IUSE="python"
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ python? ( ${PYTHON_DEPS} )
+"
+BDEPEND="
+ python? (
+ ${PYTHON_DEPS}
+ ${DISTUTILS_DEPS}
+ )
+"
+
+wrap_python() {
+ local phase=$1
+ shift
+
+ if use python; then
+ pushd py >/dev/null || die
+ distutils-r1_${phase} "$@"
+ popd >/dev/null || die
+ fi
+}
+
+# https://bugs.gentoo.org/933231, https://bugs.gentoo.org/933232
+QA_FLAGS_IGNORED="usr/bin/yr"
+
+pkg_setup() {
+ # https://bugs.gentoo.org/933233
+ QA_SONAME="usr/$(get_libdir)/libyara_x.*\\.so usr/lib.*/py.*/site-packages/yara_x/yara_x.*\\.so"
+
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+ wrap_python ${FUNCNAME}
+}
+
+src_compile() {
+ cargo_src_compile --workspace
+ wrap_python ${FUNCNAME}
+}
+
+python_test() {
+ epytest
+}
+
+src_test() {
+ export RUST_BACKTRACE=full
+ cargo_src_test
+ wrap_python ${FUNCNAME}
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/yr
+ dolib.so "$(cargo_target_dir)"/*.so
+
+ wrap_python ${FUNCNAME}
+}
diff --git a/app-forensics/yara-x/yara-x-1.16.0.ebuild b/app-forensics/yara-x/yara-x-1.16.0.ebuild
new file mode 100644
index 000000000000..14755411ee6a
--- /dev/null
+++ b/app-forensics/yara-x/yara-x-1.16.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{13..14} )
+RUST_MIN_VER="1.91.0"
+
+CRATES=""
+
+inherit cargo distutils-r1
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara-x/"
+SRC_URI="https://github.com/VirusTotal/yara-x/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" https://github.com/gentoo-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz"
+
+LICENSE="BSD"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 EPL-2.0 ISC
+ MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016 WTFPL-2 ZLIB
+"
+
+SLOT="0"
+# Note: cranelift dependency only supports amd64, arm64, s390, and riscv64 as of 2025
+KEYWORDS="amd64"
+IUSE="python"
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ python? ( ${PYTHON_DEPS} )
+"
+BDEPEND="
+ python? (
+ ${PYTHON_DEPS}
+ ${DISTUTILS_DEPS}
+ )
+"
+
+wrap_python() {
+ local phase=$1
+ shift
+
+ if use python; then
+ pushd py >/dev/null || die
+ distutils-r1_${phase} "$@"
+ popd >/dev/null || die
+ fi
+}
+
+# https://bugs.gentoo.org/933231, https://bugs.gentoo.org/933232
+QA_FLAGS_IGNORED="usr/bin/yr"
+
+pkg_setup() {
+ # https://bugs.gentoo.org/933233
+ QA_SONAME="usr/$(get_libdir)/libyara_x.*\\.so usr/lib.*/py.*/site-packages/yara_x/yara_x.*\\.so"
+
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+ wrap_python ${FUNCNAME}
+}
+
+src_compile() {
+ cargo_src_compile --workspace
+ wrap_python ${FUNCNAME}
+}
+
+python_test() {
+ epytest
+}
+
+src_test() {
+ export RUST_BACKTRACE=full
+ cargo_src_test
+ wrap_python ${FUNCNAME}
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/yr
+ dolib.so "$(cargo_target_dir)"/*.so
+
+ wrap_python ${FUNCNAME}
+}
diff --git a/app-forensics/yara/Manifest b/app-forensics/yara/Manifest
new file mode 100644
index 000000000000..80d8d1366978
--- /dev/null
+++ b/app-forensics/yara/Manifest
@@ -0,0 +1,2 @@
+DIST yara-4.5.4.tar.gz 2201555 BLAKE2B 4a3c6c97031b0033be1cc9e3d0436c2def2c732bc3cc6289b8eec58b99336d15eb9d491858ac4744ee05e35fc6cfc61c071947ecc8ad01401d0863968c3aa283 SHA512 b1da40636f9e55bb07cc911479e6dfa8dc7a4fa3f6b9f10b9f669d741d7af51a1d31e044f9842ec3ab9c6ac9788fbdb89a1686c9e3f22f68d1f9e5fb3db22167
+DIST yara-4.5.5.tar.gz 2202497 BLAKE2B c990d2a1ae24cabb9e873b369dc5803157663c996ba8cf327cb12059cb704998f7bc437df2eb8ac9973a163163352cbb19ec5edc0a508a3ee8c25a2733b9a39c SHA512 e71d6e435cb2ad7b5875ccabcfe3abe42e2f37187a22e778867c5c5762134961369c2cbd4bea8da9193d5381af4569e39a50156d4077dc3a23b9a2240b741b60
diff --git a/app-forensics/yara/metadata.xml b/app-forensics/yara/metadata.xml
new file mode 100644
index 000000000000..35619bffd0fc
--- /dev/null
+++ b/app-forensics/yara/metadata.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ YARA is a tool aimed at (but not limited to) helping malware
+ researchers to identify and classify malware samples. With YARA you can
+ create descriptions of malware families (or whatever you want to
+ describe) based on textual or binary patterns.
+ </longdescription>
+ <use>
+ <flag name="cuckoo">Enable cockoo module</flag>
+ <flag name="dex">Enable dex module</flag>
+ <flag name="dotnet">Enable dotnet module</flag>
+ <flag name="macho">Enable macho module</flag>
+ <flag name="magic">Enable magic module</flag>
+ <flag name="profiling">Enable rules profiling</flag>
+ <flag name="python">Pulls in python binding via <pkg>dev-python/yara-python</pkg>
+ </flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:virustotal:yara</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/yara/yara-4.5.4.ebuild b/app-forensics/yara/yara-4.5.4.ebuild
new file mode 100644
index 000000000000..af8966134e93
--- /dev/null
+++ b/app-forensics/yara/yara-4.5.4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara/"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/VirusTotal/yara.git"
+else
+ SRC_URI="https://github.com/virustotal/yara/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${PV/_/-}"
+ KEYWORDS="amd64 ~arm64 ~ppc64 x86"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0/10"
+IUSE="+dex +dotnet +cuckoo +macho +magic profiling python test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-libs/openssl:=
+ cuckoo? ( dev-libs/jansson:= )
+ magic? ( sys-apps/file:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+PDEPEND="python? ( =dev-python/yara-python-$(ver_cut 1)* )"
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ $(use_enable profiling) \
+ $(use_enable cuckoo) \
+ $(use_enable magic) \
+ $(use_enable dotnet) \
+ $(use_enable macho) \
+ $(use_enable dex) \
+ $(use_enable test static)
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ default
+
+ # TODO: Allow tests to work against dyn. lib rather than building
+ # statically just for tests.
+ find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die
+}
diff --git a/app-forensics/yara/yara-4.5.5.ebuild b/app-forensics/yara/yara-4.5.5.ebuild
new file mode 100644
index 000000000000..12d75cd6c3a5
--- /dev/null
+++ b/app-forensics/yara/yara-4.5.5.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara/"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/VirusTotal/yara.git"
+else
+ SRC_URI="https://github.com/virustotal/yara/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${PV/_/-}"
+ KEYWORDS="amd64 ~arm64 ~ppc64 x86"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0/10"
+IUSE="+dex +dotnet +cuckoo +macho +magic profiling python test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-libs/openssl:=
+ cuckoo? ( dev-libs/jansson:= )
+ magic? ( sys-apps/file:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+PDEPEND="python? ( =dev-python/yara-python-$(ver_cut 1)* )"
+
+src_prepare() {
+ default
+
+ sed -i -e "/yara_LDFLAGS = -static/d" Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ $(use_enable profiling) \
+ $(use_enable cuckoo) \
+ $(use_enable magic) \
+ $(use_enable dotnet) \
+ $(use_enable macho) \
+ $(use_enable dex) \
+ $(use_enable test static)
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ default
+
+ # TODO: Allow tests to work against dyn. lib rather than building
+ # statically just for tests.
+ find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die
+}
diff --git a/app-forensics/yara/yara-9999.ebuild b/app-forensics/yara/yara-9999.ebuild
new file mode 100644
index 000000000000..7a5d2e71ff55
--- /dev/null
+++ b/app-forensics/yara/yara-9999.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="A malware identification and classification tool"
+HOMEPAGE="https://virustotal.github.io/yara/"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/VirusTotal/yara.git"
+else
+ SRC_URI="https://github.com/virustotal/yara/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${PN}-${PV/_/-}"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0/10"
+IUSE="+dex +dotnet +cuckoo +macho +magic profiling python test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-libs/openssl:=
+ cuckoo? ( dev-libs/jansson:= )
+ magic? ( sys-apps/file:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+PDEPEND="python? ( =dev-python/yara-python-$(ver_cut 1)* )"
+
+src_prepare() {
+ default
+
+ sed -i -e "/yara_LDFLAGS = -static/d" Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ $(use_enable profiling) \
+ $(use_enable cuckoo) \
+ $(use_enable magic) \
+ $(use_enable dotnet) \
+ $(use_enable macho) \
+ $(use_enable dex) \
+ $(use_enable test static)
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ default
+
+ # TODO: Allow tests to work against dyn. lib rather than building
+ # statically just for tests.
+ find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die
+}
diff --git a/app-forensics/zzuf/Manifest b/app-forensics/zzuf/Manifest
new file mode 100644
index 000000000000..134d8d844623
--- /dev/null
+++ b/app-forensics/zzuf/Manifest
@@ -0,0 +1,2 @@
+DIST zzuf-0.15_p20190208.tar.gz 140812 BLAKE2B 908661fdb51a5b2d5b188ac7df2731c5f069db8489651145f6d4a5cb0f02dc99fa10c3771a034645043f547ef92dfe9e3cfa3f1442dbad690d88ef620f2cfdd8 SHA512 e4d6b4356385642323520c1f1d476b572465881df539d0c6e7110ca7974da81b4b744896df7deac8b462707ca9e0db578ca0c118d6ba2da4bc78ffe31328f711
+DIST zzuf-0.15_p20220529.tar.gz 140825 BLAKE2B a36207082210e062575bed45eac4a83923cbe5f0e60c0b093053ac96abef085a0e6506d5b7db6b11ed7f0979462fbb92f69767ac548de1a1f96a12d84aac8584 SHA512 50e3c8908f579a70d41d7887ff7d87634f3b856ae82bb7ec6dccacccf363a6494d825e0b6debf683ed29408dcd5dc83dbb39c2d2000be0d79aee5f819d69185a
diff --git a/app-forensics/zzuf/files/zzuf-0.15_autoconf-hardcoded-cflags.patch b/app-forensics/zzuf/files/zzuf-0.15_autoconf-hardcoded-cflags.patch
new file mode 100644
index 000000000000..f8cbfa5c7642
--- /dev/null
+++ b/app-forensics/zzuf/files/zzuf-0.15_autoconf-hardcoded-cflags.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -39,8 +39,6 @@
+ AC_MSG_RESULT($SONAME)
+ AC_DEFINE_UNQUOTED(SONAME, "$SONAME", [Define to the libzzuf full name])
+
+-# Optimizations
+-AC_TRY_CFLAGS(-g -O2, CFLAGS="${CFLAGS} -g -O2")
+ # Code qui fait des warnings == code de porc == deux baffes dans ta gueule
+ AC_TRY_CFLAGS(-Wall, CFLAGS="${CFLAGS} -Wall")
+ AC_TRY_CFLAGS(-W, CFLAGS="${CFLAGS} -W")
diff --git a/app-forensics/zzuf/files/zzuf-0.15_autoconf-musl.patch b/app-forensics/zzuf/files/zzuf-0.15_autoconf-musl.patch
new file mode 100644
index 000000000000..0a56a968e84d
--- /dev/null
+++ b/app-forensics/zzuf/files/zzuf-0.15_autoconf-musl.patch
@@ -0,0 +1,24 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -6,6 +6,8 @@
+
+ AC_PREREQ(2.50)
+
++AC_USE_SYSTEM_EXTENSIONS
++
+ AM_PROG_CC_C_O
+ AC_PROG_CPP
+ AC_PROG_LIBTOOL
+@@ -172,6 +174,12 @@
+ AC_TRY_COMPILE(
+ [#define _LARGEFILE64_SOURCE
+ #define _LARGEFILE_SOURCE
++ #include <stdio.h>],
++ [fpos64_t x; long long int y = x.__lldata;],
++ [ac_v_fpos64_t="(x).__lldata"])
++AC_TRY_COMPILE(
++ [#define _LARGEFILE64_SOURCE
++ #define _LARGEFILE_SOURCE
+ #include <stdio.h>],
+ [fpos64_t x; long long int y = (long long int)x;],
+ [ac_v_fpos64_t="(x)"])
diff --git a/app-forensics/zzuf/files/zzuf-0.15_implicit_functions.patch b/app-forensics/zzuf/files/zzuf-0.15_implicit_functions.patch
new file mode 100644
index 000000000000..aa73a6f03d2b
--- /dev/null
+++ b/app-forensics/zzuf/files/zzuf-0.15_implicit_functions.patch
@@ -0,0 +1,32 @@
+--- a/src/libc_fcns.h
++++ b/src/libc_fcns.h
+@@ -0,0 +1,8 @@
++#ifndef _ZZUF_LIBC_FCNS_H
++#define _ZZUF_LIBC_FCNS_H
++
++/* Prototypes for internal libc functions zzuf hooks into */
++extern int __fseeko64(FILE *fp, off64_t offset, int whence);
++extern int _IO_getc(FILE *__fp);
++
++#endif
+--- a/src/libzzuf/lib-stream.c
++++ b/src/libzzuf/lib-stream.c
+@@ -57,6 +57,7 @@
+ #include "debug.h"
+ #include "fuzz.h"
+ #include "fd.h"
++#include "libc_fcns.h"
+
+ #if defined HAVE_FPOS64_T
+ # define FPOS64_T fpos64_t
+--- a/src/zzat.c
++++ b/src/zzat.c
+@@ -51,6 +51,8 @@
+
+ #include "util/getopt.h"
+
++#include "libc_fcns.h"
++
+ static int run(char const *sequence, char const *file);
+ static void output(char const *buf, size_t len);
+
diff --git a/app-forensics/zzuf/files/zzuf-0.15_use-after-free.patch b/app-forensics/zzuf/files/zzuf-0.15_use-after-free.patch
new file mode 100644
index 000000000000..3de95d91608c
--- /dev/null
+++ b/app-forensics/zzuf/files/zzuf-0.15_use-after-free.patch
@@ -0,0 +1,20 @@
+--- a/test/zzone.c
++++ b/test/zzone.c
+@@ -64,14 +64,14 @@
+ last++;
+ }
+
+- free(buf);
+- free(tmp);
+-
+ size_t total = 0;
+ for (size_t i = last; i < size; i++)
+ total += countzeroes(buf[i]);
+ printf("%li\n", (long)total);
+
++ free(buf);
++ free(tmp);
++
+ return EXIT_SUCCESS;
+ }
+
diff --git a/app-forensics/zzuf/metadata.xml b/app-forensics/zzuf/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/app-forensics/zzuf/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-forensics/zzuf/zzuf-0.15_p20190208.ebuild b/app-forensics/zzuf/zzuf-0.15_p20190208.ebuild
new file mode 100644
index 000000000000..e20563debda6
--- /dev/null
+++ b/app-forensics/zzuf/zzuf-0.15_p20190208.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools multilib-minimal
+
+EGIT_COMMIT="e598eef77a98d77dc6aec6fd2c845e3cd07dc4fd"
+DESCRIPTION="Transparent application input fuzzer"
+HOMEPAGE="http://caca.zoy.org/wiki/zzuf"
+SRC_URI="https://github.com/samhocevar/${PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="WTFPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~sparc ~x86"
+
+# Uses dlopen hack to hijack many libc functions.
+# Fails 2 tests with sandbox enabled: check-zzuf-A-autoinc check-utils
+RESTRICT="test"
+
+DOCS=( AUTHORS COPYING TODO )
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.15_autoconf-musl.patch
+)
+
+S="${WORKDIR}"/${PN}-${EGIT_COMMIT}
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE="${S}" econf
+}
+
+multilib_src_install_all() {
+ default
+
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/app-forensics/zzuf/zzuf-0.15_p20220529.ebuild b/app-forensics/zzuf/zzuf-0.15_p20220529.ebuild
new file mode 100644
index 000000000000..8b4f9015fa3c
--- /dev/null
+++ b/app-forensics/zzuf/zzuf-0.15_p20220529.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools multilib-minimal
+
+EGIT_COMMIT="a7111e51eac3086264fcca0c7026de22b5ab55c7"
+DESCRIPTION="Transparent application input fuzzer"
+HOMEPAGE="http://caca.zoy.org/wiki/zzuf"
+SRC_URI="https://github.com/samhocevar/${PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="WTFPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~sparc ~x86"
+
+# Uses dlopen hack to hijack many libc functions.
+# Fails 2 tests with sandbox enabled: check-zzuf-A-autoinc check-utils
+RESTRICT="test"
+
+DOCS=( AUTHORS COPYING TODO )
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.15_autoconf-hardcoded-cflags.patch
+ "${FILESDIR}"/${PN}-0.15_autoconf-musl.patch
+ "${FILESDIR}"/${PN}-0.15_implicit_functions.patch
+ "${FILESDIR}"/${PN}-0.15_use-after-free.patch
+)
+
+S="${WORKDIR}"/${PN}-${EGIT_COMMIT}
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE="${S}" econf
+}
+
+multilib_src_install_all() {
+ default
+
+ find "${ED}" -name '*.la' -delete || die
+}