Skip to main content

Automated tool for detecting dangling commits and secrets in GitHub repos.

Project description

🔍 shadowGIT

Automated detection of dangling commits in Git repositories

Python 3.11+ Version License

Identifies commits that were force-pushed away but remain accessible, potentially exposing sensitive data.


✨ Features

  • 🔎 Repository Scanning - Scan specific repositories for dangling commits
  • 👤 User Activity Analysis - Scan all repositories for a GitHub user
  • 📊 JSON Output - Machine-readable output format
  • 🚀 Fast & Efficient - Quick detection of exposed commits
  • 🔒 Security Focused - Helps identify potential secret leaks

📦 Installation

pip install shadowgit

🚀 Quick Start

Scan a specific repository

shadowGIT github -r owner/repo

Scan all repositories for a user

shadowGIT github -u username

JSON output format

shadowGIT github -r owner/repo --json
shadowGIT github -u username --json

📋 Output Examples

Standard Output

[+] Scanning GitHub repo: owner/repo
[!] Found dangling commit: 0ae67fe748e0b6ca52066e76611f4237a0ace744

JSON Output

{
  "repository": "owner/repo",
  "commit_sha": "0ae67fe748e0b6ca52066e76611f4237a0ace744",
  "author": {
    "name": "Author Name",
    "email": "author@example.com"
  },
  "message": "Commit message",
  "secrets_found": [],
  "url": "https://github.com/owner/repo/commit/0ae67fe748e0b6ca52066e76611f4237a0ace744"
}

🔧 How It Works

shadowGIT analyzes GitHub push events and checks if commits are still accessible via branch history. Commits that were force-pushed away but remain in the repository are flagged as dangling commits.

The tool detects commits that show GitHub's spoofed commit warning, indicating they exist in the repository but are not part of any branch's history.

📋 Requirements

  • Python 3.11 or higher
  • GitHub API access (no authentication required for public repositories)

📝 License

MIT License - see LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shadowgit-0.1.2.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shadowgit-0.1.2-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file shadowgit-0.1.2.tar.gz.

File metadata

  • Download URL: shadowgit-0.1.2.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shadowgit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3ed988ae4b3dc2512274369f66e9927f6cf047f49ffa0efd9ce7c86e0f8d34a4
MD5 f0a15a86cf9dba4c57f897b8f96d9fd9
BLAKE2b-256 a4da8b40c01b46f3f51ce518ee8b4a27d8d6de82a4b6cec1b47b6a946870767b

See more details on using hashes here.

Provenance

The following attestation bundles were made for shadowgit-0.1.2.tar.gz:

Publisher: release.yml on 0xCardinal/shadowGIT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shadowgit-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: shadowgit-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shadowgit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9860918876e3d45236876de7ce2f750b228dddcf1152ab42a327cb7f23b3a9a1
MD5 a766681e8f53fe2676140cc9e3f4f4ab
BLAKE2b-256 8612aa4c50f287cc884edbf6eda07c6711de893800887f4be82fdd935826afcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for shadowgit-0.1.2-py3-none-any.whl:

Publisher: release.yml on 0xCardinal/shadowGIT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page