๐Ÿ•ต๏ธโ€โ™‚๏ธ Investigate Google Accounts with emails.

Overview

screenshot

Python minimum version

Docker Cloud Build Status GitHub Workflow Status

Description

GHunt is an OSINT tool to extract information from any Google Account using an email.

It can currently extract:

  • Owner's name
  • Last time the profile was edited
  • Google ID
  • If the account is a Hangouts Bot
  • Activated Google services (YouTube, Photos, Maps, News360, Hangouts, etc.)
  • Possible YouTube channel
  • Possible other usernames
  • Google Maps reviews (M)
  • Possible physical location (M)
  • Events from Google Calendar (C)
  • Public photos (P)
  • Phones models (P)
  • Phones firmwares (P)
  • Installed softwares (P)

The features marked with a (P) require the target account to have the default setting of Allow the people you share content with to download your photos and videos on the Google AlbumArchive, or if the target has ever used Picasa linked to their Google account.
More info here.

Those marked with a (M) require the Google Maps reviews of the target to be public (they are by default).

Those marked with a (C) requires user to have Google Calendar set on public (default it is closed)

Screenshots

๐Ÿ“ฐ Latest news

  • 02/10/2020 : Since few days ago, Google return a 404 when we try to access someone's Google Photos public albums, we can only access it if we have a link of one of his albums.
    Either this is a bug and this will be fixed, either it's a protection that we need to find how to bypass.
  • 03/10/2020 : Successfully bypassed. ๐Ÿ•บ (commit 01dc016)
    It requires the "Profile photos" album to be public (it is by default)
  • 20/10/2020 : Google WebArchive now returns a 404 even when coming from the "Profile photos" album, so the photos scraping is temporary (or permanently) disabled. (commit e762543)
  • 25/11/2020 : Google now removes the name from the Google Maps profile if the user has 0 reviews (or contributions, even private). I did not find a bypass for the moment, so all the help in the research of a bypass is appreciated.

Installation

Docker

The Docker image is automatically built and push on Dockerhub after each push on this repo.
You can pull the Docker image with:

docker pull mxrch/ghunt

Then, any of the scripts can be invoked through:

docker run -v ghunt-resources:/usr/src/app/resources -ti mxrch/ghunt check_and_gen.py
docker run -v ghunt-resources:/usr/src/app/resources -ti mxrch/ghunt hunt.py <email_address>

Manual installation

  • Make sure you have Python 3.7+ installed. (I developed it with Python 3.8.1)
  • Some Python modules are required which are contained in requirements.txt and will be installed below.

1. Chromedriver & Google Chrome

This project uses Selenium and automatically downloads the correct driver for your Chrome version.
โš ๏ธ So just make sure to have Google Chrome installed.

2. Requirements

In the GHunt folder, run:

python -m pip install -r requirements.txt

Adapt the command to your operating system if needed.

Usage

For the first run and sometimes after, you'll need to check the validity of your cookies.
To do this, run check_and_gen.py.
If you don't have cookies stored (ex: first launch), you will be asked for the 5 required cookies. If they are valid, it will generate the Authentication token and the Google Docs & Hangouts tokens.

Then, you can run the tool like this:

python hunt.py [email protected]

โš ๏ธ I suggest you make an empty account just for this or use an account where you never login because depending on your browser/location, re-logging in into the Google Account used for the cookies can deauthorize them.

Where I find these 5 cookies ?

  1. Log in to accounts.google.com
  2. After that, open the Dev Tools window and navigate to the Storage tab (Shift + F9 on Firefox) (It's called "Application" on Chrome)
    If you don't know how to open it, just right-click anywhere and click "Inspect Element".
  3. Then you'll find every cookie you need, including the 5 ones.

cookies

๐Ÿ›ก๏ธ Protecting yourself

Regarding the collection of metadata from your Google Photos account:

Given that Google shows "X require access" on your Google Account Dashboard, you might imagine that you had to explicitly authorize another account in order for it to access your pictures; but this is not the case.
Any account can access your AlbumArchive (by default):

account-dashboard

Here's how to check and fix the fact that you're vulnerable (which you most likely are):
Go to https://get.google.com/albumarchive/ while logged in with your Google account. You will be automatically redirected to your correct albumarchive URL (https://get.google.com/albumarchive/YOUR-GOOGLE-ID-HERE). After that, click the three dots on the top left corner, and click on setting

three-dots-setting

Then, un-check the only option there:

setting

On another note, the target account will also be vulnerable if they have ever used Picasa linked to their Google account in any way, shape or form. For more details on this, read PinkDev1's comment on issue #10.
For now, the only (known) solution to this is to delete the Picasa albums from your AlbumArchive.

Thanks

This tool is based on Sector's research on Google IDs and completed by my own as well.
If I have the motivation to write a blog post about it, I'll add the link here !

Comments
  • Error while retrieving photos in wait.until(element_has_substring_or_substring((By.XPATH,

    Error while retrieving photos in wait.until(element_has_substring_or_substring((By.XPATH, "//body")

    With b1a2a56ba9d15d0990fc6d4256493d6f2777c555

    Google Photos : XXX
    Traceback (most recent call last):              
      File "hunt.py", line 114, in <module>
        gpics(gaiaID, client, cookies, cfg)
      File "/GHunt/lib/photos.py", line 97, in gpics
        out = get_source(gaiaID, client, cookies, cfg)
      File "/GHunt/lib/photos.py", line 82, in get_source
        result = wait.until(element_has_substring_or_substring((By.XPATH, "//body"), photos_trigger, no_photos_trigger))
      File "/home/xxx/.local/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
        raise TimeoutException(message, screen, stacktrace)
    selenium.common.exceptions.TimeoutException: Message: 
    
    
    bug 
    opened by mahdi1234 20
  • Dockerize (fixes #7)

    Dockerize (fixes #7)

    A basic dockerization. Some notes:

    • An user could be created so that the script is executed by a non-root. Decided to keep it easy for now.
    • The data.txt should now be under the resources/ folder so that it's easier to mount to Docker.
    • Removed the hardcoded data.txt and moved it to the cfg dict.
    • This will become way more useful if a GitHub action or any other CI/CD builds it and publishes it to Docker Hub so people can just pull and use it instead of having to build it.

    Cheers!

    enhancement 
    opened by outime 16
  • This email address does not belong to a Google Account

    This email address does not belong to a Google Account

    Hi there @mxrch and team and thank you for your work on this tool.

    TL;DR: the tool reports that my cookies are fine and then it reports that given email doesn't belong to a google account (as per topic). I may be doing something wrong, but after encountering the tool I have done the following:

    1. docker pull
    2. ran hunt - learned about the cookies
    3. got cookies from the account page (so I have the account, at least on accounts.google.com)
    4. ran the check_and_gen script, which said cookies I gave it are valid
    5. reran the hunt tool - got the titular message

    There were no errors, no warnings:

    
         .d8888b.  888    888                   888    
        d88P  Y88b 888    888                   888    
        888    888 888    888                   888    
        888        8888888888 888  888 88888b.  888888 
        888  88888 888    888 888  888 888 "88b 888    
        888    888 888    888 888  888 888  888 888    
        Y88b  d88P 888    888 Y88b 888 888  888 Y88b.  
         "Y8888P88 888    888  "Y88888 888  888  "Y888
        
    [-] This email address does not belong to a Google Account.
    

    I used FF to get the cookies, am using freshest Docker image with the tool, am running Ubuntu OS. Any pointers?

    stale 
    opened by LIttleAncientForestKami 14
  • [Not an issue] TODO LIST & Discord for researches

    [Not an issue] TODO LIST & Discord for researches

    Docker

    • โœ… Link Dockerhub to automate the Docker image build
    • โœ… Adapt the Docker build in the Readme for Windows users too

    Features

    • โœ… Not load cookies by default in Google Photos & Google Maps & Youtube to have a public view and avoiding seeing private informations if we test with our own email. Gonna add options in config.py to load them.
    • โœ… (just write for the moment) Add a check to know if the target has a default profile picture or not, and if not, maybe open the image in a new window (will obviously not work on systems with no graphical display like Linux VPS) or find a way to print it directly in the terminal (but can cause incompatibility between terminals), or just print the link. I'll think about what we can do and what's better.
    • โœ… Adding the target's Google Calendar if it is in public (it is not by default)
    • โœ… Adding support to use scripts from outside the GHunt directory (issue #25)
    • Adding the extraction of the phone model associated to the Google Account, in the Password Forgot steps. Without Selenium it is a little hard but I'm studying it, it works with the same type of challenges used in the login, and a code is generated in the requests to let us access it. I already found how to generate the code per accounts, now I'm searching how to activate it, to then just go on the page with the right code activated, which always starts with "AM3QAY", you'll notice it easily. It's the "TL" parameter in the URL. Sometimes Google send a notification in the target's phone when we start the recovery procedure, so this eventual feature will be deactivated by default.
    • Adding the last Youtube activity with some stats, and extracts maybe the last 15 comments to analyze them with the JigSaw Perspective API (Jigsaw is a Google division) and calculating the aggressivity of the target.

    I'm also thinking about creating a Discord for the reverse-engineering and trying to dig together in the Google code, and why not communicate between the contributors. Let me know what do you think about the Discord or one of the element in the list !

    (PS: I just write this to-do so people know what is planned, to avoid issues like #75 )

    enhancement stale 
    opened by mxrch 14
  • Selenium TimeoutException has occured error ???

    Selenium TimeoutException has occured error ???

    "[!] Selenium TimeoutException has occured. Please check your internet connection, proxies, vpns, et cetera." error when i write cookies. Please help me.

    opened by haszimoto 13
  • TypeError: init() got an unexpected keyword argument 'options'

    TypeError: init() got an unexpected keyword argument 'options'

    GHunt$ sudo python3 check_and_gen.py [-] No stored cookies found

    Enter these browser cookies found at accounts.google.com :
    _Secure-3PSID => 2gfQYh2qGqQzMbOYH-vdik8MeFcTOrBgJ_xdmGXd1WZs
    APISID => qKMvZCwrVnExLNVsPYY5Yav2d SAPISID => DCVQhAXmgc-YgqvSFq8hiZKt HSID => ArJEblPhvcg1a

    [+] The cookies seems valid! Generating the Google Docs and Hangouts token...

    Google Docs Token => AC4w5ViFnxm5Wvoafbu_jhoSg:160313810 Traceback (most recent call last): File "check_and_gen.py", line 126, in auth_token, hangouts_token = get_hangouts_tokens(cookies, driverpath) File "check_and_gen.py", line 61, in get_hangouts_tokens driver = webdriver.Chrome( File "/usr/local/lib/python3.8/dist-packages/seleniumwire/webdriver/browser.py", line 86, in init super().init(*args, **kwargs) TypeError: init() got an unexpected keyword argument 'options'

    can you help?

    opened by shanow7 13
  • Added disclaimer/explanation for some features on README.md & Code analisys with CodeQL

    Added disclaimer/explanation for some features on README.md & Code analisys with CodeQL

    In a nutshell:

    • Exposed accounts must change a default setting to stop being exposed.
    • Accounts that used Picasa are hopeless.

    Read commit details, and file changes for insight.

    opened by ItsIgnacioPortal 12
  • Have to go to GHunt directory to run hunt.py or check_and_gen.py

    Have to go to GHunt directory to run hunt.py or check_and_gen.py

    I set up GHunt by cloning this repo, copying chromedriver to GHunt directory and generating a working data.txt. After that, I made 2 aliases:

    alias ghunt='python3 <path-to-hunt.py>'
    alias ghunt-gen='python3 <path-to-check_and_gen.py>'
    

    but these aliases won't work unless I call them in the GHunt directory, otherwise Ghunt would complain about missing chromedriver or cookies.

    Maybe it would be a good idea if Ghunt can fallback to use config in a dedicated config dir like ~/.config/GHunt or the dir which hunt.py is located in?

    enhancement 
    opened by tddschn 12
  • problem with check_and_gen.py , I think I don't have the hangout token

    problem with check_and_gen.py , I think I don't have the hangout token

    after putting the cookies, I had this problem

    [+] The cookies seems valid !
    Generating the Google Docs and Hangouts token...
    
    Google Docs Token => AC4w5VhWhxu9Y09gB6ZhOlcrRsb8KPGYZQ:1616189634244
    Traceback (most recent call last):
      File "check_and_gen.py", line 159, in <module>
        auth_token, hangouts_token = get_hangouts_tokens(cookies, driverpath)
      File "check_and_gen.py", line 68, in get_hangouts_tokens
        driver = webdriver.Chrome(
      File "/home/luc/.local/lib/python3.8/site-packages/seleniumwire/webdriver/browser.py", line 96, in __init__
        super().__init__(*args, **kwargs)
      File "/home/luc/.local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
        self.service.start()
      File "/home/luc/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 98, in start
        self.assert_process_still_running()
      File "/home/luc/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 109, in assert_process_still_running
        raise WebDriverException(
    selenium.common.exceptions.WebDriverException: Message: Service /home/luc/GHunt/chromedriver unexpectedly exited. Status code was: 127
    
    opened by luckyshark05 11
  • Cookie issue

    Cookie issue

    After copying the values asked by the script and putting them in i get "Seems like the cookies are invalid, try regenerating them." Despite doing this several times. Any help?

    help wanted 
    opened by teemeupyo 11
  • KeyError In program

    KeyError In program

    Traceback (most recent call last):
      File "hunt.py", line 117, in <module>
        confidence, locations = gmaps.get_confidence(reviews, cfg)
      File "C:\Users\hamza\Desktop\GHunt\lib\gmaps.py", line 233, in get_confidence
        location = sanitize_location(location)
      File "C:\Users\hamza\Desktop\GHunt\lib\utils.py", line 29, in sanitize_location
        town = location["municipality"]
    KeyError: 'municipality'
    
    bug 
    opened by ryzbaka 11
  • better version of load_endpoints func

    better version of load_endpoints func

    I moved the update of the headers dictionary to the beginning of the function, to avoid creating a new dictionary on each iteration of the loop. I replaced the ext_bin_headers dictionary comprehension with a regular loop and an update to the headers dictionary, which should be faster than creating a new dictionary. I replaced the ** operator with the update() method to merge the dictionaries, which is generally faster than using the ** operator.

    opened by geareo 0
  • wrong default profile detection

    wrong default profile detection

    sometimes the default profile picture detection gives incorrect results, i entered my own email (i have default pic) and ghunt told me that i have custom profile picture. additionally i tested another email that have custom profile picture and ghunt told that is default picture

    opened by sk3lk0 0
  • httpx.ConnectError

    httpx.ConnectError

    I get the following error when running ghunt gaia [TARGET GAIA ID] from the terminal, any ideas of what the problem might be?

    Traceback (most recent call last): File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_ssl.py", line 468, in _retry ret = fn(*args) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/ssl.py", line 974, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions yield File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/backends/trio.py", line 80, in start_tls raise exc File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/backends/trio.py", line 77, in start_tls await ssl_stream.do_handshake() File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_ssl.py", line 640, in do_handshake await self._handshook.ensure(checkpoint=True) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_ssl.py", line 221, in ensure await self._afn(*self._args) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_ssl.py", line 610, in _do_handshake await self._retry(self._ssl_object.do_handshake, is_handshake=True) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_ssl.py", line 473, in _retry raise trio.BrokenResourceError from exc trio.BrokenResourceError

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_transports/default.py", line 60, in map_httpcore_exceptions yield File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_transports/default.py", line 353, in handle_async_request resp = await self._pool.handle_async_request(req) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_async/connection_pool.py", line 253, in handle_async_request raise exc File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_async/connection_pool.py", line 237, in handle_async_request response = await connection.handle_async_request(request) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_async/connection.py", line 86, in handle_async_request raise exc File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_async/connection.py", line 63, in handle_async_request stream = await self._connect(request) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_async/connection.py", line 150, in _connect stream = await stream.start_tls(**kwargs) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/backends/trio.py", line 74, in start_tls with map_exceptions(exc_map): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/contextlib.py", line 153, in exit self.gen.throw(typ, value, traceback) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) httpcore.ConnectError

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/Users/cboutaud/.local/bin/ghunt", line 8, in sys.exit(main()) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/ghunt.py", line 15, in main parse_and_run() File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/cli.py", line 31, in parse_and_run process_args(args) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/cli.py", line 44, in process_args trio.run(gaia.hunt, None, args.gaia_id, args.json) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/trio/_core/_run.py", line 1946, in run raise runner.main_task_outcome.error File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/modules/gaia.py", line 28, in hunt is_found, target = await people_pa.people(as_client, gaia_id, params_template="max_details") File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/apis/peoplepa.py", line 169, in people await person._scrape(as_client, person_data) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/parsers/people.py", line 150, in _scrape await person_photo._scrape(as_client, photo_data, "profile_photo") File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/parsers/people.py", line 60, in _scrape self.isDefault, self.flathash = await is_default_profile_pic(as_client, self.url) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/helpers/utils.py", line 63, in is_default_profile_pic flathash = await get_url_image_flathash(as_client, image_url) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/ghunt/helpers/utils.py", line 52, in get_url_image_flathash req = await as_client.get(image_url) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1757, in get return await self.request( File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1533, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1620, in send response = await self._send_handling_auth( File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1648, in _send_handling_auth response = await self._send_handling_redirects( File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1685, in _send_handling_redirects response = await self._send_single_request(request) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_client.py", line 1722, in _send_single_request response = await transport.handle_async_request(request) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_transports/default.py", line 352, in handle_async_request with map_httpcore_exceptions(): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/contextlib.py", line 153, in exit self.gen.throw(typ, value, traceback) File "/Users/cboutaud/.local/pipx/venvs/ghunt/lib/python3.10/site-packages/httpx/_transports/default.py", line 77, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError

    help wanted 
    opened by cboutaud 3
  • TypeError same as #389

    TypeError same as #389

    Describe the bug $ghunt login Traceback (most recent call last): File "/home/ah/.local/bin/ghunt", line 5, in from ghunt.ghunt import main File "/home/ah/.local/pipx/venvs/ghunt/lib/python3.9/site-packages/ghunt/init.py", line 1, in from ghunt import globals as gb; gb.init_globals() File "/home/ah/.local/pipx/venvs/ghunt/lib/python3.9/site-packages/ghunt/globals.py", line 5, in init_globals from ghunt.objects.utils import TMPrinter File "/home/ah/.local/pipx/venvs/ghunt/lib/python3.9/site-packages/ghunt/objects/utils.py", line 1, in from ghunt.helpers.utils import * File "/home/ah/.local/pipx/venvs/ghunt/lib/python3.9/site-packages/ghunt/helpers/utils.py", line 77, in def ppnb(nb: float|int) -> float: TypeError: unsupported operand type(s) for |: 'type' and 'type'

    To Reproduce Step 1: install python 3.11.1 โ”Œโ”€[a@Z]โ”€[~/Downloads/Python-3.11.1] โ””โ”€โ”€โ•ผ $python3 -V Python 3.11.1

    Step 2: install ghunt per the instructions on the page $ pip3 install pipx $ pipx ensurepath $ pipx install ghunt

    Step 3: run command "ghunt login"

    System (please complete the following information): Linux Parrot Python 3.11.1

    help wanted 
    opened by QueenBytes 4
  • Disclaimer use restrictions not compatible with AGPL

    Disclaimer use restrictions not compatible with AGPL

    According to the GNU GPL FAQs page (which also applies to the AGPL), a license that limits who can use a program, or for what, is not a free software license.

    Thus, this usage restriction statement "Use it only in personal, criminal investigations, pentesting, or open-source projects." in the readme is not compatible with the AGPL.

    Though technically, every project that includes AGPL code has to be open-source anyway, but the original AGPL text already includes the "disclose source" requirement.

    Solution

    This can be resolved by removing the statement "Use it only in personal, criminal investigations, pentesting, or open-source projects." or alternatively by keeping the statement and using a non-free license similar to the AGPL that also allows for software usage restrictions.

    opened by elliotwutingfeng 1
Releases(v2.0.1)
  • v2.0.1(Dec 3, 2022)

    GHunt v2 is released ! ๐ŸŽ‰

    Is is a totally refactored version from the v1.

    • CLI usage and modules
    • Python library usage
    • Fully async
    • JSON export
    • Browser extension to ease login

    Also, from the v1 :

    • It doesn't use an automated browser (Selenium) anymore.
    • Installation x1000 more easy
    • Light and so much faster bruh *sanic noise*
    • It is now a real framework, on which you can make additions easily.

    Upgrading from the v1

    Before installing the v2 update, just be sure you don't have a binary called ghunt in your PATH, I know some vilains did that.

    Upgrade your GHunt Companion extension if you already had installed it. Otherwise, there are no more requirements, just follow the new README !

    Source code(tar.gz)
    Source code(zip)
Owner
mxrch
in constant learning.
mxrch
A simple python script for rclone. Use multiple Google Service Accounts and cycle through them.

About GSAclone GSAclone is a simple python script for rclone, written with the purpose of using multiple Google service accounts on Google Drive and "

Shiro39 6 Feb 25, 2022
google-resumable-media Apache-2google-resumable-media (๐Ÿฅ‰28 ยท โญ 27) - Utilities for Google Media Downloads and Resumable.. Apache-2

google-resumable-media Utilities for Google Media Downloads and Resumable Uploads See the docs for examples and usage. Experimental asyncio Support Wh

Google APIs 36 Nov 22, 2022
An attendance bot that joins google meet automatically according to schedule and marks present in the google meet.

Google-meet-self-attendance-bot An attendance bot which joins google meet automatically according to schedule and marks present in the google meet. I

Sarvesh Wadi 12 Sep 20, 2022
Google Drive, OneDrive and Youtube as covert-channels - Control systems remotely by uploading files to Google Drive, OneDrive, Youtube or Telegram

covert-control Control systems remotely by uploading files to Google Drive, OneDrive, Youtube or Telegram using Python to create the files and the lis

Ricardo Ruiz 52 Dec 6, 2022
Easy Google Translate: Unofficial Google Translate API

easygoogletranslate Unofficial Google Translate API. This library does not need an api key or something else to use, it's free and simple. You can eit

Ahmet Eren Odacฤฑ 9 Nov 6, 2022
Google scholar share - Simple python script to pull Google Scholar data from an author's profile

google_scholar_share Simple python script to pull Google Scholar data from an au

Paul Goldsmith-Pinkham 9 Sep 15, 2022
๐Ÿ”Ž Hunt down social media accounts by username across social networks

Hunt down social media accounts by username across social networks Installation | Usage | Docker Notes | Contributing Installation # clone the repo $

Sherlock 38.2k Jan 1, 2023
A program used to create accounts in bulk, still a work in progress as of now.

Discord Account Creator This project is still a work in progress. It will be published upon its full completion. About This project is still under dev

patched 8 Sep 15, 2022
Activate exitlag trial accounts

Exitlag Account Activator Activate exitlag trial accounts (unlimited trial accounts) โญ If you want to support me, follow me on github and star the pro

Benjamin 173 Nov 10, 2022
Bypass Hcaptcha Purely based on http requests, Creates unlocked discord accounts if used correctly

hcaptcha-bypass-discord Bypass HCAPTCHA purely based on http requests Works for discord dosen't create locked accounts :)) HOW TO USE โ—‰ add the hcapby

Avenger 80 Dec 22, 2022
[OSGIFI] - INFORMATION GATHERING TOOL, FROM INSTAGRAM ACCOUNTS.

โšก OSGIFI THIS TOOL PERMIT YOU TO DISCOVERING & GATHERING INFO FROM INSTAGRAM ACCOUNTS, FOR EXAMPLE: Full Name Verified Account Or Not Private Account

BASILEOLUS 9 Nov 29, 2022
A twitter multi-tool for OSINT on twitter accounts.

>TwitterCheckr A twitter multi-tool for OSINT on twitter accounts. Infomation TwitterCheckr also known as TCheckr is multi-tool for OSINT on twitter a

IRIS 16 Dec 23, 2022
A simple Facebook Account generator, written in python (needs different Email so Accounts do not get banned)

FacebookAccountGenerator FAB is a Facebook-Account generating script, written in python Installation Use the package manager pip to install selenium p

MrOverload 7 Jan 5, 2023
Dumps to CSV all the resources in an organization's member accounts

AWS Org Inventory Dumps to CSV all the resources in an organization's member accounts. Set your environment's AWS_PROFILE and AWS_DEFAULT_REGION varia

Iain Samuel McLean Elder 2 Dec 24, 2021
Brute Force Attack On Facebook Accounts

Brute Force Attack On Facebook Accounts For Install: pkg install update && pkg upgrade -y pkg install python pip install requests pip install mechani

MK X Shaon 1 Oct 30, 2021
Checks if Minecraft accounts are available, or taken.

MCNameChecker Checks validity of Minecraft IGN's. Using async to make it even faster. Has rate-limit detections and Proxy support Usage Q. How do I us

Dimitri Demarkus 5 Apr 22, 2022
Discord bot code to stop users that are scamming with fake messages of free discord nitro on servers in order to steal users accounts.

AntiScam Discord bot code to stop users that are scamming with fake messages of free discord nitro on servers in order to steal users accounts. How to

H3cJP 94 Dec 15, 2022
Twitch Points Miner for multiple accounts with Discord logging

Twitch Points Miner for multiple accounts with Discord logging Creator of the Twitch Miner -- PLEASE NOTE THIS IS PROBABLY BANNABLE -- Made on python

null 8 Apr 27, 2022