Перейти к содержанию
    

esaulenka

Свой
  • Постов

    1 454
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные esaulenka


  1. 9 hours ago, =AK= said:

    Вы невнимательно смотрели. У меня два LFSR, 32-битный и 16-битный.

    Да, вы правы. Претензию снимаю. Пока нвидия не снизила цены на видеокарточки на порядок-другой, можно считать 6-байтовый ключ надёжным - для его взлома в течении минут нужно железо ценой в десятки килобаксов. Правда, можно арендовать это железо - на 5 минут это будет недорого.

     

    9 hours ago, =AK= said:

    Мне как-то очень сомнительно, что такого же резyльтата можно достичь всего по 4 байтам. Это вы сами придумали?

    Так проверьте. Берём рандомный ключ, берём кусочек "выхлопа" вашей gamma() и брутфорсим. Про 4 байта я писал, когда (по ошибке) решил, что у вас ключ 4-байтовый. В этом случае с очень высокой долей вероятности (зависит от алгоритма и от расположения звёзд) у вас на выходе брутфорса будет 1-2 ключа. Добавлением буквально одного-двух бит известных данных лишние ключи выкидываются.

    Для простоты эксперимента можете кусок ключа зафиксировать (с соответствующим уменьшением известного текста).

     

    9 hours ago, =AK= said:

    Ничто не мешает изменить хотя бы gamma fetch schedule

    Да ничто не мешает взять ИЗВЕСТНЫЙ алгоритм, которым занимались ИЗВЕСТНЫЕ криптоаналитики. Много занимались, и нарыли уязвимости вроде "если собрать миллион пар plain-cipher, можно уменьшить количество вариантов в 2^5 раз" (т.е., на мой дилетантский взгляд, на практике бесполезные).

    Нет, вы будете использовать свой велосипед, главное преимущество которого - степень квадратности колёс секретна, и хакеру придётся целый день изучать дизассемблер, чтобы её узнать.
    Вон, в той же XTEA, что вы используете, алгоритм прописан в википедии. И почему-то никто не предлагает там менять дельту "для увеличения длины ключа".

     

    Микро-пример из жизни: достался по наследству проект. Там надо генерировать случайное число. Всё по-настоящему, 32 случайных бита. Только самодельный супер-алгоритм, который это делает, почему-то выдаёт только 256 разных случайных чисел...

  2. 1 hour ago, =AK= said:

    То есть, надо заранее знать 32 бита в теле каждого пакета, зашифрованного LFSR, чтобы расшифровать остаток пакета, вы это хотели сказать?

    Да. И это не такая редкая ситуация, когда кусок плэйн-текста известен. Например, в каждом сообщении передаётся какой-то статус, который злоумышленник знает. Зачем в "типа универсальный" алгоритм закладывать такие грабли, я не понимаю.

    А, да, у вас LFSR вообще 2 байта (я отвык от 16-битного "uint"). Т.е. для его брутфорса нужны 16..18 бит плэйн-текста и что-то быстрее атмеги.

     

    Что там у Jenya, он и сам не знает - то ли вайфай с TCP и JSON-ами, то ли 8-байтовый кан-пакет. В первом случае найти несколько известных байт - задача не особо хитрая...

  3. 5 hours ago, =AK= said:

    Шифрование тела сообщения потоковым шифром на базе LFSR используется, как я помню, в Блютус.

    А какое отношение LFSR в блютусе имеет к вашему LFSR ?

     

    5 hours ago, =AK= said:

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

    А-а-а, ну тогда да, нормальная защита.

    По факту ваше "шифрование" взламывается тупым брутфорсом, если знать 32 бита исходного сообщения. 4-байтный ключ перебирается за считанные секунды.

  4. 14 minutes ago, Alex_Golubev said:

    Как сказать gcc компилятору, что данные адреса могут быть не выравнены? 

    /**************************************************************************//**
     * @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

     

  5. 22 hours ago, planetzeus said:

    Насколько я понял, при старте бутлоадер размером в 8кБ отображается на адресах 0x7FFEE000...
    Но при попытке чтения из своего кода получаю только FF.

    Мне кажется, у вас с адресом ошибка. От этого 0x7FFEE000 до 0x8000'0000 - целых 68 килобайт. Попробуйте читать чуть дальше.

     

    (я, правда, могу путать. С 2368 я работал лет 8 назад...).

  6. 17 hours ago, _pv said:

    может как-то по другому можно заставить всегда генерить разные шаблонные типы даже для одинаковых параметров шаблона?

    Ну, допустим вы это даже как-то сгенерируете. Выбирать нужный вам вариант компилятор как будет?

    Вас точно не устраивает простейший вариант?

    void push(int i) { pushinteger(i); }
    void push(float f) { pushnumber(f); }

    Ну или полистайте гитхаб в поисках плюсовых обёрток для Луа. Там оно есть.

     

     

    5 hours ago, rkit said:

    что такое lua_push

    Это десяток однотипных функций, чтобы поместить аргумент в стек перед вызовом функции в интерпретаторе луа (по отдельной функции для каждого типа аргумента). Можете посмотреть описание (https://www.lua.org/manual/5.3/manual.html раздел 4), там всё просто.

  7. А вы вообще пробовали заглянуть в атоловскую техподдержку?

    http://fs.atol.ru/SitePages/Центр загрузки.aspx файлик "BP21 program manual".

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

  8. 35 minutes ago, jcxz said:

    На каком "другом"? ... А в исходном указан "C++".

     

    1 hour ago, jcxz said:

    IAR говорит при этом что это "C dialect: C99".

    Ну всё как обычно, ничего нового. Я спорить заканчиваю - кому-то, надеюсь, помогла информация, которую я привёл ранее, а в этой клоунаде участвовать смысла нет никакого.

  9. On 6/11/2021 at 3:05 PM, jcxz said:

    Почему это нельзя?

    Потому что инициализация выборочных полей массива описана в стандарте C99 (вот тут), но не описана ни в каком стандарте C++. Каких-то черновиков для включения в стандарт вроде б нет (но я очень невнимательно слежу за деятельностью комитета по стандартизации).

    В прошлом году (наконец-то!) подобный механизм для структур перетащили из C99 в C++20 (см. пункты 3, 4). Так что iar молодцы, конечно, но при перетаскивании этого кода куда-то ещё будут приключения.

     

    8 hours ago, Arlleex said:

    volatile const sCANID *const id;

    Я невнимательно читал тему. Это у вас настройки такие, что-ли? Иначе зачем так делать?

     

    8 hours ago, Arlleex said:

    typedef struct { ... }sCANID;

    Микро-совет. Если пишете на плюсах, пишите просто struct Name { ... };
    То же самое по смыслу, но а) букв меньше б) в IDE навигации по коду не вылезает анонимная структура.

  10. 29 minutes ago, Arlleex said:

    Но раз он будет абстрактным, то какого типа создавать сам объект очереди?

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

  11. 1 hour ago, Arlleex said:

    Теперь, собственно вопрос: а можно ли как-то контекстно выделить функцию или кусок исходника, в котором вызов Free() автоматически компилятором заменится на вызов конкретной FreeR() или FreeW()?

    Это называется полиморфизм. Виртуальная функция Free, которая переопределяется в двух наследниках буфера - один наследник читатель, второй - писатель.

    Но помимо запутанного кода (три класса вместо одного) будет оверхед виртуальных функций. Кажется, можно этого избежать (гуглить CRTP) но я б такое не делал - серьезное усложнение исходников на ровном месте. 

  12. 3 hours ago, MrBearManul said:

    Нет, они визжат от x86-ia64 gcc ветки. Но я думал, что "сверху" этот компилятор "мыслит" одинаково для любой архитектуры.

    Одинаково, да. Только под разные архитектуры его собирают разные команды, и в какие-то не самые популярные ветки новые "фишки" попадают ооочень нескоро.

    Впрочем, в версии 7.1, которую использует @Harvester, вся нужная магия уже есть (см. выше ссылку на godbolt, там можно мгновенно сравнить разные компиляторы). Осталось только поменять расширение файла с исходником с ".c" на ".cpp".

    Ваш IAR, кстати, тоже более-менее должен уметь современный С++ (пример, который я показывал, это C++14).

  13. 53 minutes ago, Harvester said:

    Я так и делаю, просто хочу понять, почему не работает сабж.

    Потому что вам надо пользоваться компилятором, который знает, что такое compile-time optimization. В свежих C++ всё работает, там люди приложили кучу сил, чтобы множество действий, которые должны быть выполнены в процессе старта программы, выполнялись компилятором, и в программу попадало уже готовое значение.

    https://godbolt.org/z/MbMGnxxGr

  14. 13 hours ago, haker_fox said:

    Не наш подход)

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

    Прочитайте даташит, сделайте библиотечку, проверьте всё на живом железе, расскажите подробности - Вам спасибо скажут. Но вот что-то подсказывает, что ни дисплей этот, ни документацию на него Вы в глаза не видели.

    Вместо этого пятая страница переливаний из пустого в порожнее.

  15. 18 minutes ago, Arlleex said:

    Вот интересно еще, на что эта функция резервирует аж 72 байта

    Блин, ну вбейте уже в гугл "ILI9341 init" и насладитесь десятком вариаций кода, который скармливает этому дисплею портянки каких-то байтиков (без комментариев, что именно эти байтики значат. очень удобно). Там подобных writedata ещё несколько штук должно быть.

     

    Очередная тема ни о чём. "Хочу оптимайзить код мач беттер зен компайлер, но не хочу и не буду ридить мануал". Прям вот классика, уже не первая тема тут такая.

     

  16. Евгений, предлагаю отделить мух от котлет: схемотехника отдельно, софт - отдельно.

    Например, задачу "сделать нанопотребляющий вход для подсчёта импульсов" я не осилю (текущее решение с включением-отключением подтяжки, если честно, выглядит костылём), а софт под какой-нибудь STM32L010 (выбрано в терре по принципу "самый дешёвый из L-серии) сделать вполне смогу.

    Ежели что, мой телеграм совпадает с здешним ником.

  17. Для упрощения диагностики предлагаю проверять содержимое памяти после каждого шага отладчиком. Ну и лог. анализатор на линиях rx-tx тоже может помочь.

     

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

    55 minutes ago, haker_fox said:

    ответ приходит "10 CR LF". Т.е. данные просто не равны

    Что странно. Документ обещает "COMPARE_ERROR | (Followed by the offset of first mismatch)", т.е. нолик куда-то потерялся...

     

    Ну и про то, что адреса должны быть в десятичной системе, вы же в курсе?

  18. 1 hour ago, Darth Vader said:

    почему статический метод класса одновременно не может быть константным? В моем понимании

    А какое у Вас понимание?

    В данном случае, const - это метод, который не меняет экземпляр класса (т.е. только читает его переменные), static - метод, который вообще не требует наличия экземпляра (т.е. в принципе не может ничего поменять). Следовательно, static метод по определению const.

  19. On 9/17/2020 at 12:58 PM, CADiLO said:

    Либо Вы неправильно подсмотрели, либо я с такой документацией не сталкивался

    Мне кажется, тут третий вариант - команда есть, документации нет.

    Во всяком случае, гугель говорит, что на AT&V SIM800C значением этой +FSEXT отвечает.

  20. On 7/8/2020 at 7:10 AM, murmur said:

    как запустить в Кейл ту функцию, которая для этого предназначена

    http://www.keil.com/support/man/docs/uv4/uv4_db_dbg_serialwin.htm

    Производитель нам сообщает, что эта функция предназначена исключительно для симулятора - отладки без использования реального железа. Т.е. достаточно бесполезная штука, и к вашему случаю мало относящаяся.

×
×
  • Создать...