athena
β View on GitHubAI Summary: Athena OS is a penetration testing operating system designed for InfoSec professionals, bug bounty hunters, and cybersecurity enthusiasts. It features automated package updates through GitHub Actions, maintains a collection of security tools, and offers Docker container support, enhancing accessibility and usability for various security assessments. Notably, it provides a user-friendly experience for both seasoned professionals and newcomers in the field of cybersecurity.
README
Dive into a new Pentesting Experience with
Athena OS
π Born for InfoSec Professionals, Bug Bounty Hunters, Passionate Students and Spicy Hackersπ
π Get Athena OS Now! π
Click Docker icon above to explore Athena OS Docker containers!
Click the icon above to explore Athena OS WSL in Microsoft Store App!
Automated Package Updates
Packages in this repository are kept up to date automatically via a daily GitHub Actions workflow powered by nvchecker.
How it works
The automation runs every day (and can also be triggered manually) and goes through the following steps:
Config generation β
.nvchecker/generate-nvchecker-config.pyscans everyPKGBUILDundersrc/and auto-generates.nvchecker/nvchecker.toml. Each package is classified as one of:- Release package β has a static
pkgver=and a remote source URL. Tracked by latest tag/release on the hosting platform. - VCS package β has a
pkgver()function and agit+https://source. Tracked by latest upstream commit. - Local-only package β all sources are local files. Skipped silently (no upstream to track).
- Release package β has a static
Version check β
nvcheckerqueries the upstream of every tracked package and writes the results to.nvchecker/newver.json. This is compared against.nvchecker/oldver.json(committed in the repo) to find packages that have a new version available.PKGBUILD update & PR β for each outdated package the workflow:
- Creates a dedicated branch
auto-update/<pkgname>-<newver>. - Updates
pkgverand resetspkgrelto1in thePKGBUILD. - For release packages: regenerates checksums with
updpkgsums. - For VCS packages: clones the upstream repo, runs the
pkgver()function locally to compute the real Arch-style version string (e.g.131.940a5d3), and keepssha512sums=('SKIP')as is. - Opens a pull request labelled
auto-updatefor human review before anything lands onmain.
- Creates a dedicated branch
State save β
.nvchecker/oldver.jsonis updated with the versions seen in this run and committed back tomain, so the next run only opens PRs for genuinely new changes.
Supported hosting platforms
| Platform | Detection |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + self-hosted) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (self-hosted) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
Shell variable expansion in PKGBUILDs
The config generator and the CI workflow both resolve shell variable references in source= lines so that indirect URLs like the following are handled correctly:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
The following bash parameter expansion forms are supported:
| Syntax | Meaning | Example |
|---|---|---|
$var / ${var} | Simple substitution | $pkgname β athena-settings |
${var#prefix} | Strip shortest matching prefix | ${pkgname#athena-} β settings |
${var%suffix} | Strip shortest matching suffix | ${pkgname%-git} β athena-settings |
Known limitations
The following bash constructs are not resolved by the automation. PKGBUILDs that rely on them will be skipped gracefully with an informational note β no error is raised, and they can always be updated manually.
| Unsupported syntax | Example | Reason |
|---|---|---|
## greedy prefix strip | ${var##*/} | Only non-greedy # is implemented |
%% greedy suffix strip | ${var%%.*} | Only non-greedy % is implemented |
| Substring extraction | ${var:0:3} | Different operator, rare in PKGBUILDs |
| Pattern substitution | ${var//foo/bar} | Different operator, rare in PKGBUILDs |
| Arithmetic expansion | $((pkgver + 1)) | Out of scope for version tracking |
| Nested expansions | ${${var}#prefix} | Not valid POSIX; not used in practice |
If your PKGBUILD uses any of the above and the automation skips it, you can either rewrite the assignment as a plain var=value line or open a PR updating the version manually.
