-
Постов
1 462 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент esaulenka
-
В стародавние времена проект жил на сорсфорже, если я ничего не путаю. И в 3-й версии там есть ARM7 && IAR. В 4-ю оно уже не попало (некому перетаскивать было?..) https://sourceforge.net/projects/scmrtos/files/scmrtos/
-
NFC ключ клонирование
esaulenka ответил uriy тема в В помощь начинающему
Если вы про mifire (судя по упоминанию телефона), то там как-то сложно всё. У меня есть в закладках https://mysku.ru/blog/ebay/41849.html хотел скопировать ключ от нашего подъезда, но руки так и не дошли (особенно после выяснения кода от этого домофона). -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Ну ок. Своим мнением о велосипедостроении я поделился, больше мне выковыривать из носа нечего. Поль-зо-ва-тель? Конечный? Он слова-то LFSR не знает. У нас же типа "безопасность через скрытность", как оно там внутри устроено, никому рассказывать нельзя. Тут @Vasily_ как-то упоминал, что дамп атмеги стоит несколько сотен баксов. Я не проверял. Ну, вам просто к сведению. Спор, постоянно скачущий с бузины на киевского дядьку, пошёл на очередной круг. Ещё раз напомнить, что вы зачем-то мешали сложность подбора полинома и сложность подбора ключа? Мне надоело, спасибо за беседу. -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
У нас разные "подразумевается". Я подразумеваю, что вменяемый программист без должной подготовки в области криптографии не полезет менять известный и проверенный алгоритм. Замена ключа - ок, это можно и нужно доверить конечному пользователю (правильный алгоритм работает одинаково с любым ключом, главное - чтоб он был достаточно случайным), но в случае изменений алгоритма очень легко накосячить. Попробую другими словами. Вы продаёте одинаковые устройства хорошим пользователям А, Б, Це и плохому Зет. Алгоритм в этих устройствах одинаковый, полином шифрования - тоже (делать по-другому - изрядный геморрой для вас, производителя). Зет берёт IDA и потрошит весь ваш алгоритм. Данные хороших пользователей теперь защищает только ключ (они же вменяемые пользователи, и установили свой собственный ключ шифрования). Но буквально на прошлой неделе вы складывали сложность взлома ключа и сложность взлома алгоритма (полинома). Это разные сложности, они могут складываться, только если алгоритм у каждого свой. -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Это та же мысль, что я хотел донести, только описанная более "прямым" языком. Спасибо за это. Остались мелочи - разобраться, кто и как будет менять алгоритм шифрования (в частном случае - ваш полином) в устройствах. Вариант 1. Вы лично знаете всех трёх покупателей вашего устройства, и готовы делать для них персональные прошивки, не накосячить при их обновлении, не забыть, что тот же полином должен быть в остальных устройствах, которые взаимодействуют с этим? Отлично, подбираем нужный алгоритм (это отдельные затраты мозговых усилий - подобрать полином, чтобы алгоритм шифрования не выродился во что-то примитивное, но вы явно в теме), получаем плюс N-цать бит для брутфорсера. Вариант 2. У вас проданы сотня-тысяча-миллион устройств, и следить за всеми в блокноте несколько затруднительно. Делаем какой-то сервис, чтобы клиент мог автоматически это как-то делать. Придумываем процедуру замены, отправку полинома по какому-то более-менее защищённому каналу. Ой, кажется, у нас появился второй secret key. Прямо точно такой же (только с некоторыми ограничениями), надо его объединить с, собственно, ключом. Непонятно, чего мы добились... Я почему-то вижу вокруг только второй вариант. Но да, я не общаюсь с военными, у них там свой собственный мир... -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Последнее время вместо ежедневных "куб авно, я его даже не видел, но так все говорят" вы начали общаться не по теме в "общении". Это можно только приветствовать. Уж не переход ли это на личности? Может, вы тогда конкретный вопрос зададите? -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Пора сворачивать дискуссию. По этой ссылке именно так и написано - этот принцип работает плохо. С примерами. Точно, пора сворачивать. Дальше выяснится, что у меня нет степени доктора физ-мат наук (действительно нет. Диплом с надписью "инженер" - есть, какой-либо бумаги с надписью "математик" или "криптоаналитик" - нету). Вы же не поверите объяснению "на пальцах", что хороший алгоритм должен "размешивать" биты ключа, чтобы изменение одного бита ключа давало максимальные изменения в шифротексте. И это работает в обратную сторону - берём результат не короче исходного ключа, и ему будет соответствовать ровно один набор битов ключа. Так как мир неидеален, возможны коллизии, и понадобится ещё несколько бит, чтобы от них избавиться. В случае блочного шифра есть ещё ограничение, что байты в блоке влияют друг на друга, но для потокового шифра это неважно. -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Кажется, в любом месте, где обсуждается криптография, написано большими буквами "security through obscurity не работает". Все алгоритмы, которыми пользуются большие дяди, 100 раз описаны и 1000 раз исследованы. Так я и предлагаю вам самостоятельно поэкспериментировать. На тех шифрах, что мне было интересно поковырять, это прекрасно работает (но мне нельзя верить, разумеется). Для умного дома, где вы это использовали, этой защиты даже с избытком (у вас там радио даже нет, хакеру придётся незаметно подключаться к проводу за плинтусом?). И если б все эти оговорки были в вашем изначальном сообщении - я б и слова не сказал. Но этот алгоритм был представлен как универсальный, без каких-то ограничений. Впрочем, если Jenya собирался в каждое сообщение добавлять ключ шифрования, ЛЮБОЙ другой вариант поднимает криптостойкость в миллионы раз :-)) -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Да, вы правы. Претензию снимаю. Пока нвидия не снизила цены на видеокарточки на порядок-другой, можно считать 6-байтовый ключ надёжным - для его взлома в течении минут нужно железо ценой в десятки килобаксов. Правда, можно арендовать это железо - на 5 минут это будет недорого. Так проверьте. Берём рандомный ключ, берём кусочек "выхлопа" вашей gamma() и брутфорсим. Про 4 байта я писал, когда (по ошибке) решил, что у вас ключ 4-байтовый. В этом случае с очень высокой долей вероятности (зависит от алгоритма и от расположения звёзд) у вас на выходе брутфорса будет 1-2 ключа. Добавлением буквально одного-двух бит известных данных лишние ключи выкидываются. Для простоты эксперимента можете кусок ключа зафиксировать (с соответствующим уменьшением известного текста). Да ничто не мешает взять ИЗВЕСТНЫЙ алгоритм, которым занимались ИЗВЕСТНЫЕ криптоаналитики. Много занимались, и нарыли уязвимости вроде "если собрать миллион пар plain-cipher, можно уменьшить количество вариантов в 2^5 раз" (т.е., на мой дилетантский взгляд, на практике бесполезные). Нет, вы будете использовать свой велосипед, главное преимущество которого - степень квадратности колёс секретна, и хакеру придётся целый день изучать дизассемблер, чтобы её узнать. Вон, в той же XTEA, что вы используете, алгоритм прописан в википедии. И почему-то никто не предлагает там менять дельту "для увеличения длины ключа". Микро-пример из жизни: достался по наследству проект. Там надо генерировать случайное число. Всё по-настоящему, 32 случайных бита. Только самодельный супер-алгоритм, который это делает, почему-то выдаёт только 256 разных случайных чисел... -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Да, можно так: https://godbolt.org/z/E1djrKEdb -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
Да. И это не такая редкая ситуация, когда кусок плэйн-текста известен. Например, в каждом сообщении передаётся какой-то статус, который злоумышленник знает. Зачем в "типа универсальный" алгоритм закладывать такие грабли, я не понимаю. А, да, у вас LFSR вообще 2 байта (я отвык от 16-битного "uint"). Т.е. для его брутфорса нужны 16..18 бит плэйн-текста и что-то быстрее атмеги. Что там у Jenya, он и сам не знает - то ли вайфай с TCP и JSON-ами, то ли 8-байтовый кан-пакет. В первом случае найти несколько известных байт - задача не особо хитрая... -
Шифрование данных
esaulenka ответил jenya7 тема в В помощь начинающему
А какое отношение LFSR в блютусе имеет к вашему LFSR ? А-а-а, ну тогда да, нормальная защита. По факту ваше "шифрование" взламывается тупым брутфорсом, если знать 32 бита исходного сообщения. 4-байтный ключ перебирается за считанные секунды. -
/**************************************************************************//** * @file cmsis_gcc.h * @brief CMSIS compiler GCC header file * @version V5.3.0 * @date 28. January 2020 ******************************************************************************/ /* * Copyright (c) 2009-2019 Arm Limited. All rights reserved. #ifndef __UNALIGNED_UINT32_WRITE #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpacked" #pragma GCC diagnostic ignored "-Wattributes" __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; #pragma GCC diagnostic pop #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) #endif #ifndef __UNALIGNED_UINT32_READ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpacked" #pragma GCC diagnostic ignored "-Wattributes" __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; #pragma GCC diagnostic pop #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) #endif
-
Как прочесть бутлоадер
esaulenka ответил planetzeus тема в NXP
Мне кажется, у вас с адресом ошибка. От этого 0x7FFEE000 до 0x8000'0000 - целых 68 килобайт. Попробуйте читать чуть дальше. (я, правда, могу путать. С 2368 я работал лет 8 назад...). -
с++, шаблоны, указатели на функции
esaulenka ответил _pv тема в Программирование
Ну, допустим вы это даже как-то сгенерируете. Выбирать нужный вам вариант компилятор как будет? Вас точно не устраивает простейший вариант? void push(int i) { pushinteger(i); } void push(float f) { pushnumber(f); } Ну или полистайте гитхаб в поисках плюсовых обёрток для Луа. Там оно есть. Это десяток однотипных функций, чтобы поместить аргумент в стек перед вызовом функции в интерпретаторе луа (по отдельной функции для каждого типа аргумента). Можете посмотреть описание (https://www.lua.org/manual/5.3/manual.html раздел 4), там всё просто. -
библиотека tcs command
esaulenka ответил SergeyVas тема в Программирование
А вы вообще пробовали заглянуть в атоловскую техподдержку? http://fs.atol.ru/SitePages/Центр загрузки.aspx файлик "BP21 program manual". Какая вам библиотека нужна для отправки нескольких текстовых строчек в компорт, я не понимаю. -
Странный стиль работы компилятора
esaulenka ответил inventor тема в Программирование
Особенно непонятно, что говногцц предупреждение в этом месте таки выдаёт: https://godbolt.org/z/oKx4djrcr -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Ну всё как обычно, ничего нового. Я спорить заканчиваю - кому-то, надеюсь, помогла информация, которую я привёл ранее, а в этой клоунаде участвовать смысла нет никакого. -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Прочитайте внимательнее исходное сообщение. @Arlleex вообще на другом языке пишет. -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Потому что инициализация выборочных полей массива описана в стандарте C99 (вот тут), но не описана ни в каком стандарте C++. Каких-то черновиков для включения в стандарт вроде б нет (но я очень невнимательно слежу за деятельностью комитета по стандартизации). В прошлом году (наконец-то!) подобный механизм для структур перетащили из C99 в C++20 (см. пункты 3, 4). Так что iar молодцы, конечно, но при перетаскивании этого кода куда-то ещё будут приключения. Я невнимательно читал тему. Это у вас настройки такие, что-ли? Иначе зачем так делать? Микро-совет. Если пишете на плюсах, пишите просто struct Name { ... }; То же самое по смыслу, но а) букв меньше б) в IDE навигации по коду не вылезает анонимная структура. -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Да, вы правы, фигня получается. Должен заработать только статический полиморфизм (см. мою ссылку выше) с явным приведением типа очереди в читателе и в писателе. Но за такое явное приведение в приличном обществе будут бить... -
Плавный переход C -> C++ под МК
esaulenka ответил Arlleex тема в Программирование
Это называется полиморфизм. Виртуальная функция Free, которая переопределяется в двух наследниках буфера - один наследник читатель, второй - писатель. Но помимо запутанного кода (три класса вместо одного) будет оверхед виртуальных функций. Кажется, можно этого избежать (гуглить CRTP) но я б такое не делал - серьезное усложнение исходников на ровном месте. -
Одинаково, да. Только под разные архитектуры его собирают разные команды, и в какие-то не самые популярные ветки новые "фишки" попадают ооочень нескоро. Впрочем, в версии 7.1, которую использует @Harvester, вся нужная магия уже есть (см. выше ссылку на godbolt, там можно мгновенно сравнить разные компиляторы). Осталось только поменять расширение файла с исходником с ".c" на ".cpp". Ваш IAR, кстати, тоже более-менее должен уметь современный С++ (пример, который я показывал, это C++14).
-
Потому что вам надо пользоваться компилятором, который знает, что такое compile-time optimization. В свежих C++ всё работает, там люди приложили кучу сил, чтобы множество действий, которые должны быть выполнены в процессе старта программы, выполнялись компилятором, и в программу попадало уже готовое значение. https://godbolt.org/z/MbMGnxxGr
-
То, что Ваш подход - влезать в незнакомую тему с банальными советами, Вам уже не раз говорили. Прочитайте даташит, сделайте библиотечку, проверьте всё на живом железе, расскажите подробности - Вам спасибо скажут. Но вот что-то подсказывает, что ни дисплей этот, ни документацию на него Вы в глаза не видели. Вместо этого пятая страница переливаний из пустого в порожнее.