1. Python / Говнокод #28531

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    key_base_len = random.randint(30,61)
    key_base = bytearray(key_base_len)
    for i in range(key_base_len):
        key_base[i] = random.randint(0,255)
    
    key = bytearray(8)
    key[0] = chip_uid_chksum ^ key_base[ 4 * (key_base_len // 7)]
    key[1] = chip_uid_chksum ^ key_base[      key_base_len // 5 ]
    key[2] = chip_uid_chksum ^ key_base[      key_base_len // 7 ]
    key[3] = chip_uid_chksum ^ key_base[ 6 * (key_base_len // 7)]
    key[4] = chip_uid_chksum ^ key_base[ 3 * (key_base_len // 7)]
    key[5] = chip_uid_chksum ^ key_base[ 3 * (key_base_len // 5)]
    key[6] = chip_uid_chksum ^ key_base[ 5 * (key_base_len // 7)]
    key[7] = (chip_id + key[0]) & 0xff
    
    return key, key_base

    Китайцы и криптография.

    Сначала программатор отдаёт контроллеру key_base, а затем юзает key чтобы ксорить с ним заливаемую прошивку.

    Запостил: bormand, 31 Декабря 2022

    Комментарии (41) RSS

    • Контроллеры уже на Python пишут? Охуеть.
      @j123123
      Ответить
      • Это кусок опенсурсного программатора.

        З.Ы. А вообще пишут, есть же микропитон.
        Ответить
      • По-моему это хуйня, которая работает на компе и некий контроллер прошивает.
        Но так вообще питон в урезанном виде в контроллеры давно запихивают, см. https://micropython.org/
        Ответить
        • https://github.com/hanhdt/esp32-flash-tool/blob/5a3b12e7413f48d6d15f3ab5a7aae4ed55d39753/static/esptool/esptool.py#L4919
          ESP8266ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b"""
          eNq9Pftj1DbS/4rthCQbkiLZXq/Mo2w2yQItXCEcKddL28gvelxpwzZXcj34/vbP85Jl7yaB67U/LFl5ZWk0M5q3xH8265/OF//evB1oNUlNmmTjeCfYrOy5bZ8VmycXypxcGH1y0dT328aYP2n7Ue0nbj9J+5lw\
          O+FPQe0iP7mo2t+0mp5c1I3X0FXbMNworGv80PZzfer2cY6Nc/ft5KJUruH3Ni0sleVG03gNfKEYvNB9e9n+Wg6etf9WDb8OC6kVNu64b6sGouUtdWjX1w5Va2y0S6pjfmxbTNUJNtr56xS/tf/W40unWPWtXVmd\


          Вот жеж хуйня, нет чтобы добавить #embed как в сишечке https://thephd.dev/finally-embed-in-c23

          хотя в питоне нихуя такого не добавить, потому что нет там никакого компилтайма, но почему б тупо не читать это говно из файла?
          Ответить
          • > добавить #embed

            А зачем? В питоне ведь можно тупо rom = open('rom.dat').read()... А тут автор хотел выебнуться и не делать отдельный файл.

            З.Ы. Ещё и пожал зачем-то... Походу нулей дофига было для выравнивания.
            Ответить
            • > А зачем? В питоне ведь можно тупо rom = open('rom.dat').read()...

              А может надо еще некую хуйню с тем файлом сделать, например развернуть порядок байт, и чтобы это разворачивание было не в рантайме, а как-нибудь заранее?
              Да и в целом открытие какого-то файла и прочтение его это анскильно, лишние операции. Если прямо в ELF файл вхуярить, никаких лишних действий не нужно
              Ответить
              • Тогда можно обработать файл заранее и вкомпилить результат через py_compile. Не ELF конечно, но и так сойдёт.
                Ответить
            • >open('rom.dat').read()
              ты забыл закрыть файл, молодец

              Это не С++, тут нужно не забывать with
              Ответить
              • Процесс сдохнет — сам закроется. До 7 жабы жфавушки обычно так и жили. «До того как этот файл кому-то понадобится или ГЦ случится или программа завершится»
                Ответить
                • ужас, какой грязный кодстайл.
                  Ответить
                • У меня вот буквально недавно на жабе был багор.
                  Я заmmапил файл, получил direct buffer, и давай его читать. Прочитал -- и хочу его закрыть. А хуй там. Закроет его только GC когда время придет.

                  Я открыл 10050 файлов, и операционка меня нахуй послала.

                  Пришлось как-то рефлексией там подлазить и закрывать его явно
                  Ответить
                  • Какой ГЦ )))
                    Ответить
                    • «а в языках с ГЦ про память можно не думать» ⓒ

                      Но емнип по-моему описанный прикол с буфером на ГК уже разбирали.
                      И рефлексию, и что в разных версиях явы оно ещё по-разному реализовано в кишках (то есть непортабельно между jdk 7, 8 и 9) .

                      EDIT: вот этот пиздец ебаный
                      https://govnokod.ru/28254#comment779049
                      Ответить
              • То ли дело
                Path('omdat').read_bytes()
                Ответить
                • pathlib по какой-то причине не популярен у питухят

                  omdat это "потому что" по-нидерландски
                  Ответить
                  • Лол, из буста украли идею про конкатенацию путей через деление?
                    Ответить
                    • да. Но плоха та скриптоблядь, что хранит пути не в строке и собирает их не через строковую инетпроялцию

                      К чести питоноблядяей, наиболее умненькие из низ всё таки используют os.path.join и пр. Остальные "c:\едят/говно"
                      Ответить
          • В сишке ембедили бинарные говны еще двадцать лет назад, просто стандарта не было

            Я какие-то .res файлы на винде влинковывал на шестой примерно студии
            Ответить
      • микропитон же
        Ответить
    • Что там random в питоне использует? LCE от glibcевского random?

      К — Криптографическая стойкость.
      Ответить
      • С учётом того, что весь этот рандом открытым текстом улетает по USB, это абсолютно некритично.

        Какой диффи-хеллман )))
        Ответить
        • а если ты подключен через левый usb хаб?
          Ответить
          • Как я по-ня-ла, WCH хотели сделать "безопасное" обновление прошивки, чтобы юзер не мог перехватить её и залить в другой чип.

            Но вместо шифрования получился xor с ключом, вместо KDF получился тупой выбор байтиков из соли, а вместо секретного ключа в ППЗУ получился серийник чипа, который он показывает любому желающему.

            Мартышка и очки, в общем.
            Ответить
            • Пованивает ли твой детородный орган говнohm, bormand?
              Ответить
              • присоединяюсь к вопросу.
                Ответить
                • ответа не было, значит, вопросу присваивается статус риторического...
                  Ответить
            • Понятно

              --Скажи пароль
              --Пароль
              --Проходи
              Ответить
    • Джефри Хаммер?
      Ответить
    • https://vk.com/wall-72495085_1379417
      Ответить
      • И первый же коммент там маркетинговый булщит

        ```
        Современная джава не сильно от плюсов отстает, потому что часто используемый код компилируется во время исполнения, так что по началу медленнее, но через некоторое время работы приложение ускоряется, да и современные сборщики мусора работают весьма шустро
        ```

        а, ну и дурак онечно тоже, кудаж без дурака?
        ```
        При желании можно использовать ту же библиотеку numba и код пайтона будет быстрее с++
        ```
        ---
        ```В реальности вместо плюсов, Go
        ```
        ахахахахахаа, ну конечно. GC особенно полезен для разработки AAA игр
        Ответить
        • > по началу медленнее

          А потом привыкаешь.
          Ответить
    • Фу, вы серьёзно в 30+ тащитесь по рисованным 2Д японским девочкам?
      Ответить

    Добавить комментарий