All Projects → leikoilja → glocaltokens

leikoilja / glocaltokens

Licence: MIT license
Python 3 package to fetch google home local authentication tokens and IP using google username/password or google master token

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to glocaltokens

Assistant Plugins
Des plugins pour les Assistant (comme Google Home, Cortana, Alexa)
Stars: ✭ 93 (+389.47%)
Mutual labels:  google-home
Home Assistant Config Fr
🏠Configuration de Home Assistant en français. 👨🏻‍💻 N'hésitez pas à ⭐ mon repo et à copier les bonnes idées ! 🇨🇵
Stars: ✭ 175 (+821.05%)
Mutual labels:  google-home
ha-google-home
Home Assistant Google Home custom component
Stars: ✭ 285 (+1400%)
Mutual labels:  google-home
Assistantjs
TypeScript framework to build cross-platform voice applications (alexa, google home, ...).
Stars: ✭ 100 (+426.32%)
Mutual labels:  google-home
Home assistant files
Here are my Home Assistant configuration files
Stars: ✭ 159 (+736.84%)
Mutual labels:  google-home
Wukong Robot
🤖 wukong-robot 是一个简单、灵活、优雅的中文语音对话机器人/智能音箱项目,还可能是首个支持脑机交互的开源智能音箱项目。
Stars: ✭ 3,110 (+16268.42%)
Mutual labels:  google-home
Lovelace Themes
Homebrew themes for homeassistant lovelace ui
Stars: ✭ 83 (+336.84%)
Mutual labels:  google-home
ioBroker.chromecast
ioBroker Chromecast Adapter
Stars: ✭ 17 (-10.53%)
Mutual labels:  google-home
Homeautio.mqtt.googlehome
Stars: ✭ 168 (+784.21%)
Mutual labels:  google-home
casita
A macOS menubar app to control media playing on your Google Cast enabled devices. 🏡
Stars: ✭ 22 (+15.79%)
Mutual labels:  google-home
Actions On Google Kotlin
Unofficial Actions on Google SDK for Kotlin and Java
Stars: ✭ 116 (+510.53%)
Mutual labels:  google-home
Smarthome Homeassistant Config
🏠 My Home Assistant configuration. This repo will be archived 🗄️ in the future
Stars: ✭ 152 (+700%)
Mutual labels:  google-home
Student-homeassistant-config
🎓 Student Home configuration. Stay informed by 🌟 this repository for updates!
Stars: ✭ 160 (+742.11%)
Mutual labels:  google-home
Jovo Framework
🔈 The Open Source Voice Layer: Build Voice Experiences for Alexa, Google Assistant, Samsung Bixby, Web Apps, and much more
Stars: ✭ 1,320 (+6847.37%)
Mutual labels:  google-home
bravia-node
No description or website provided.
Stars: ✭ 14 (-26.32%)
Mutual labels:  google-home
Google Home Notifier Python
A google home notification webservice
Stars: ✭ 90 (+373.68%)
Mutual labels:  google-home
Dsckeybusinterface
An Arduino/esp8266/esp32 library to directly interface with DSC security systems.
Stars: ✭ 202 (+963.16%)
Mutual labels:  google-home
node-red-contrib-smartnora
Node Red Google Home integration
Stars: ✭ 80 (+321.05%)
Mutual labels:  google-home
Home-Assistant-Configuration
HomeAssistant Configuration
Stars: ✭ 14 (-26.32%)
Mutual labels:  google-home
gluco-check
Use Nightscout with Google Home: "Hey Google, check my sugar"
Stars: ✭ 24 (+26.32%)
Mutual labels:  google-home

GitHub Workflow Status PyPI Downloads Pre-commit GitHub Activity

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's Google Home (2.0) API).

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):

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, 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:

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. This is an open-source project and all countribution is highly welcomed.

Credits

Much credits go to @rithvikvibhu for doing most of the heavy work like finding a way to extract master and access tokens (See his gist here).

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].