Jump to content

    

Salamander

Участник*
  • Content Count

    465
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Salamander

  • Rank
    Местный

Recent Profile Visitors

1838 profile views
  1. Настройки кубовские или, ваши?
  2. Ну а если крайний вариант - серийник является ключом к шифру. И апдейт уникален. Тогда что?
  3. Уникален не апдейт. Уникален бутлодер. Апдейт просто так не установишь в контрлллер, он зашифрован, а потому его можно выкладывать в сети. Расшифровывает прошивку бутлодер, его и нужно защитить. То есть мы делаем уникальным бутлодер, причем делаем это на этапе изготовления, один раз. Спаяли плату, бутлодер считал серийники флешки и контроллера, и поженил их. То есть записал по некоему адресу контрольную сумму из этих серийников. И если контроллер вздумает совершить прелюбодеяние с другой флешкой, то... То есть имеем дамп бутлодера, дизассемблируем и отламываем? В принципе, это просто, если догадаться, что она есть. Одно дело, когда у нас на экране компа выдается требование ввести пароль и мы знаем, что отлаживать и что перехватывать. Другое дело тут. Но это вопрос времени наверное.
  4. Может я чего не понимаю... причем здесь ключи? Вот есть рабочее устройство, способное принять в себя зашифрованную прошивку. Устройство скопировали. Исходный контроллер растворили, добрались до битов защиты, короче, скачали бутлодер, в котором хранится ключ, и записали в новый контроллер. Как сделать, чтоб бутлодер не работал с новым контроллером и с новой флешкой? Я предлагаю сделать проверку серийников флеши и, контроллера. Тогда мало будет извлечь бутлодер, нужно его еще и взломать, чтобы он серийники не проверял. В этом решении где слабые места?
  5. Коллеги, встал такой вопрос. Сразу скажу, мантру "если кому-то очень нужна прошивка, то ее считают", я знаю. Так вот я хочу лишь по максимуму усложнить задачу взломщику, а там как получится. Хочу поделиться своими мыслями и услышать от опытных людей мнение, эффективны ли будут эти меры или толку от них как от навешивания дополнительных замков на гнилые двери. Скажу сразу, что саму прошивку, как таковую, защищать не надо. Д ло в том, что эксплуатация устройства подразумевает обновление прошивки пользователем, скачивание ее из интернета и самостоятельная заливка через бутлодер. А посему первый рубеж обороны - это шифрация файла прошивки и расшифровка ее бутлодером на этапе заливки в контроллер. То есть, по сути, защищать мне придется бутлодер, ибо, если его скачать, то можно будет спокойно заливать зашифрованную прошивку в левые устройства. Однако, вот вам пример как эту защиту обошли наши хакеры https://3dtoday.ru/blogs/jmz/mks-robin-part-two-the-taming-of-the-shrew-firmware/ В чем собственно, моя идея, как я хочу усложнить жизнь нарушителям авторских прав. У меня контроллер stm сопряжен с внешней флешью. Без нее он просто не работает (скорее всего вываливается в HardFault). Есть мысль приучить программу, заливаемую в контроллер, к конкретной флешке, у нее же есть серийный номер. Тогда помимо скачивания прошивки (бутлодера), в случае успеха данного действа, ее нужно будет еще и ломать - вычислять, куда пишется серийный номер флешки, подменять его на нужный. Скажите, это уменьшит вероятность копирования устройства? Или же это второй титановый замок на гнилые двери? Можно пойти дальше - адрес, по которому записан необходимый для сверки серийный номер флешки, случайный. И информация о нем хранится не в контроллере, а во флешке. То есть, программа при загрузке обращается к флешке, узнает у нее адрес, по которому можно прочесть серийник допустимой к использованию флешки и сравнить его с номером, записанным во флеши. Это усложнит жизнь взломщику, или опять таки, это дополнительный замок на гнилые двери? В идеале хочется, чтобы конкретный контроллер работал только с конкретной флешкой. У кого какой опыт?
  6. Так принципиальную схему я и разрабатывал. У меня 32 бита. Все подключены. Когда спаял плату, корректно прочесть данные не получилось. Я достал из ящика плату дискавери. Посмотрел схему. На схеме 32 битная микросхема, у которой задействовано лишь 16 линий данных, остальные резистором притянуты к земле кажется. И в кубе пример для этой платы тоже настроен на 16 бит. Сделал я проект, попробовал пописать в память на плате - ура, работает. Взял свою 32 битную плату, внушил ей, что на ней 16 битная память - ура, работает. Разбирательства почему у меня не работало на 32 битах, я оставил на потом. "Потом" настало вчера, но, как указано в начале темы, я или что-то ковырнул, не подумав или спалил микросхему. О чем собственно и спросил, создав тему, мол может ли возникать хардфаульт при неисправной микросхеме. Из двух возможных вариантов ответа в теме прозвучало два.
  7. А вот с этого момента поподробнее. Я, кстати, когда все работало, игрался с шириной шины (ставил в настройках 16 бит), с форматом записываемых данных (писал 32 битные данные) и у меня не всегда получалось их потом правильно прочесть. Жаль, не проверял тогда - есть ли hard fault. Ответьте на ряд вопросов по адресации sdram. 1. Влияет ли как-то ширина шины sdram, на то, как я буду читать из нее данные программным кодом, обращаясь как единому адресному пространству? Для примера у меня 32 битная сдрам. Начальный адрес 0хc0000000. Я хочу записать 4 байта. Эти 4 байта влезут в одну ячейку памяти, по одному ее физическому адресу. Но в адресное пространство эти байты будут записаны по адресам 0хс000000-0хс0000003, так? А если я запишу 32 битное слово, то в едином адресном пространстве оно так же будет располагаться по адресам 0-3? А если я захочу прочитать 32 битное слово, которое я раньше записал по адресу 0хс0000000, то контроллер возьмет эти данные из одной ячейки микросхемы сдрам, спроецирует их в адрсное пространство по адресам 0-3, а мне выдаст в виде склеенных четырех байт . Если у меня 8битная память, то будет то же самое - в едином адресном пространстве по каждому адресу записано 8 бит, а захоти я прочитать или записать несколько 32 битных слов, мне просто нужно обращаться к адресам, кратным 4м? Просто скажите, правильно ли я понял механизм? 0xc0000000, размер памяти 1м х 32 х 4 банка ГУИ тут ни при чем, он не установлен, я ручками пишу и читаю. Еще вопрос - особо волнует - в настройках сдрам можно выбрать ширину 32 бит. При этом есть еще одна опция byte enable. Она можеть быть отключена, может быть равна не только 32 бита, но и 16 бит? Как это понимать?
  8. А если не отключать fmc, но не инициализировать сдрам, будет фаульт? Ну допустим, что может его вызвать?
  9. И как это приводит к зависанию контррллера? Он ведь, в конечном счете дрыгает ногами. Во время записи обратной информации не получает. Даже ноги свои в режим чтения не переводит. В общем, наверное я сделаю вот что.... отключу fmc совсем. И попробую записать. Sdram, конечно, в этом случае не будет влиять, но вот другой вопрос - не свихнется ли контроллер от попытки обратиться по несуществующему адресу?
  10. Ок, а что тогда может вызывать зависание на, строке
  11. Добрый день. Настраиваю связку MT48LC4M32B2P-6A + stm32f7 Первоначально память завелась сразу, я написал коротенький код, заполняющий буфер, копирующий из буфера в sdram, а затем читающий из сдрам в другой буфер. Сверил оба буфера, все ОК. И успокоился. После этого я много чего настраивал, менял, возможно поменял что-то, не касающееся сдрам напрямую, но влияющее га ее работу. А может быть и память накрылась Короче, когда я снова попытался поработать с памятью - данных при чтении не получил. Отладка показала, что генерируется прерывание HardFault на строке, которая пишет в память по определенному адресу. Скажите, этот факт, он как то может свидетельствовать о том, что проблема га в микросхеме памяти, а в коде или в настройках контроллера? Я к тому, что, насколько я представляю себе принцип работы sdram, у контроллера нет обратной связи с микросхемой при записи, контроллер дрыгает ногами и не получает от микросхемы какого либо подтверждения исполнения. Другими словами, если микросхему вообще выпаять, или если она в силу неисправности не будет отвечать, то к зависанию в микроконтроллере это не приведет, программа после попытки записи двинется дальше, а при чтении получит нули, правильно? или возможны варианты? Аналогичной микросхемы, чтобы путем перепаивания, проверить, у меня нет, код весь излазил, не пойму в чем причина.
  12. Очень часто вижу, как при критике платы некоторые советуют закруглить пады под ножки микросхем. Какой практический смысл это имеет? Легче паять руками? Или выше качество при пайке в печи? Ну и на каких типах футпринтов пады лучше закруглять? Понятно, что на резисторах и конденсаторах - это изврат. Ну а скажем транзивторы в sot-23? В общем, кто какой стратегии придерживается? Вот у меня кстати на плате будет много резисторных сборок 0603 формата, паять буду ручками. Как лучше поступить - закруглить или оставить прямоугльными?
  13. Господа пытаюсь вникнуть в суть означенной темы, не все моменты мне понятны, прошу помощи в их прояснении. Точнее прошу сказать, правильно ли я понял то, что удалось понять))) У меня задача создать устройство, которое по программе будет управлять 5-ю исполнительными устройствами (громко сказано, это светодиоды, ну и пару транзисторных ключей, которым неясно пока, что будет цепляться). Учитыва простоту задачи и острую необходимость снижения потребления, габаритов и стоимости, хочу обойтись средствами ядра CC2541. Задача следующая - по блютус заливаются настройки (их нужно принять и разместить где-то в памяти), а в соответствии с настройками дергать пинами PIO чипа cc2541 В связи с этим ряд вопросов 1. Могу ли я решить подобную задачу исключительно силами ядра CC2541 ? 2. Правильно ли я понял, что для этого нужно скачать стек (исходник, оформленный проект) в который я свободно могу поместить желанный код? 3. Не увидел в описании чипа сведений о EEPROM. Может ли данный чип записать что-то (мои настройки) в свою собственную флеш? 4. В свое время приобретал китайский клон J-Link с опаской, но 5 лет уже рабтает без нареканий. Можно ли так же доверять китайским клонам CC Debugger? Сгодится ли такая штука https://ru.aliexpress.com/item/Emulator-CC-...e3-e6e41ece192a ?? 5. У меня блютус чип будет исключительно ведомым. Ведущим будет телефон. В этой связи правильно ли я понял, что приобретать cc2541 usb Dongle не имеет смысла? Просто он входит в стандартный набор. 6. Если нет, то можно ли USB Dongle как то использовать в режиме ведомого (я хочу поиграться с ним до того как спроектирую свою плату с сс2541) ?? Или же мне лучше заказать Дебаггер и вот это https://ru.aliexpress.com/item/JDY-08-BLE-B...52-16a0732522ad
  14. Добавление такого же по номиналу резистора в параллель к C1 привело к падению напряжения на входе до сотни милливольт. Какой-то неправильный делитель. ПРоверял в MultiSim 13 Я любитель, мне позволено. И раздел соответствующий. Вы знаете, мне иногда богословие кажется более точной наукой, чем электроника. Под "электроникой" я понимаю не природу и материю, которая, безусловно объективна и точна, а содержимое голов специалистов. Которых я, в силу своего значительно более низкого уровня, критиковать не имею права, но наблюдая, как на простой вопрос дается несколько диаметрально противоположных ответов, не могу не улыбаться. Я потому и путаюсь и переспрашиваю, потому как для Вас решение одно, а я их и в теме и в интернете увидел множество, причем, как уже сказано выше - диаметрально противоположных. К слову и вы не отличаетесь точностью После чего рекомендуете диод BAV99, не являющийся Шоттки и бракуете BAT54S, даже не освежив в памяти его структуру. Если вы в своем посте подбробно расписываете, как нужно ставить стабилитрон, а в конце пишете "да ну его на хрен"...
  15. Короче, правильнее будет настроить вход на float input и добавить свой резистор на 100к - от пина контроллера к плюсу питания, я правильно понял?