{ "info": { "author": "Franccesco Orozco", "author_email": "franccesco@codingdose.info", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# GSAN (Get Subject Alternative Names)\n\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/gsan.svg)](https://pypi.org/project/gsan/) [![PyPI](https://img.shields.io/pypi/v/gsan.svg)](https://pypi.org/project/gsan/) [![Build Status](https://travis-ci.org/franccesco/getaltname.svg?branch=master)](https://travis-ci.org/franccesco/getaltname) [![Coverage Status](https://coveralls.io/repos/github/franccesco/getaltname/badge.svg?branch=master)](https://coveralls.io/github/franccesco/getaltname?branch=master) [![GitHub license](https://img.shields.io/github/license/franccesco/getaltname.svg)](https://github.com/franccesco/getaltname/blob/master/LICENSE.md)\n\n\n**GSAN** (**G**et **S**ubject **A**lternative **N**ames) is a tool that can extract [Subject Alternative Names](https://en.wikipedia.org/wiki/Subject_Alternative_Name) found in SSL Certificates **directly** from **HTTPS** web sites which can provide you with DNS names (subdomains) or virtual servers.\n\nThis tool extract subdomain names from http**s** sites and return a list or json output of its findings. It is _**not**_ a subdomain brute-force tool, and you can [actually find those subdomains manually](https://gfycat.com/AnotherDizzyDodobird), this tools is about the automation of that process, it also offers the following features:\n* Input a single **host or Nmap XML file** to scan and return subdomains.\n* **List or JSON output**, useful if you want to export data into other tools.\n* You can _optionally_ **filter out domain names** that doesn't match the domain name that you're analyzing.\n* **Integration with crt.sh** so you can extract more subdomains from certificates of the same entity.\n* Also works with **Self-signed** certificates.\n* **Copy to your clipboard** the domain names as a _list_ or _string_ if you don't want to deal with files, this is also useful for tools that doesn't accept file input.\n\nYou can read more about how this tool works from my post in [getroot.info](https://getroot.info/tip-getaltname/) (in Spanish).\n\n# Usage:\n```\n\n \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557\n \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\n \u2588\u2588\u2551 \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\n \u2588\u2588\u2551 \u2588\u2588\u2551 \u255a\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551\u255a\u2588\u2588\u2557\u2588\u2588\u2551\n \u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2557\u2588\u2588\u2551 \u255a\u2588\u2588\u2588\u2588\u2551\n \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d\u255a\u2550\u255d\u255a\u2550\u255d \u255a\u2550\u255d\u255a\u2550\u255d\u255a\u2550\u255d \u255a\u2550\u2550\u2550\u255d\n\n Get - Subjective - Alternative - Names\n\nusage: gsan [-h] [-p PORT] [-s [timeout]] [-m] [-q] [-o OUTPUT]\n [-f {json,text}] [-c {l,s}] [-d] [-V]\n hostname\n\npositional arguments:\n hostname Host or Nmap XML to analyze.\n\noptional arguments:\n -h, --help show this help message and exit\n -p PORT, --port PORT Destiny port (default 443)\n -s [timeout], --search-crt [timeout] Retrieve subdomains found in crt.sh\n -m, --match-domain Matching domain names only\n -q, --quiet Supress output.\n -o OUTPUT, --output OUTPUT Set output filename\n -f {json,text}, --format {json,text} Set output format\n -c {l,s}, --clipboard {l,s} Copy the output to the clipboard as a\n List or a Single string\n -d, --debug Set debug enable\n -V, --version Print version information.\n```\n\n# Example\nIn this case the tool give you sub-domains that you probably didn't find with a sub-domain brute force tool.\n\n![Example Image](assets/screenshot.png)\n\n# Demo\n*Disclaimer: The tool was renamed from getaltname to GSAN.*\n[![asciicast](https://asciinema.org/a/bYYnK76AQJZFP9hj43e3CUaH5.png)](https://asciinema.org/a/bYYnK76AQJZFP9hj43e3CUaH5)\n\n# Installation\n```bash\n$ pip install --user gsan\n```\n\n# TO-DO\n- [x] File output\n- [x] Output to clipboard\n- [x] Clean sub-domains wildcards\n- [x] Remove duplicates\n- [x] A filter system for main domain and TLD's.\n- [x] Add colors (so l33t. /s)\n- [x] Get additional sub-domains from crt.sh\n- [x] Read Nmap XML and analyze them\n- [x] JSON Output\n- [x] Unit Tests\n- [x] Coverage Reports\n\n# Contributors\n* [**Djerfy**](https://github.com/djerfy) - **JSON output**.\n\n# Contribution Guidelines\nContribution is welcome, just remember:\n* **Fork** the repo.\n* Make changes to the **_develop_** branch.\n* Make a **Pull Request.**\n\n# Support this project\nIf you like the project and would like to support me you can buy me a cup of coffee, you will also be inmortalized as a patreon, thank you \ud83d\ude4f\n\n\n \n \"Buy Buy Me a Coffee at ko-fi.com", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://franccesco.github.io/getaltname/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "gsan", "package_url": "https://pypi.org/project/gsan/", "platform": "", "project_url": "https://pypi.org/project/gsan/", "project_urls": { "Homepage": "https://franccesco.github.io/getaltname/" }, "release_url": "https://pypi.org/project/gsan/3.0.14/", "requires_dist": null, "requires_python": "~=3.4", "summary": "Extract subdomains from HTTPS sites", "version": "3.0.14" }, "last_serial": 5165965, "releases": { "3.0.13": [ { "comment_text": "", "digests": { "md5": "f8364ff6a1a77a4177619a04871769d4", "sha256": "410b8d71713d4f32f30ecea3f66c70aff80bae649e3a71f470b4c1acd27f1bdd" }, "downloads": -1, "filename": "gsan-3.0.13.tar.gz", "has_sig": false, "md5_digest": "f8364ff6a1a77a4177619a04871769d4", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 10680, "upload_time": "2019-02-21T05:34:04", "url": "https://files.pythonhosted.org/packages/eb/23/08a6a8088e58b9de2b0144e1af6d997f096ead00b98522248bd925970a93/gsan-3.0.13.tar.gz" } ], "3.0.14": [ { "comment_text": "", "digests": { "md5": "723ec8ce63e1b8a78776867b8ee82712", "sha256": "09dbf0aab6c6d7b360ae4c102be5d349a3245d59e4f4015ced04b6061a66354e" }, "downloads": -1, "filename": "gsan-3.0.14.tar.gz", "has_sig": false, "md5_digest": "723ec8ce63e1b8a78776867b8ee82712", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 10681, "upload_time": "2019-04-19T19:54:50", "url": "https://files.pythonhosted.org/packages/41/d3/97d04dedfe956e4fb3b6c3fa6b7c08428300730cad7f206ff568dab61922/gsan-3.0.14.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "723ec8ce63e1b8a78776867b8ee82712", "sha256": "09dbf0aab6c6d7b360ae4c102be5d349a3245d59e4f4015ced04b6061a66354e" }, "downloads": -1, "filename": "gsan-3.0.14.tar.gz", "has_sig": false, "md5_digest": "723ec8ce63e1b8a78776867b8ee82712", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 10681, "upload_time": "2019-04-19T19:54:50", "url": "https://files.pythonhosted.org/packages/41/d3/97d04dedfe956e4fb3b6c3fa6b7c08428300730cad7f206ff568dab61922/gsan-3.0.14.tar.gz" } ] }