[Bash] API BLINK Amazon
Publié : 27 mai 2024, 19:14
Hello
Voici un petit programme en bash pour armer / désarmer votre système BLINK via script
Assurez-vous que jq est installé (sudo apt-get install jq sur Debian/Ubuntu).
Générez un UID ( voir le lien dans le code)
Renseigner mot de passe et email de votre compte
Il faut toujours lancer le script avec un paramètre ( ARMER ou DESARMER)
Un premier lancement vous enverra un code par SMS a renseigner
Puis après une fois votre uid associé a votre compte, vous pourrez soit armer ou désarmer directement en ligne de commande.
Bonne exploitation =)
Voici un petit programme en bash pour armer / désarmer votre système BLINK via script
Assurez-vous que jq est installé (sudo apt-get install jq sur Debian/Ubuntu).
Générez un UID ( voir le lien dans le code)
Renseigner mot de passe et email de votre compte
Il faut toujours lancer le script avec un paramètre ( ARMER ou DESARMER)
Un premier lancement vous enverra un code par SMS a renseigner
Puis après une fois votre uid associé a votre compte, vous pourrez soit armer ou désarmer directement en ligne de commande.
Bonne exploitation =)
Code : Tout sélectionner
#!/bin/bash
###############################
# SCRIPT API BLINK PAR GUIGUI #
# VERSION 1.0 #
# 27/05/2024 #
###############################
#########################
# VARIABLES #
#########################
unique_id="cc746a0c-ac58-423c-a139-89990686ec34" # a generer sur https://www.uuidgenerator.net/
passwd="VOTRE_PASSWORD" # Conserver les guillements
email="toto@hotmail.fr" # Conserver les guillements
#########################
# AUTHENTIFICATION #
#########################
if [ -z $1 ]
then
echo "Pas de paramètres entres. Fin du script"
exit
fi
# Configuration
url="https://rest-prod.immedia-semi.com/api/v5/account/login"
data="{\"unique_id\": \"$unique_id\", \"password\":\"$passwd\", \"reauth\":\"true\",\"email\":\"$email\"}"
content_type="Content-Type: application/json"
# Effectuer la première requête pour obtenir les données d'authentification
# Elle est mise en boucle pour pallier a l erreur heavy load
max_attempts=5
attempt=1
sleep_time=10 # seconds
while (( attempt <= max_attempts ))
do
response=$(curl -sSl -m 60 "$url" -X POST -H "$content_type" -d "$data")
# Vérifier si la réponse contient le message d'erreur
if echo "$response" | grep -q "This website is under heavy load"
then
sleep $sleep_time
((attempt++))
else
break
fi
done
if (( attempt > max_attempts ))
then
echo "Surcharge du site"
exit 1
fi
# Extraire les informations nécessaires de la réponse JSON
AccountID=$(echo "$response" | jq -r '.account.account_id')
ClientID=$(echo "$response" | jq -r '.account.client_id')
token=$(echo "$response" | jq -r '.auth.token')
tier=$(echo "$response" | jq -r '.account.tier') # Nouvelle variable pour le tier
# Avoir les données du HOMESCREEN
HOMESCREEN=$(curl -sSl -m 60 --request GET --url https://rest-$tier.immedia-semi.com/api/v3/accounts/$AccountID/homescreen --header "token-auth: $token" )
ETAT_HOMESCREEN=$(echo $HOMESCREEN | jq -r .code)
if [ $ETAT_HOMESCREEN = 101 ] || [ $ETAT_HOMESCREEN != null ]
then
read -p "Veuillez entrer le code PIN recu par sms: " PIN_CODE
# Effectuer la deuxième requête pour vérifier le code PIN en utilisant le bon host
RESPONSE=$(curl -s -X POST "https://rest-$tier.immedia-semi.com/api/v4/account/$AccountID/client/$ClientID/pin/verify" \
-H "Content-Type: application/json" \
-H "TOKEN_AUTH: $token" \
--data "{\"pin\":\"$PIN_CODE\"}")
# Afficher la réponse
result=$(echo "$RESPONSE" | jq ."valid")
#echo '{"valid":true,"require_new_pin":false,"message":"Client has been successfully verified","code":1626}'
if [ $result = true ]
then
echo TOKEN VALIDE
echo relancer le programme
exit
else
echo API_KO
exit
fi
fi
#################
# ACTIONS #
#################
# Actions
if [ $1 = ARM ] || [ $1 = ARMER ]
then
NetworkID=$(echo "$HOMESCREEN" | jq -r ."networks"[]."id")
retour=$(curl -sSl -m 60 --request POST --url https://rest-$tier.immedia-semi.com/api/v1/accounts/$AccountID/networks/$NetworkID/state/arm --header "token-auth: $token")
# echo $retour | jq
fi
if [ $1 = DISARM ] || [ $1 = DESARMER ]
then
NetworkID=$(echo "$HOMESCREEN" | jq -r ."networks"[]."id")
retour=$(curl -sSl -m 60 --request POST --url https://rest-$tier.immedia-semi.com/api/v1/accounts/$AccountID/networks/$NetworkID/state/disarm --header "token-auth: $token")
# echo $retour | jq
fi