Змея / Говнокод #28531 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 bormand, (Updated )

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

    • Это кусок опенсурсного программатора.

      З.Ы. А вообще пишут, есть же микропитон.
      Ответить
    • По-моему это хуйня, которая работает на компе и некий контроллер прошивает.
      Но так вообще питон в урезанном виде в контроллеры давно запихивают, см. 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
                    Ответить
              • pathlib по какой-то причине не популярен у питухят

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

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

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

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

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

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

          Мартышка и очки, в общем.
          Ответить
    • И первый же коммент там маркетинговый булщит

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

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

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8