- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 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 чтобы ксорить с ним заливаемую прошивку.
@j123123
З.Ы. А вообще пишут, есть же микропитон.
Но так вообще питон в урезанном виде в контроллеры давно запихивают, см. https://micropython.org/
Вот жеж хуйня, нет чтобы добавить #embed как в сишечке https://thephd.dev/finally-embed-in-c23
хотя в питоне нихуя такого не добавить, потому что нет там никакого компилтайма, но почему б тупо не читать это говно из файла?
А зачем? В питоне ведь можно тупо rom = open('rom.dat').read()... А тут автор хотел выебнуться и не делать отдельный файл.
З.Ы. Ещё и пожал зачем-то... Походу нулей дофига было для выравнивания.
А может надо еще некую хуйню с тем файлом сделать, например развернуть порядок байт, и чтобы это разворачивание было не в рантайме, а как-нибудь заранее?
Да и в целом открытие какого-то файла и прочтение его это анскильно, лишние операции. Если прямо в ELF файл вхуярить, никаких лишних действий не нужно
ты забыл закрыть файл, молодец
Это не С++, тут нужно не забывать with
Я заmmапил файл, получил direct buffer, и давай его читать. Прочитал -- и хочу его закрыть. А хуй там. Закроет его только GC когда время придет.
Я открыл 10050 файлов, и операционка меня нахуй послала.
Пришлось как-то рефлексией там подлазить и закрывать его явно
Но емнип по-моему описанный прикол с буфером на ГК уже разбирали.
И рефлексию, и что в разных версиях явы оно ещё по-разному реализовано в кишках (то есть непортабельно между jdk 7, 8 и 9) .
EDIT: вот этот пиздец ебаный
https://govnokod.ru/28254#comment779049
omdat это "потому что" по-нидерландски
К чести питоноблядяей, наиболее умненькие из низ всё таки используют os.path.join и пр. Остальные "c:\едят/говно"
Я какие-то .res файлы на винде влинковывал на шестой примерно студии
К — Криптографическая стойкость.
Какой диффи-хеллман )))
Но вместо шифрования получился xor с ключом, вместо KDF получился тупой выбор байтиков из соли, а вместо секретного ключа в ППЗУ получился серийник чипа, который он показывает любому желающему.
Мартышка и очки, в общем.
--Скажи пароль
--Пароль
--Проходи
```
Современная джава не сильно от плюсов отстает, потому что часто используемый код компилируется во время исполнения, так что по началу медленнее, но через некоторое время работы приложение ускоряется, да и современные сборщики мусора работают весьма шустро
```
а, ну и дурак онечно тоже, кудаж без дурака?
```
При желании можно использовать ту же библиотеку numba и код пайтона будет быстрее с++
```
---
```В реальности вместо плюсов, Go
```
ахахахахахаа, ну конечно. GC особенно полезен для разработки AAA игр
А потом привыкаешь.