glocaltokens


Nameglocaltokens JSON
Version 0.7.1 PyPI version JSON
download
home_pagehttps://github.com/leikoilja/glocaltokens
SummaryTool to extract Google device local authentication tokens in Python
upload_time2024-06-10 09:28:43
maintainerNone
docs_urlNone
authorIlja Leiko
requires_python<4.0,>=3.9
licenseMIT
keywords authentication google home google localauthenticationtokens
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![GitHub Workflow Status][workflow-shield]][workflow]
[![PyPI][pypi-shield]][pypi]
[![Downloads][pepy-shield]][pepy]
[![Pre-commit][pre-commit-shield]][pre-commit]
[![GitHub Activity][commits-shield]][commits]

# Google home local authentication token extraction

Python 3 package to extract google home devices local authentication tokens from google servers.
These local authentication tokens are needed to control Google Home devices
(See [@rithvikvibhu](https://github.com/rithvikvibhu)'s [Google Home (2.0) API](https://rithvikvibhu.github.io/GHLocalApi/)).

Please note:
Once you have local google authentication tokens they only live about 1 day long.
After that you will need to obtain new ones.
You will probably need to run the script repeatedly storing the tokens somewhere convenient.

## Quickstart

Note: the package was written and tested on Python 3.

- Install the python package

```
pip install glocaltokens
```

Use in your program as (see examples folder for detailed example):

```Python
from glocaltokens.client import GLocalAuthenticationTokens

# Using google username and password
#
# ONLY CALL THIS ONCE
#
# If you call this too often, google will disconnect your android devices and other weird things will happen
#
# Call get_google_devices_json() afterwards to get timers/alarms as oftens as you want to update.
client = GLocalAuthenticationTokens(
  username="<YOUR_GOOGLE_USERNAME>",
  password="<YOUR_GOOGLE_PASSWORD>"
)

# Get master token
print("[*] Master token", client.get_master_token())

# Get access token (lives 1 hour)
print("\n[*] Access token (lives 1 hour)", client.get_access_token())

# Get google device local authentication tokens (live about 1 day)
print("\n[*] Google devices local authentication tokens")
google_devices = client.get_google_devices_json()

# You can also select specific models to select when calling get_google_devices or get_google_devices_json with the models_list parameter.
# For example, we have pre-defined a constant with some Google Home Models (WARNING! Not all of them may be present)
# This could be used this way
from glocaltokens.const import GOOGLE_HOME_MODELS

google_devices_select = client.get_google_devices_json(GOOGLE_HOME_MODELS)

# But if you need to select just a set of models, or add new models, you can use a list of str
google_devices_select_2 = client.get_google_devices_json([
    f"Google Home",
    f"Google Home Mini",
    f"Google Nest Mini",
])
```

### Predefined models list

There are some pre-defined models list in [`scanner.py`](/glocaltokens/scanner.py), feel free to
add new lists, or add models to a list with a pull-request.

#### `GOOGLE_HOME_MODELS`:

- Google Home
- Google Home Mini
- Google Nest Mini
- Lenovo Smart Clock

## Security Recommendation

Never store the user's password nor username in plain text, if storage is necessary, generate a master token and store it.
Example approach:

```python
from glocaltokens.client import GLocalAuthenticationTokens

# Using google username and password first, and only once
client = GLocalAuthenticationTokens(
  username="<YOUR_GOOGLE_USERNAME>",
  password="<YOUR_GOOGLE_PASSWORD>"
)

# Get master token
master_token = client.get_master_token()
print("[*] Master token", master_token)

"""Now store master_token somewhere"""

```

## Contributing

See [Contributing guidelines](CONTRIBUTING.md).
This is an open-source project and all countribution is highly welcomed.

# Credits

Much credits go to [@rithvikvibhu](https://github.com/rithvikvibhu) for doing most of the heavy work like finding a way to
extract master and access tokens
(See his gist [here](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d)).

Also, thank you very much to the guys at `pychromecast` which provided the code required to scan devices in the network.

[workflow-shield]: https://img.shields.io/github/actions/workflow/status/leikoilja/glocaltokens/linting-and-testing.yaml?branch=master
[workflow]: https://github.com/leikoilja/glocaltokens/actions
[pypi-shield]: https://img.shields.io/pypi/v/glocaltokens
[pypi]: https://pypi.org/project/glocaltokens/
[pepy-shield]: https://pepy.tech/badge/glocaltokens
[pepy]: https://pepy.tech/project/glocaltokens
[commits-shield]: https://img.shields.io/github/commit-activity/y/leikoilja/glocaltokens
[commits]: https://github.com/leikoilja/glocaltokens/commits/master
[pre-commit-shield]: https://img.shields.io/badge/pre--commit-enabled-brightgreen
[pre-commit]: https://pre-commit.com/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/leikoilja/glocaltokens",
    "name": "glocaltokens",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "Authentication, Google Home, Google, LocalAuthenticationTokens",
    "author": "Ilja Leiko",
    "author_email": "leikoilja@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/7c/6e/87c2f30f4e09406b8a00f7c6056ecff5b3b9ae977f825b6a5bd9deb49e85/glocaltokens-0.7.1.tar.gz",
    "platform": null,
    "description": "[![GitHub Workflow Status][workflow-shield]][workflow]\n[![PyPI][pypi-shield]][pypi]\n[![Downloads][pepy-shield]][pepy]\n[![Pre-commit][pre-commit-shield]][pre-commit]\n[![GitHub Activity][commits-shield]][commits]\n\n# Google home local authentication token extraction\n\nPython 3 package to extract google home devices local authentication tokens from google servers.\nThese local authentication tokens are needed to control Google Home devices\n(See [@rithvikvibhu](https://github.com/rithvikvibhu)'s [Google Home (2.0) API](https://rithvikvibhu.github.io/GHLocalApi/)).\n\nPlease note:\nOnce you have local google authentication tokens they only live about 1 day long.\nAfter that you will need to obtain new ones.\nYou will probably need to run the script repeatedly storing the tokens somewhere convenient.\n\n## Quickstart\n\nNote: the package was written and tested on Python 3.\n\n- Install the python package\n\n```\npip install glocaltokens\n```\n\nUse in your program as (see examples folder for detailed example):\n\n```Python\nfrom glocaltokens.client import GLocalAuthenticationTokens\n\n# Using google username and password\n#\n# ONLY CALL THIS ONCE\n#\n# If you call this too often, google will disconnect your android devices and other weird things will happen\n#\n# Call get_google_devices_json() afterwards to get timers/alarms as oftens as you want to update.\nclient = GLocalAuthenticationTokens(\n  username=\"<YOUR_GOOGLE_USERNAME>\",\n  password=\"<YOUR_GOOGLE_PASSWORD>\"\n)\n\n# Get master token\nprint(\"[*] Master token\", client.get_master_token())\n\n# Get access token (lives 1 hour)\nprint(\"\\n[*] Access token (lives 1 hour)\", client.get_access_token())\n\n# Get google device local authentication tokens (live about 1 day)\nprint(\"\\n[*] Google devices local authentication tokens\")\ngoogle_devices = client.get_google_devices_json()\n\n# You can also select specific models to select when calling get_google_devices or get_google_devices_json with the models_list parameter.\n# For example, we have pre-defined a constant with some Google Home Models (WARNING! Not all of them may be present)\n# This could be used this way\nfrom glocaltokens.const import GOOGLE_HOME_MODELS\n\ngoogle_devices_select = client.get_google_devices_json(GOOGLE_HOME_MODELS)\n\n# But if you need to select just a set of models, or add new models, you can use a list of str\ngoogle_devices_select_2 = client.get_google_devices_json([\n    f\"Google Home\",\n    f\"Google Home Mini\",\n    f\"Google Nest Mini\",\n])\n```\n\n### Predefined models list\n\nThere are some pre-defined models list in [`scanner.py`](/glocaltokens/scanner.py), feel free to\nadd new lists, or add models to a list with a pull-request.\n\n#### `GOOGLE_HOME_MODELS`:\n\n- Google Home\n- Google Home Mini\n- Google Nest Mini\n- Lenovo Smart Clock\n\n## Security Recommendation\n\nNever store the user's password nor username in plain text, if storage is necessary, generate a master token and store it.\nExample approach:\n\n```python\nfrom glocaltokens.client import GLocalAuthenticationTokens\n\n# Using google username and password first, and only once\nclient = GLocalAuthenticationTokens(\n  username=\"<YOUR_GOOGLE_USERNAME>\",\n  password=\"<YOUR_GOOGLE_PASSWORD>\"\n)\n\n# Get master token\nmaster_token = client.get_master_token()\nprint(\"[*] Master token\", master_token)\n\n\"\"\"Now store master_token somewhere\"\"\"\n\n```\n\n## Contributing\n\nSee [Contributing guidelines](CONTRIBUTING.md).\nThis is an open-source project and all countribution is highly welcomed.\n\n# Credits\n\nMuch credits go to [@rithvikvibhu](https://github.com/rithvikvibhu) for doing most of the heavy work like finding a way to\nextract master and access tokens\n(See his gist [here](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d)).\n\nAlso, thank you very much to the guys at `pychromecast` which provided the code required to scan devices in the network.\n\n[workflow-shield]: https://img.shields.io/github/actions/workflow/status/leikoilja/glocaltokens/linting-and-testing.yaml?branch=master\n[workflow]: https://github.com/leikoilja/glocaltokens/actions\n[pypi-shield]: https://img.shields.io/pypi/v/glocaltokens\n[pypi]: https://pypi.org/project/glocaltokens/\n[pepy-shield]: https://pepy.tech/badge/glocaltokens\n[pepy]: https://pepy.tech/project/glocaltokens\n[commits-shield]: https://img.shields.io/github/commit-activity/y/leikoilja/glocaltokens\n[commits]: https://github.com/leikoilja/glocaltokens/commits/master\n[pre-commit-shield]: https://img.shields.io/badge/pre--commit-enabled-brightgreen\n[pre-commit]: https://pre-commit.com/\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Tool to extract Google device local authentication tokens in Python",
    "version": "0.7.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/leikoilja/glocaltokens/issues",
        "Homepage": "https://github.com/leikoilja/glocaltokens",
        "Release Notes": "https://github.com/leikoilja/glocaltokens/releases",
        "Repository": "https://github.com/leikoilja/glocaltokens"
    },
    "split_keywords": [
        "authentication",
        " google home",
        " google",
        " localauthenticationtokens"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b4f73572f1be5f3df29bab5ce9452afb7a4e4a9968e5e5216628652ba56be32c",
                "md5": "08ab48acb92f8717070d2f7c0e181a89",
                "sha256": "7fde611757cfc4dec0cbc4f13b97d8dd51d4d7a17e4f80e76d23953bca832ff5"
            },
            "downloads": -1,
            "filename": "glocaltokens-0.7.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "08ab48acb92f8717070d2f7c0e181a89",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 13888,
            "upload_time": "2024-06-10T09:28:42",
            "upload_time_iso_8601": "2024-06-10T09:28:42.461197Z",
            "url": "https://files.pythonhosted.org/packages/b4/f7/3572f1be5f3df29bab5ce9452afb7a4e4a9968e5e5216628652ba56be32c/glocaltokens-0.7.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c6e87c2f30f4e09406b8a00f7c6056ecff5b3b9ae977f825b6a5bd9deb49e85",
                "md5": "ea8af17f9fe8ffe5cb72a20b4fe09654",
                "sha256": "3f30978bd3d95b61da2a5196e446f597514279fc5e20b44691d105f2f53bffec"
            },
            "downloads": -1,
            "filename": "glocaltokens-0.7.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ea8af17f9fe8ffe5cb72a20b4fe09654",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 14192,
            "upload_time": "2024-06-10T09:28:43",
            "upload_time_iso_8601": "2024-06-10T09:28:43.614140Z",
            "url": "https://files.pythonhosted.org/packages/7c/6e/87c2f30f4e09406b8a00f7c6056ecff5b3b9ae977f825b6a5bd9deb49e85/glocaltokens-0.7.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-10 09:28:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "leikoilja",
    "github_project": "glocaltokens",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "glocaltokens"
}
        
Elapsed time: 0.26924s