🕵️‍♂️ 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
Python client for Toyota North America service API

toyota-na Python client for Toyota North America service API Install pip install toyota-na[qt] [qt] is required for generating authorization code. Us

Gavin Ni 18 Sep 06, 2022
Pixiv 爬虫,使用 Python 实现。支持批量下载、上传到图床。

用 Python 实现的 Pixiv 爬虫,支持批量下载和上传。 随机图片 API: https://loliapi.ml/ Deploy Github Action 集成部署 建议使用本方法部署,相较于本地部署,无需搭建环境,全程在线上完成。并且使用国外服务器下载、上传,网络更加通畅。 Fork

18 Feb 26, 2022
Brute force instagram account / actonetor, 2021

Brute force instagram account / actonetor, 2021

actonetor 6 Nov 16, 2022
Discord Rpc With Python And 2 Buttons

Discord-RPC-With-Python- Discord Rpc With Python And 2 Buttons Packages pypresence time Required Programs Python Latest Version Random IDE Discord :P

Kaz 4 Dec 12, 2021
Discord Unverified Token Gen

Discord-Unverified-Token-Gen This is a token gen that was made in an hour and just generates unverified tokens, most will be locked. Usage: in cmd jus

Aran 2 Oct 23, 2022
A python SDK for interacting with quantum devices on Amazon Braket

Amazon Braket Python SDK The Amazon Braket Python SDK is an open source library that provides a framework that you can use to interact with quantum co

Amazon Web Services 213 Dec 14, 2022
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
Bulk NFT uploader to OpenSea!

Bulk NFT Uploader Description Simple easy peasy python script which logins to opensea account using metamask and bulk uploads NFT to your default coll

Lakshya Khera 25 May 23, 2022
Isobot is originally made by notsniped. This is a remix of iso.bot by archisha.

iso6.9-1.2beta iso.bot is originally made by notsniped#0002. This is a remix of iso.bot by αrchιshα#5518. iso6.9 is a Discord bot written in Python an

Kamilla Youver 3 Jan 11, 2022
Replace sequence_IDs in gff3 based on given genome.fasta

gff-rename Replace the sequence IDs in a gff3 file with a set of provided sequence IDs from a genom.fasta. This is useful when a gff3 file is retrieve

tolkit 1 Nov 12, 2021
The official Python client library for the Kite Connect trading APIs

The Kite Connect API Python client - v3 The official Python client for communicating with the Kite Connect API. Kite Connect is a set of REST-like API

Zerodha Technology 756 Jan 06, 2023
Web3 Pancakeswap Sniper & honeypot detector Take Profit/StopLose bot written in python3, For ANDROID WIN MAC & LINUX

🏆 Pancakeswap BSC Sniper Bot web3 with honeypot detector (ANDROID WINDOWS MAC LINUX) 🥇 ⭐️ ⭐️ ⭐️ First SNIPER BOT for ANDROID & WINDOWS with honeypot

HYDRA 2 Dec 24, 2021
The easiest way to deploy this Bot

How To Host The easiest way to deploy this Bot Update Channe

Isekai Reszz 1 Jan 23, 2022
AI-El-Yazisini-Tanima - Fotoğraflardaki El Yazını Yapay Zeka İle Otomatik Tanıma Yazılımı

AI-El Yazısını Tanıma Fotoğraflardaki El Yazını Yapay Zeka İle Otomatik Tanıma Yazılımı Amaç : Birden fazla makine öğrenmesi modelini bir arada kullan

Özgür Tokay 3 Mar 02, 2022
livestream-chat: Overlay para chats de livestreams

livestream-chat Overlay para chats de livestreams. Inicialmente para rodar dentro do browser do obs-studio. TODO: Issues iniciais Suporte a API do You

Eduardo Mendes 10 Dec 16, 2022
Create custom Vanity URLs for Discord without 30 boosts

CustomVanity - Made by udp#6666 aka Apolo - OpenSource Custom Discord Vanity Creator How To Use Open CustomVanity.py Write your server invite code Wri

apolo 17 Aug 23, 2022
A python script to download twitter space, only works on running spaces (for now).

A python script to download twitter space, only works on running spaces (for now).

279 Jan 02, 2023
Automated JSON API based communication with Fronius Symo

PyFronius - a very basic Fronius python bridge A package that connects to a Fronius device in the local network and provides data that is provided via

Niels Mündler 10 Dec 30, 2022
A discord bot to check if messages have the correct code formatting.

discord-code-formatter A discord bot to check if messages have the correct code formatting. This was a basic project to help me learn Python and learn

Nash Boisvert 1 Nov 23, 2021
Cogs for Red-DiscordBot

matcha-cogs Cogs for Red-DiscordBot. Installation [p]repo add matcha-cogs

MatchaTeaLeaf 2 Aug 27, 2022