Files
psa_car_controller/app_decoder.py
T
2020-11-15 09:30:50 +01:00

68 lines
1.9 KiB
Python

import json
import os
import shutil
import xml.etree.ElementTree as ET
import base64
from ChargeControl import ChargeControl, ChargeControls
from MyPSACC import MyPSACC
from sys import argv
import tarfile
def getxmlvalue(root, name):
for child in root.findall("*[@name='" + name + "']"):
return child.text
current_dir = os.getcwd()
script_dir = dir_path = os.path.dirname(os.path.realpath(__file__))
if len(argv) > 2:
password = argv[2]
else:
password = ""
os.system(f"java -jar {script_dir}/abe-all.jar unpack {argv[1]} backup.tar {password}")
my_tar = tarfile.open('backup.tar')
my_tar.extractall()
dir = "apps/com.psa.mym.mypeugeot"
os.chdir(dir + "/sp")
psa_pref = "com.psa.mym.mypeugeot_preferences.xml"
root = ET.parse(psa_pref).getroot()
client_secret = getxmlvalue(root, "CEA_CLIENT_SECRET")
client_id = getxmlvalue(root, "CEA_CLIENT_ID")
remote_info_file = "BASIC_AUTH_CVS.xml"
root = ET.parse(remote_info_file).getroot()
customer_id_enc = getxmlvalue(root, "CRYPTED_CUSTOMER_ID")
customer_id = base64.b64decode(customer_id_enc).decode('utf-8')
root = ET.parse("HUTokenManager.xml").getroot()
remote_enc = root[0].text
remote_refresh_token = json.loads(base64.b64decode(remote_enc))["refresh_token"]
client_email = input("mypeugeot email: ")
client_paswword = input("mypeugeot password: ")
client_realm = input("What is the car api realm : clientsB2CPeugeot, clientsB2CDS, clientsB2COpel, clientsB2CVauxhall\n")
psacc = MyPSACC(None, client_id, client_secret, remote_refresh_token, customer_id, realm=client_realm)
psacc.connect(client_email, client_paswword)
os.chdir(current_dir)
psacc.saveconfig(name="test.json")
res = psacc.get_vehicles()
print(f"\nYour vehicles: {res}")
os.remove("backup.tar")
shutil.rmtree('apps')
charge_controls = ChargeControls()
for vin,vehicle in res.items():
chc = ChargeControl(None,vin,100,[0,0])
charge_controls.list[vin] = chc
charge_controls.saveconfig(name="charge_config1.json")