A program that can be used to search through github using its REST API with PyGithub python library
Find a file
2025-02-22 19:19:28 +00:00
.env.sample beginnings of a github searcher program 2024-08-26 11:16:40 -05:00
docker-compose.yml update with better documentation and ability to search by repo name 2025-01-21 10:10:12 -06:00
Dockerfile beginnings of a github searcher program 2024-08-26 11:16:40 -05:00
github_searcher.py testing adding a comment on new git instance 2025-02-22 19:19:28 +00:00
README.md readme update 2025-01-21 10:16:38 -06:00

GitHub Searcher

GitHub Searcher is a command-line tool to search GitHub repositories and users for PoC exploits and CVEs. It supports various search types and can output results in JSON format.

Features

  • Search GitHub repositories by query.
  • Search GitHub users by query.
  • Search within repository names.
  • Retrieve open issues and pull requests for repositories.
  • Retrieve file contents for repositories.
  • Output results in JSON format.

Requirements

  • Python 3.x
  • PyGithub library

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/github_searcher.git
    cd github_searcher
    
  2. Install the required dependencies:

    pip install PyGithub
    
  3. Set the GITHUB_ACCESS_TOKEN environment variable with your GitHub access token:

    export GITHUB_ACCESS_TOKEN=your_access_token
    

Usage

python github_searcher.py --query QUERY --search_type SEARCH_TYPE [--get_file_contents] [--get_open_issues] [--get_open_pull_requests] [--json]

Arguments

  • --query: The search query (required).
  • --search_type: The type of search to perform (required). Choices are:
    • repo: Search repositories.
    • users: Search users.
    • in-repo-name: Search within repository names.
  • --get_file_contents: Get the contents of repository results (optional).
  • --get_open_issues: Get the open issues of repository results (optional).
  • --get_open_pull_requests: Get the open pull requests of repository results (optional).
  • --json: Output the results in JSON format (optional).

Examples

  1. Search repositories with a query:

    python github_searcher.py --query "machine learning" --search_type repo
    
  2. Search users with a query:

    python github_searcher.py --query "john doe" --search_type users
    
  3. Search within repository names:

    python github_searcher.py --query "tensorflow" --search_type in-repo-name
    
  4. Get open issues and pull requests for repositories:

    python github_searcher.py --query "machine learning" --search_type repo --get_open_issues --get_open_pull_requests
    
  5. Output results in JSON format:

    python github_searcher.py --query "machine learning" --search_type repo --json
    
  6. Use Docker Compose to search for a specific CVE-ID and output results to a file:

    docker-compose run --rm app python3 /usr/src/app/github_searcher.py --query=CVE-2024-5932 --search_type=in-repo-name --get_open_issues --get_open_pull_requests --get_file_contents --json > cve-2024-5932
    
  7. Search for a specific repository by name and get open issues:

    python github_searcher.py --query "torvalds/linux" --search_type in-repo-name --get_open_issues
    
  8. Search for a specific repository by name and get open pull requests:

    python github_searcher.py --query "apple/swift" --search_type by-repo-name --get_open_pull_requests
    
  9. Search for a specific repository by name and get file contents:

    python github_searcher.py --query "microsoft/vscode" --search_type by-repo-name --get_file_contents
    
  10. Search for a specific repository by name and output results in JSON format:

    python github_searcher.py --query "facebook/react" --search_type by-repo-name --json
    

Output

The output will include the following details based on the flags provided:

  • Repository URL: The URL of the repository.
  • Open Issues: A list of open issues with their titles and URLs.
  • Open Pull Requests: A list of open pull requests with their titles and URLs.
  • File Contents: A list of file contents with their names, SHAs, sizes, encodings, and URLs.

License

This project is licensed under the MIT License.