Объявление

Свернуть
Пока нет объявлений.

Corona QR програмирование сертификата не проходящего проверку

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • тебе нужно изучить матчасть. лично я понял как работает система и проверка и об этом писал в теме.
    паблик кий лежит в xml в приложении и им можно проверить подпись куер. всё, большего не нужно.
    брутфорс работает так: генерируется приват кий и он проверяется нам известным паблик кием/кид. всё


    Код:
    kid = decoded_cose.get_attr(KID)
    der_public_key = base64.b64decode(public_key_b64)
    public_key = load_der_public_key(der_public_key)
    x = public_key.public_numbers().x.to_bytes(32, "big")
    y = public_key.public_numbers().y.to_bytes(32, "big")
    cose_key = EC2Key(crv='P_256', x=x, y=y, optional_params={'ALG': 'ES256'})
    decoded_cose.key = cose_key
    verifica = decoded_cose.verify_signature()
    Вложения

    Комментарий


    • Ты очень удивишься когда поймешь как всё просто сделано и как сложно взломать. Вся документация и примеры есть на официальных сайтах.

      Нажмите на изображение для увеличения. 

Название:	green-pass-validator-800.jpg 
Просмотров:	1198 
Размер:	78.8 Кб 
ID:	7478

      Сообщение от Delphi_RTTI Посмотреть сообщение
      Привет!
      Сегодня тестировал библиотеку Base45 на предмет длинной строки, до ~ 1500 символов. Результат сравнивал с онлайн ко/декодером. При кодировании - 1:1,
      а при расшифровке небольшая неувязочка. Я с ней уже завтра разберусь. Моя идея и эксперимент не увенчались успехом и я подозреваю, что дело даже не в Base45.
      Как вообще можна было додуматься кроме кодирования строки её ещё и сжимать ?
      (кстати не особо эфективно). Я потерял логическую цепь последовательности действий. А правильно бутфорсить ещё нужно уметь, а не от фонаря, методом подбора лепить инфу куда не попадя.
      Проводил эксперимент : Полностью остановил приложение "SafeBorder", очистил Кэш и данные, выключил интернет. Запускаю приложение и при сканировании рабочего (настоящего) QR, он проверку проходит. Соответственно, ключ хранится не в самом приложении, а зашит в код. Я думаю, что если бы ключ действительно хранился в телефоне, то народные умельцы из 4pda, уже давно бы его взломали.
      Второй вопрос : что обозначают данные на скриншоте?,-
      год рожденья бабушки?


      image widget

      Комментарий


      • код на питоне, который делает QR, осталось дело за малым , найти правильный PRIVATE KEY


        # Creates HC1 certificate for testing
        # Certificate will not be valid as it will not be signed by official CA

        # Definition of Data for Test Certificate
        family_name = "Doe"
        given_name = "John"
        birthdate = "1911-11-11" # yyyy-mm-dd
        country = "SE" # two letter country code
        last_vaccination_date = "2021-05-01" # yyyy-mm-dd
        cert_issuer = "Non Valid Test Certificate"
        time_to_live = 180 * 24 * 3600 # validity period of cert, default 180 days
        issuing_country = "SE" # two letter country code
        keyid = b'4\x9aB\xb0\xc2\xd0r\x8e' # first 8 hex values of SHA256 fingerprint of signing certificate, not relevant for test

        # Private Signature Key for ecdsa-with-SHA256 for test certificate without password protection
        # AS THIS IS JUST USED FOR PUBLIC TESTING IT IS NOT CRITICAL TO HAVE THIS PRIVATE KEY IN THIS CODE #
        pem = b'-----BEGIN EC PRIVATE KEY-----\n' \
        b'MHcCAQEEIICXhlDKAkd37q3LEtYmjoCuaIvne9/FzV0BClH2X52AoAoGCCqGSM49\n' \
        b'AwEHoUQDQgAEL8eW9/mJUjRX0G6+dA2M9DHquAx5Q07wHFdZ0vM5WzkbOMNea2X2\n' \
        b'iirLZ+RmhRAuDMZ6SN7Gj5uRrOo89+7KFA==' \
        b'\n-----END EC PRIVATE KEY-----'

        cert_id = "00XX/00000/1234567890/THISISATESTCERTIFICATEXXX#S"
        vaccine_manufacturer = "ORG-100030215"
        vaccine_id = "EU/1/20/1528"
        dn = 2
        sd = 2
        tg = "840539006"
        vp = "1119349007"
        version = "1.0.0"

        # Required imports
        import unidecode
        import json
        import sys
        from datetime import datetime
        import cbor2
        import base64
        from cryptography import x509
        from cryptography.x509 import load_pem_x509_certificate
        from cryptography.hazmat.primitives import hashes
        from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat
        from cryptography.hazmat.primitives.serialization import load_pem_private_key
        from cose.messages import Sign1Message
        from cose.keys.curves import P256
        from cose.algorithms import Es256
        from cose.headers import Algorithm, KID
        from cose.keys import EC2Key, CoseKey
        from cose.keys.keyparam import KpAlg, EC2KpD, EC2KpCurve
        from cose.keys.keyparam import KpKty
        from cose.keys.keytype import KtyEC2
        import zlib
        from base45 import b45encode, b45decode
        import matplotlib.pyplot as plt
        import qrcode
        from binascii import unhexlify

        # Create upper case string without special characters and whitespace replaced by '<'
        fnt = unidecode.unidecode(family_name).upper().replace(" ", "<")
        gnt = unidecode.unidecode(given_name).upper().replace(" ", "<")

        # Create json payload
        json_issuance = '"v": [{"ci": "' + cert_id + '", "co": "' + country + '", "dn": ' + str(dn) + ', "dt": "' + \
        last_vaccination_date + '", "is": "' + cert_issuer + '", "ma": "' + vaccine_manufacturer + \
        '", "mp": "' + vaccine_id + '", "sd": ' + str(sd) + ', "tg": "' + tg + '", "vp": "' + vp + '"}]'
        json_name = '"nam": {"fn": "' + family_name + '", "gn": "' + given_name + '", "fnt": "' + fnt + '", "gnt": "' + gnt + '"}'
        json_payload = '{ ' + json_issuance + ', "dob": "' + birthdate + '", ' + json_name + ', "ver": "' + version + '"}'

        # Make sure correct utf-8 was base ######## NEEDED ???? ###############
        json_payload = json_payload.encode("utf-8")
        json_payload = json.loads(json_payload.decode("utf-8"))

        # Add additional required info to json_payload
        json_payload = {
        1: issuing_country,
        4: int(datetime.now().timestamp() + time_to_live),
        6: int(datetime.today().timestamp()),
        -260: {
        1: json_payload,
        },
        }

        print("\nFULL JSON PAYLOAD:")
        print(json_payload)

        # Convert to CBOR
        #
        payload = cbor2.dumps(json_payload)
        print("\nCBOR FORMAT:")
        print(payload)

        # Read in the private key that we use to actually sign this
        #
        keyfile = load_pem_private_key(pem, password=None)
        priv = keyfile.private_numbers().private_value.to_bytes(3 2, byteorder="big")
        print("\nPRIVATE KEY:")
        print(keyfile.private_numbers())
        print(keyfile.private_numbers().private_value)
        print(sys.getsizeof(keyfile.private_numbers().priv ate_value))
        print(hex(keyfile.private_numbers().private_value) )
        print(priv)

        msg = Sign1Message(phdr={Algorithm: Es256, KID: keyid}, payload=payload)
        print("\nMSG TO BE SIGNED:")
        print(msg)

        # Create the signing key - use ecdsa-with-SHA256
        # and NIST P256 / secp256r1
        #
        cose_key = {
        KpKty: KtyEC2,
        KpAlg: Es256, # ecdsa-with-SHA256
        EC2KpCurve: P256, # Ought to be pk.curve - but the two libs clash
        EC2KpD: priv,
        }

        # Encode the message (which includes signing)
        #
        msg.key = CoseKey.from_dict(cose_key)
        out = msg.encode()
        print("\nSIGNED MESSAGE:")
        print(out)

        # Compress with ZLIB
        #
        out = zlib.compress(out, 9)
        print("\nCOMPRESSED MESSAGE:")
        print(out)

        # And base45 encode the result
        #
        out = b'HC1:' + b45encode(out)
        print("\nBASE45 ENCODED:")
        print(out)

        # Finally create and show qr_code
        #
        qr_image = qrcode.make(out)
        imgplot = plt.imshow(qr_image)
        plt.show()

        Комментарий


        • Сообщение от HelloWorld_x0123 Посмотреть сообщение
          осталось дело за малым , найти правильный PRIVATE KEY
          да херня война, пойду на азино 3 топора, выиграю миллиард. шансов больше

          Комментарий


          • Народ, я смотрю, что основной упор делается на бумажные версии сертификата и оставлены попытки взлома электронного QR-кода...
            Давайте объединим наши усилия и пройдёмся по-проблемам каждого пункта ко/декодирования.
            Проще начать с декодирования.
            Например, берём закодированную строку и прогоняем её через библиотеку Base45. И смотрим, что у кого получилось, а что нет. Сравниваем результат, приходим к общему знаменателю. Далее, прогоняем текст через библиотееу ZLib, и смотрим, что у кого получилось.
            И так далее...
            Давайте обсудим каждый этап. К сожалению, нас на этом форуме очень мало, но всё же, кто-то может хорошо разбирается в CBOR, кто-то в JSON. Учтите, не во всех странах справки выглядят так, как Вы их здесь отображаете, нет общего стандарта.
            А вот электронный вариант - общий.
            Кроме того, меняются справки и их наклейки чуть ли не каждый месяц с новыми датами и форматами.
            А вот QR-код постоянный,- узнаем принцип и алгоритм кодирования, сможем клепать любую дату.
            На каком этапе возникла проблема? - оставьте пока в покое Privat и Public ключи. Ими займёмся позже, а пока давайте разберёмся с методом и правилами кодировки.
            Последний раз редактировалось Delphi_RTTI; 25-12-2021, 12:42 AM.

            Комментарий


            • user432
              user432 комментирует:
              Редактировать комментарий
              Sehe ich auch so ! ! denn das gelbe Impfbuch kann man vergessen die Apotheker sind aufgeheizt von der Lügenpresse mit Fälschungen

          • Например, давайте возмём рабочий (действующий) QR, выложенный админом на 2-ой странице :
            ...
            Нажмите на изображение для увеличения. 

Название:	Screenshot_20211225-004847.jpg 
Просмотров:	732 
Размер:	52.5 Кб 
ID:	7655
            ...
            Можем начать с него. Давайте декодируем строку в "Base45" и посмотрим, что у кого вышло.
            Так как люди не каждый день заходят на этот форум, тогда...
            Через, скажем два дня, приступим ко второму этапу,-
            используя библиотеку "zlib", попробуем "разжать" строку.
            Как вам идея?
            Ваши предложения...

            Комментарий


            • мы можем начать с того, что херней не страдать. каждый вменяемый распарзил куер и собрал свой, без какихлибо обсуждений

              Комментарий




              • Hi Guy's i've Problems with that Piece of Code:

                keyfile =load_pem_private_key(pem, password=None)
                priv = keyfile.private_numbers().private_value.to_bytes(3 , 2, byteorder="big"),

                Error ist:
                priv = keyfile.private_numbers().private_value.to_bytes(3 , 2, byteorder="big"),
                TypeError: argument for to_bytes() given by name ('byteorder') and position (2)

                have you any Idea how to fix it?
                mybe the produced String is too long!
                Regards
                user432

                Комментарий


                • 32

                  Код:
                  # Convert to CBOR
                  #
                  payload = cbor2.dumps(json_payload)
                  print("\nCBOR FORMAT:")
                  print(payload)
                  
                  # Read in the private key that we use to actually sign this
                  #
                  keyfile = load_pem_private_key(pem, password=None)
                  priv = keyfile.private_numbers().private_value.to_bytes(32, byteorder="big")
                  
                  
                  # Prepare a message to sign; specifying algorithm and keyid
                  # that we (will) use
                  #
                  msg = Sign1Message(phdr={Algorithm: Es256, KID: keyid}, payload=payload)
                  print("\nMSG TO BE SIGNED:")
                  print(msg)

                  Комментарий


                  • @ Zahlesel


                    Привет Zahlesel Большое спасибо за помощь. У меня все еще есть ошибки, но их почти нет
                    Последний раз редактировалось user432; 07-01-2022, 10:14 PM.

                    Комментарий


                    • Нажмите на изображение для увеличения.   Название:	2022-01-17 11.35.26.jpg  Просмотров:	0  Размер:	79.5 Кб  id:	7935Нажмите на изображение для увеличения.   Название:	2022-01-17 11.35.35.jpg  Просмотров:	0  Размер:	70.8 Кб  id:	7936

                      где длительность действия сертификата?

                      "6": 1635098906,

                      Код:
                      hc1:6bfox141azpops30ou tsuo9-q1co9iie *v%dtbq98ptsaj+3r. G9ufnudstescsa24/e02bnt84/l8pw1f-9zpu.c4yva3jk3/nitt9es2:0p04r-t-p77sb*z9c5o r2v/ffpkyjibm98tg+apc:e:*baett75xe36n4.pf30pc3lu+kylnk z2e7dzxg0cpl+8/n36fhricsgekp1x9gsq79cgctvyrclq7q.k.j2%8vsr9ya8 16.24w79o44aa2x$irc5ev42c4gvgx621a0ytunxkpposukhja b32l5ap67rvoxtnbutpzqj9b1h71+4kuvkllz+64dmo964c4xi mbzg.ojzhb60qyu3:.j5si%u0gfryrrxkdlp9/grm$58se+vgi1n-bi%0q%pnuo9a00854p%q3x2-s5xlq2x3jquoev:9w8drgnuhbr:.nzeny*3jc0.o6 65o.r4%5r03k+a0hcd-s-if-v7d$vd-n$cs9ou7fp4zf-07dusrlq9lt:8dwue

                      Комментарий


                      • {
                        "4": 1685101990,
                        "6": 1635098906,
                        "1": "PL",
                        "-260": {
                        "1": {
                        "v": [
                        {
                        "dn": 1,
                        "ma": "ORG-100001417",
                        "vp": "J07BX03",
                        "dt": "2021-07-11",
                        "co": "PL",
                        "ci": "URN:UVCI:01:PL:1/AF2AA5873FAF45DFA826B8A01237BDC4",
                        "mp": "EU/1/20/1525",
                        "is": "Centrum e-Zdrowia",
                        "sd": 1,
                        "tg": "840539006"
                        }
                        ],
                        "nam": {
                        "fnt": "HITLER",
                        "fn": "Hitler",
                        "gnt": "ADOLF",
                        "gn": "Adolf"
                        },
                        "ver": "1.0.0",
                        "dob": "1930-01-01"
                        }
                        }
                        }
                        Issuer: PL

                        Issued At: 24.10.2021, 18:08:26

                        Expiration time: 26.05.2023, 11:53:10

                        это ограниечение валидности выставленого сертификата, которая заодно и валидность ключа...


                        VR 0: C=PL,ID=URN:UVCI:01:PL:1/AF2AA5873FAF45DFA826B8A01237BDC4,ISS=Centrum e-Zdrowia
                        KID: HhkeqvrtQ0U=
                        Issued At: 2021-10-24 18:08:26 UTC
                        Signed By: CN=Poland Vaccination DGC Service 1,OU=eHealth Centre,O=Ministry of Health,C=PL (issued by: CN=Poland DGC RootCSCA 1,O=Ministry of Health,C=PL)
                        Expiration: 2023-05-26 11:53:10 UTC
                        Personal Name: Adolf Hitler
                        DOB: 1930-01-01
                        https://github.com/denysvitali/covid...ter/RESULTS.md

                        Комментарий


                        • { "kty" : "EC", "x5t#S256" : "HhkeqvrtQ0WdjNhplLpXTylB8zhZiRTjJBp_mk1K-sU", "crv" : "P-256", "kid" : "HhkeqvrtQ0U=", "x5c" : [ "MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EA wIwS jEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQY DVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMM B4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCc GA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlI DExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJ NaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHK oZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouO R9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSM EGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANB gsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8 vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU 0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9 aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1M jYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADB EAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lIS ofEHlIi+CEBpJd5sE=" ], "x" : "gUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ-ri-Ur7Q", "y" : "0CzkUAxN7PzOShhJZcAm7IE-nF1AE_JLp9dpjnCbe_I" }
                          https://dgcg.covidbevis.se/tp/

                          Certificate Information:Common Name: Poland Vaccination DGC Service 1

                          Organization: Ministry of Health

                          Organization Unit: eHealth Centre

                          Country: PL

                          Valid From: May 26, 2021

                          Valid To: May 26, 2023

                          Issuer: Poland DGC RootCSCA 1, Ministry of Health

                          Serial Number: 4519383627554369486 (0x3eb81376ec182fce)

                          https://www.sslshopper.com/certificate-decoder.html

                          не могу понять, почему поляки подписывают не на год(нашел один и ровно на год), а до конца действия ключа.
                          также длительные куеры были замечаны у испанцев, итальянцев, швейцарцев
                          тже история с швейцарией. мне подписали тоже больше чем на год в аптеке. год и месяц. что за стандарты

                          один испанский 2/1 типо переболел и укололся 2021-05-19. до 28.05.2024 MIREN ARANTZA. 1963

                          немецкие полученые в аптеке как я заметил и по своему действуют чуть больше года около 2х недель

                          Комментарий


                          • VR 0: C=PL,ID=URN:UVCI:01:PL:1/2A992C33754A4D379A7F61089485BB75,ISS=Centrum e-Zdrowia
                            KID: HhkeqvrtQ0U=
                            Issued At: 2021-11-03 17:24:12 UTC
                            Signed By: CN=Poland Vaccination DGC Service 1,OU=eHealth Centre,O=Ministry of Health,C=PL (issued by: CN=Poland DGC RootCSCA 1,O=Ministry of Health,C=PL)
                            Expiration: 2023-05-26 11:53:10 UTC
                            Personal Name: Bettino Craxi
                            DOB: 1934-02-24
                            Нажмите на изображение для увеличения. 

Название:	bettino-craxi.png 
Просмотров:	496 
Размер:	1.2 Кб 
ID:	7949

                            Комментарий


                            • тк тут в теме писать больше неочем. мет приват кюча, не будет оригинального куера.
                              но может кому интересно-как в раше идет проверка

                              Нажмите на изображение для увеличения. 

Название:	maxresdefault-2.jpg 
Просмотров:	536 
Размер:	199.9 Кб 
ID:	8035

                              куер это линк на сайт госуслуг. там показывается типо привит

                              https://www.gosuslugi.ru/vaccine/cer...b-c070faa5ed16

                              Нажмите на изображение для увеличения. 

Название:	photo_2022-01-23_10-51-48.jpg 
Просмотров:	405 
Размер:	38.1 Кб 
ID:	8036

                              Комментарий

                              Обработка...
                              X