commit 7e1374af32c9e2609a0d14fde71192b80a16cb06 Author: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Mon Mar 16 21:07:36 2026 +0100 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cd791b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7ce7478 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Hadi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3cb7b1d --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# NUR OSINT + +> A [NUR](https://github.com/nix-community/NUR) repository packaging OSINT tools for Nix. + +## Packages + +| Package | Description | Source | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | +| `github-recon` | Retrieves and aggregates public OSINT data about a GitHub user using Go and the GitHub API. Finds hidden emails in commit history, previous usernames, friends, other GitHub accounts, and more. | [anotherhadi/github-recon](https://github.com/anotherhadi/github-recon) | +| `toutatis` | Toutatis is a tool that allows you to extract information from instagrams accounts such as e-mails, phone numbers and more | [megadose/toutatis](https://github.com/megadose/toutatis) | +| `ignorant` | ignorant allows you to check if a phone number is used on different sites like snapchat, instagram. | [megadose/ignorant](https://github.com/megadose/ignorant) | + +More tools coming soon. + +## Usage + +### With Flakes + +Add this repo as an input in your `flake.nix`: + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nur-osint.url = "github:anotherhadi/nur-osint"; + }; + + outputs = { nixpkgs, nur-osint, ... }: { + # Or add to your system packages + environment.systemPackages = [ + nur-osint.packages.${system}.toutatis + ]; + }; +} +``` + +Or just run a tool without adding it to your config: + +```bash +nix run github:anotherhadi/nur-osint#toutatis -- --help +``` + +### With NUR (non-flake) + +Packages are available as: + +```nix +# configuration.nix +environment.systemPackages = [ + pkgs.nur.repos.anotherhadi.toutatis +]; +``` + +### Overlay + +You can also use the provided overlay to make the packages available in your nixpkgs instance: + +```nix +nixpkgs.overlays = [ nur-osint.overlays.default ]; +# then use pkgs.toutatis as usual +``` + +## License + +The Nix expressions in this repository are released under the [MIT License](LICENSE). +Each packaged tool retains its own upstream license. diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..2e22ffe --- /dev/null +++ b/default.nix @@ -0,0 +1,5 @@ +{pkgs ? import {}}: { + toutatis = pkgs.python3Packages.callPackage ./pkgs/toutatis {}; + ignorant = pkgs.python3Packages.callPackage ./pkgs/ignorant {}; + github-recon = pkgs.callPackage ./pkgs/github-recon {}; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9bb7806 --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1773646010, + "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b358c22 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + description = "OSINT tools packaged for Nix — NUR repo"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + outputs = { + self, + nixpkgs, + }: let + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + + forAllSystems = nixpkgs.lib.genAttrs systems; + + packagesFor = system: + import ./default.nix {pkgs = nixpkgs.legacyPackages.${system};}; + in { + packages = forAllSystems ( + system: + (packagesFor system) + // { + default = (packagesFor system).toutatis; + } + ); + + overlays.default = final: _prev: + import ./default.nix {pkgs = final;}; + }; +} diff --git a/pkgs/github-recon/default.nix b/pkgs/github-recon/default.nix new file mode 100644 index 0000000..eca814f --- /dev/null +++ b/pkgs/github-recon/default.nix @@ -0,0 +1,35 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, +}: +buildGoModule rec { + pname = "github-recon"; + version = "1.5.3"; + + src = fetchFromGitHub { + owner = "anotherhadi"; + repo = "github-recon"; + rev = "v${version}"; + hash = "sha256-oHzXuxf4sikMcR+rB/1QZQytoNpFt9ZLMohWO4ZbK+0="; + }; + + vendorHash = "sha256-AD0h0k2n8gPqSBz5qqb0ZON/jWiSEWpeO97xR7cYSy8="; + + subPackages = ["cmd"]; + + ldflags = ["-s" "-w"]; + + postInstall = '' + mv $out/bin/cmd $out/bin/github-recon + ''; + + meta = with lib; { + description = "Retrieves and aggregates public OSINT data about a GitHub user using Go and the GitHub API. Finds hidden emails in commit history, previous usernames, friends, other GitHub accounts, and more."; + homepage = "https://github.com/anotherhadi/github-recon"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = []; + mainProgram = "github-recon"; + }; +} diff --git a/pkgs/ignorant/default.nix b/pkgs/ignorant/default.nix new file mode 100644 index 0000000..eda0ef1 --- /dev/null +++ b/pkgs/ignorant/default.nix @@ -0,0 +1,51 @@ +{ + lib, + buildPythonApplication, + fetchFromGitHub, + setuptools, + termcolor, + beautifulsoup4, + httpx, + trio, + tqdm, +}: +buildPythonApplication rec { + pname = "ignorant"; + version = "unstable-2026-03-15"; + + pyproject = true; + + src = fetchFromGitHub { + owner = "megadose"; + repo = "ignorant"; + rev = "40b3eb734ef3d55e6d16eb314e49dbf520fa1f64"; + hash = "sha256-t/xFRII7XKeK7sIG87UbVGiKIdJ9ag7VHFHfNg8BbUs="; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace-fail '"argparse",' "" \ + --replace-fail '"bs4",' '"beautifulsoup4",' + ''; + + build-system = [setuptools]; + + dependencies = [ + termcolor + beautifulsoup4 + httpx + trio + tqdm + ]; + + doCheck = false; + + meta = with lib; { + description = "ignorant allows you to check if a phone number is used on different sites like snapchat, instagram."; + homepage = "https://github.com/megadose/ignorant"; + license = licenses.gpl3Only; + platforms = platforms.all; + maintainers = []; + mainProgram = "ignorant"; + }; +} diff --git a/pkgs/toutatis/default.nix b/pkgs/toutatis/default.nix new file mode 100644 index 0000000..dbb950a --- /dev/null +++ b/pkgs/toutatis/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonApplication, + fetchFromGitHub, + setuptools, + requests, + phonenumbers, + pycountry, +}: +buildPythonApplication rec { + pname = "toutatis"; + version = "unstable-2026-03-15"; + pyproject = true; + + src = fetchFromGitHub { + owner = "megadose"; + repo = "toutatis"; + rev = "d99967155e59966a560877148273ca0ff9f28508"; + hash = "sha256-VY3g3LNfeQtCuQfM4Ky1akJ7YgLrNM9RnuC1M8eOw4c="; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace-fail '"argparse",' "" + ''; + + build-system = [setuptools]; + + dependencies = [ + requests + phonenumbers + pycountry + ]; + + doCheck = false; + + meta = with lib; { + description = "Toutatis is a tool that allows you to extract information from instagrams accounts such as e-mails, phone numbers and more"; + homepage = "https://github.com/megadose/toutatis"; + license = licenses.gpl3Only; + platforms = platforms.all; + maintainers = []; + mainProgram = "toutatis"; + }; +}