diff --git a/PRODINFO.bin b/PRODINFO.bin new file mode 100644 index 0000000..cb21ba1 Binary files /dev/null and b/PRODINFO.bin differ diff --git a/certificat.pem b/certificat.pem new file mode 100644 index 0000000..927cf41 --- /dev/null +++ b/certificat.pem @@ -0,0 +1,62 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCq7oPfY/FW1NSU +6DOo4Pr+6/zgJNop9Eg1zps1vCaWpQKu0KzrqfT2uHrRcP/mRaCSwNiqXxM3EwDb +cxerRc3dl6iHgCaPtd0QOzE5eRCuJcfTpdfhMRnzv6zJ+3xPo4ejTRzfoEB2s2XP +pAE9vh0f9FbgP06eKA6U9i0ZNucAHm8z2l52HVBjiG5/VbY43guxlU0b4U96bG0d +hH+zogPJNFcAI28R6+D2YaF0O6QfmF8SYgiD2Y94lx5cMQkIMO9Ypbh4BYlElLSP +6bRcmIqeiM9+QUDlrMd2mVTW362qsXiv6zpxIqRxZ9f9LwKyMo3kFA4f+Xjd6l2Z +xIJB0HMXAgMBAAECggEAMTKrdC3A9fwWH7HhxJbUx3DG/QC+ZlrwOcR4ufOoq61c +41Ieo0nsvuKEPyomDXI28GZfNlJdJnnqwj8TLfHOehw/npiNAMoYkaZn2aH14hnv +tQRD6YYHcTfXFN+0fPuVe7QjPl5Sj5e9ExGiZdIFcgASzUKLb0waPlfIzTwXKtoe +enAOEbCJhyxDbZBLc8qusfLU/zopQLw+u0DXMjppvn7mVtQ1n/9XuMGaXo77oedi +zVDv9XWz3DA+hZESRHb22Vgm6RjD6QG6L13G+6oyKVfcjSL0yjOtMtYQ1uLYC0W/ +xVrrwcai9rH4k+DwQbHopSCkZRoHnhgOxgz0hlr7IQKBgQDqJ4m1N7MGiKK5nZZU +TsS9F77SUiiVfU0C7GvmhM6DZwz9St0cVxpfIhDaWO6ka82an6HLzEMuI+zAR3OY +vl0y8d1a9LalHSzfibCSuG+Q3p6m7VgljrysRZ6pFJgFkkg/vgBEXe3FV752DPqW ++pZfL5I+K4+1+M+U1tRgvDxK0QKBgQC64PzLsR0XMkmLU/8gtzCvJ2U50fiPf2cb +YATKmJE+3/QC8uw6pqpDFjbsGbjBGSvVxQL297Q4PNGiR9QsV4t2ldXPrGFLTP14 +JylspSlz9D8JTBiRRi8uak1CF26bnxyD95FYyPOHLeXQHTbt/tTP1uutRPRYGUqn +ITWp6V0JZwKBgQDdas3ZQvZTM1lM1CuXRXTcqluTXoVp9ragERhnPyZZM1UhH22+ +os8ZLolpL7daW2Zs1I6WvGy6cNYrbGVvBnPy/Ksom0crE0+fggAqfaViBGFZ0A4O +Vc8ryBmkIQkwG4eeXvi5rWhtt+8uik9b/VG8aKuNhnu6w7DnOc5SOy14QQKBgCHg +8dNXi4eOBUkt9B2ROFE4miBOUXpqRV3wHU5BNGuqnAkA0xSa7Fj3KQPKcfUHxCuf +6LavF0vusq5xySQ0xsK7zSQ2AvlsvrLOnrLkikxMJjVgRz/m8ly+xrzJlLK/uKKv ++fiXjZafGn+NHE0vGpOHSfiCfK2QADmmSp1AAi7XAoGBAPy0SGEVy/Wzvhoc7vBJ +C8vQtIJoQnunSEVqH2BRnu1eXncSvgavzeQGjil8M3Kii+TwsOu1ssCYh5gZIOJD +exm6/gwcho3m6mAamGyl2W8c7LwsNVAG7xPQuV4pzn++dwnpdbCGW3jMNiAW1IY7 +bk1HW2gdAFiFiA+6owV5Vr2z +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIF5jCCBM6gAwIBAgIRAI1H0xvyAM36HGTTZcv/NTUwDQYJKoZIhvcNAQELBQAw +ZjELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBUt5b3RvMQ4wDAYDVQQHEwVLeW90bzEa +MBgGA1UEChMRTmludGVuZG8gQ28uLEx0ZC4xGzAZBgNVBAMTEk5pbnRlbmRvTlhD +QTJQcm9kMTAeFw0xNjEwMDUxMDQ3NTZaFw00OTEyMDgxMjAwMDBaMIGAMQswCQYD +VQQGEwJKUDEOMAwGA1UECAwFS3lvdG8xDjAMBgNVBAcMBUt5b3RvMRowGAYDVQQK +DBFOaW50ZW5kbyBDby4sTHRkLjE1MDMGA1UEAwwsTlggUHJvZCAxIC0gOEQ0N0Qz +MUJGMjAwQ0RGQTFDNjREMzY1Q0JGRjM1MzUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQCq7oPfY/FW1NSU6DOo4Pr+6/zgJNop9Eg1zps1vCaWpQKu0Kzr +qfT2uHrRcP/mRaCSwNiqXxM3EwDbcxerRc3dl6iHgCaPtd0QOzE5eRCuJcfTpdfh +MRnzv6zJ+3xPo4ejTRzfoEB2s2XPpAE9vh0f9FbgP06eKA6U9i0ZNucAHm8z2l52 +HVBjiG5/VbY43guxlU0b4U96bG0dhH+zogPJNFcAI28R6+D2YaF0O6QfmF8SYgiD +2Y94lx5cMQkIMO9Ypbh4BYlElLSP6bRcmIqeiM9+QUDlrMd2mVTW362qsXiv6zpx +IqRxZ9f9LwKyMo3kFA4f+Xjd6l2ZxIJB0HMXAgMBAAGjggJyMIICbjAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBRpZWqkbnQ91sVY3bFPUPrmRyrnSjAfBgNVHSMEGDAW +gBRycQS2kVZUFTuZ1q/6AzD0gAzZBjCCAhwGA1UdEQSCAhMwggIPoIICCwYBaaCC +AgQEggIAM0EwOEUzRjMzQzU5MEQ4NDdBMkY3MDlBNjIyNjg1OTgwQTc2RTEzNEE5 +MjJBQzZFRTIxODcyRkY2MDQyNDJGQ0E3ODdGQjQxMjgzQzE0OEM4MDAyNkY3NTVG +RDk4MTJBNjYzQjNGOUI5MEE0MDVFMzFENjA2MDBFNDE4NjU5MDJBQjY0RTRDRUZE +NkM3REEyNUYwMzJEMDQ0Qjc3NjE3ODY3NjcwMzE5RTEwNjQ5NjFFNDIyNzkwRjUx +N0VBNjY3MEEwRDYyODlFRUQyQkEwNzg3QjJBMUNFNkI5MzU1ODFGRjM5MTA5NEVC +QzQwOEMxQTVCQ0EzMEI4MEIzQzRFNzEyRUZDMEZCRDMwNTRFMDhFOTA2NTlBNzMz +NzhCNDkxQUY2QzVDODYwRUFCOTUxRUYzOTJCOTU0N0RCRDQ0RTZEN0U3QjhCRDA1 +NDJBQUMyMjExRjQ5ODBCQzFEQjA1MzY0QTQ3NTZCMzhCRTQyNjYyNEFGRkZGRjlF +MjlDNTdGNjU4QUZEOUJDMzE5OTM1OTJCNEVFNkI0MDE2RjUxQ0QxMkUxNEYwMDhC +RDI1M0M2RENENjIwQkVGODBDMzU1NzVCOEVCNjkxNjgzQzJFMEY1ODBGQThGODc2 +Mzc3N0U0RTE3NEFFODEwRUQyMDlDQzM1QTJDRkYxMzhCRjJCQUIwDQYJKoZIhvcN +AQELBQADggEBALe6QJ2aSDMtiN7e6WPmDmKgpFquQslvdIwA+To2PLMOqr6QcgdK +429ZGCWQqnQDW4+R0dE5bl9S/BkbGvkJ9URr/zZLu73mfx19ZnMKOCSv7XXR+80c +8Bhd3QxVocENmQJdFEFWohLLBfzytsH2I0Pwet9aIFDWc7zxUMSkbv7EPICMCkP3 +Gr3tWt3sJs4cpwu+62xubwr2O+G61ZD+TohulzfTKW8/8jiLPFkT2uAeqfQvkcBm +06IGCz0S9dRgZwK5CTBnW0W7MO+6pfXLWXSSoX92j31xhV6hwRhrOh5sF6zHGyAq +MA3jCo/qvrzZdFdg6A28DEPZQkTxIvx6uqM= +-----END CERTIFICATE----- diff --git a/firmware_downloader.py b/firmware_downloader.py new file mode 100644 index 0000000..a69d1b3 --- /dev/null +++ b/firmware_downloader.py @@ -0,0 +1,323 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import hashlib +import warnings +from struct import unpack +from binascii import hexlify +from glob import glob +from shutil import rmtree +from subprocess import run, PIPE +from os import makedirs, remove +from os.path import basename, exists, join +from configparser import ConfigParser +from sys import argv +from zipfile import ZipFile, ZIP_DEFLATED + +from requests import request +from requests.exceptions import HTTPError + +try: + from anynet import tls +except ImportError: + print("Module 'anynet' not found. Install it with: pip install anynet") + exit(1) + +warnings.filterwarnings("ignore") + +ENV = "lp1" +VERSION = argv[1] if len(argv) > 1 else "" + +def readdata(f, addr, size): + f.seek(addr) + return f.read(size) + +def utf8(s): + return s.decode("utf-8") + +def sha256(s): + return hashlib.sha256(s).digest() + +def readint(f, addr=None): + if addr is not None: + f.seek(addr) + return unpack("