🕵️‍♂️ 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 ┌─[[email protected]]─[~/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
Most Simple & Powefull web3 Trade Bot (WINDOWS LINUX) Suport BSC ETH

Most Simple & Powefull Trade Bot (WINDOWS LINUX) What Are Some Pros And Cons Of Owning A Sniper Bot? While having a sniper bot is typically an advanta

GUI BOT 6 Jan 30, 2022
Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API.

Tg_PHub_Bot Telegram PHub Bot using ARQ Api and Pyrogram. This Bot can Download and Send PHub HQ videos in Telegram using ARQ API. OS Support All linu

TheProgrammerCat 13 Oct 21, 2022
Seamlessly Connecting Notion Database with Python Pandas DataFrame

notion-df: Seamlessly Connecting Notion Database with Pandas DataFrame Please Note: This project is currently in pre-alpha stage. The code are not app

Shannon Shen 38 Dec 28, 2022
Secret messaging app which you can use to communicate with your friends by encrypting / decrypting secret messages or sending secret message through mail.

Secret-Whisper A Secret messaging app which you can use to communicate with your friends by encrypting / decrypting secret messages 🤫 or sending secr

3 Jan 01, 2022
Ark API Wrapper in Python

Pythark Ark API Wrapper in Python. Built with Python Requests Installation Pythark uses Arky to create a new transaction, if you want to use this feat

Jolan 14 Mar 11, 2021
A Telegram bot for personal utilities

Aqua Aqua is a Telegram bot for personal utilities. Installation Prerequisites: Install Poetry for managing dependencies and fork/clone the repository

Guilherme Vasconcelos 2 Mar 30, 2022
python script to buy token from pancakeswap

pancakeswapBot python script to buy token from pancakeswap Change your privatekey!!! on line 58 (signed_txn = web3.eth.account.sign_transaction(pancak

206 Dec 31, 2022
A better rename and convert bot with upload mode option and Auto detection

A better rename and convert bot with upload mode option and Auto detection

Code X Mania 2 Nov 09, 2021
A Discord bot that generates inspirational quotes & motivating messages whenever a user is sad

Encourage bot is a discord bot that allows users to randomly get Inspirational quotes messages and gives motivational encouragements whenever someone says that he's sad/depressed.

1 Nov 25, 2021
Twitter FakeNFT With Python

This project is a server that fetches your Twitter profile picture and applies the hexagonal transparency mask displayed on the profiles of users who have an NFT profile picture.

Mathis HAMMEL 29 Apr 23, 2022
A Python wrapper for the WooCommerce API.

WooCommerce API - Python Client A Python wrapper for the WooCommerce REST API. Easily interact with the WooCommerce REST API using this library. Insta

WooCommerce 171 Dec 25, 2022
This is a walkthrough about understanding the #BoF machine present in the #OSCP exam.

Buffer Overflow methodology Introduction These are 7 simple python scripts and a methodology to ease (not automate !) the exploitation. Each script ta

3isenHeiM 53 Dec 08, 2022
A Discord bot for viewing any currency you want comfortably.

Dost Dost is a Discord bot for viewing currencies. Getting Started These instructions will get you a copy of the project up and running on your local

Baran Gökalp 2 Jan 18, 2022
Repositório para a Live Coding do dia 22/12/2021 sobre AWS Step Functions

DIO Live Step Functions - 22/12/2021 Serviços AWS utilizados AWS Step Functions AWS Lambda Amazon S3 Amazon Rekognition Amazon DynamoDB Amazon Cloudwa

Cassiano Ricardo de Oliveira Peres 5 Mar 01, 2022
An async python wrapper to interact with the Steam API and its CMs

steam.py A modern, easy to use, and async ready package to interact with the Steam API. Heavily inspired by discord.py and borrowing functionality fro

James Hilton-Balfe 90 Dec 15, 2022
Linky bot, A open-source discord bot that allows you to add links to ur website, youtube url, etc for the people all around discord to see!

LinkyBot Linky bot, An open-source discord bot that allows you to add links to ur website, youtube url, etc for the people all around discord to see!

AlexyDaCoder 1 Sep 20, 2022
A telegram user and chat info extractor with pyrogram python module

Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com/FayasNoushad/Telegram-Info/blob/main/LICENSE

Fayas Noushad 8 Dec 22, 2021
A bot to view Garfield comics directly from Discord and get updates of the comics automatically

Garfield-Bot A bot to view Garfield comics directly from Discord and get updates of the comics automatically. Instructions to use the bot: Invite the

Raghav Sharma 3 Feb 13, 2022
Fetch tracking numbers of Amazon orders, for the ease of the logistics.

Amazon-Tracking-Number Fetch tracking numbers of Amazon orders, for the ease of the logistics. Read Me First (How to use this code): Get Amazon "Items

Tony Yao 1 Nov 02, 2021
Simple Discord bot which logs several events in your server

logging-bot Simple Discord bot which logs several events in your server, including: Message Edits Message Deletes Role Adds Role Removes Member joins

1 Feb 14, 2022