Нужно посмотреть на логи вскода в окне отладки, содержимое вкладки консоли GDB. Если там не будет очевидных причин, то напишите в оф. группе в Телеграме, разберёмся.
Апдейт: добавили брейкпойнт до запуска приложения. При активной сессии отладки будет триггериться брейкпойнт после загрузки кода в память, но до его запуска. В этот момент можно расставить все нужные точки в самом коде приложения.
РТК на некоторых тарифах сейчас выдаёт белую динамику. Хоть по условиям тарифа она и не обещана. На такой тариф я и ушёл.
Они ещё и IPv6 выдают, но толку от него немного - он зацензурен по спискам РКН. Проще отключить на роутере и ходить в IPv6 через брокера 6in4. Есть даже с эндпойнтами в Москве, что даёт минимальное увеличение пинга. Но для 6in4, опять-таки, нужен "белый" адрес.
Я один из ушедших - в начале 2022 отключился от домашнего интернета Билайна. Пользовался им ещё с Корбины, года с 2007. Стабильность была более-менее, но где-то с 2021 года Билайн, без каких-то уведомлений, перестал выдавать белые динамические адреса. Просто всех домашних пользователей загнал за CGNAT и предложил купить статический адрес, если очень уж хочется. Опции динамического адреса не было даже за деньги.
Однако, какое-то время можно было получать белые адреса, как прежде, если ходить через устаревший L2TP вместо IPoE. Для этого надо было просить саппорт подключить такой доступ для своей учётки - но он периодически всё равно слетал. После чего надо было висеть на телефоне, прорываться через первую линию саппорта и просить вернуть доступ. А потом и этот вариант прикрыли, и по L2TP тоже стали выдавать "серые" адреса.
Пытаться удержать меня, древнего и постоянно платящего клиента, Билайн не стал - просто предложили подать заявление на расторжение договора в ближайшем офисе. Что и было сделано.
Он просаживает питание на микроконтроллере. Если это сделать кратковременно и в нужный момент, то контроллер не перезагрузится, но может неправильно выполнить что-то, чем был занят. Например, при чтении установленного где-то бита защиты прочитать не то значение, что заставит его работать, будто защиты нет.
Иногда это чтение режима делается один раз при запуске контроллера, тогда достаточно однократно подловить момент и длительность воздействия. При успехе контроллер загрузится без защиты. Иногда эта проверка делается чаще, как в данной статье - и тогда надо городить что-то в духе описанного.
>После настройки среды необходимо добавить в файл конфигурации VS Code путь подключения библиотек чтобы их видел InteliSense в файлах приложений
Не надо так делать, IntelliSense работает с compile_commands.json, который генерится при сборке полной прошивки. Он оттуда возьмёт все необходимые пути до инклюдов (и не добавит лишние/приватные, как это делает приведённый пример).
Ещё есть ufbt - standalone сборщик приложений, с которым не нужно тащить и собирать всю прошивку целиком. Очень советую пользоваться именно им.
Делл спокойно разорвал. Купленный в январе 2022 год доп. гарантии на ноутбук превратился в тыкву и сообщение о "проблемах" с гарантией при проверке по service code.
Ни Valve Anti-Cheat, ни EAC, ни BattlEye не согласятся запускать игру в системе с отключённой проверкой подписи драйверов. И вылечить это добавлением параметра не получится. Ну, или с потерей онлайн-режима.
А у этой троицы почти весь современный мультиплеер. Поэтому всерьёз рассматривать для полноценного игрового применения такие видеокарты-франкенштейны нельзя. Что-то уровня покупки забаненных в онлайне консолей.
И это точно заслуживает явного упоминания в статье, расписывающей покупку и запуск такой странной видеокарты с игровыми намерениями.
Мне этот ваш бот getmatch уже больше года раз в 2 недели спамит вакансиями, предлагает нажать кнопку, чтобы "выбрать". И ещё ни разу не сработал, каждый раз пишет " ? getmatch временно вышел из строя. Всё будет в порядке: скорее всего уже чиним!". Мне уже интереснее, чем эти вакансии, заработает ли бот хоть когда-нибудь.
Публикация не наша, и инструменты в ней другие - там IDA+ST-шное железо и софт, у нас Ghidra и JLink. И там добыча прошивки хардкорнее. Но итоговое решение с патчингом адресов, фактически, такое же.
А перебор со знанием алгоритма U_ID можно было бы реализовать быстрее, ограничив диапазоны отдельных байт до размеров пластины.
Мы чуть-чуть подломали экономику бейджей. Стали разбираться, как работает вся эта система, и выяснилось, что
1) в качестве "мозгов" стоит STM32F070F6P6, залоченный от чтения (RDP1);
2) после перепрошивки бейдж не теряет баланс;
3) у всех бейджей одна и та же прошивка.
Также был публично доступнен "банкомат" рядом с киоском мерча за оффкойны (валюту бейджей конференции), который отображал баланс приложенного бейджа. А ещё на бейдже были заботливо выведены и даже подписаны пины SWD - отладочного интерфейса под ARM.
Проследив выводы разъёма для "пополнения" до чипа, предположили, что на него выведен UART. Гипотеза подтвердилась с помощью USB-UART конвертера. Бейдж после включения постоянно шлёт в этот порт на 115200 бод посылками по 40 байт, которые меняются между включениями одного бейджа, но имеют между собой общее начало. А у разных бейджей посылки совершенно отличаются друг от друга.
Исходя из этого, предположили, что вся работа с балансом ведётся на сервере, а бейдж просто выдаёт аутентифицирующие пакеты для транзакций, сформированные по чему-то уникальному для этого чипа.
У многих микроконтроллеров от ST с завода есть серийник, расположенный в ROM. Он формируется по координатам чипа на пластине с завода, а также номеру партии. Логично было бы предположить, что этот серийник и используется в качестве исходных данных для формирования пакета на UART. Пожертвовав во благо науки одним бейджем, понизив на нём RDP1 до RDP0 (попутно стерев с него прошивку механизмами безопасности чипа), нашли в ROM 12 байт айди. Впоследствии оказалось, что для чтения айди можно было бы и не понижать RDP, но было уже поздно.
С помощью CyberChef практически сразу выяснилось, что начало пакета - 12 байт - совпадают с SHA1(12 байт id). Более того, работала replay-атака на проверку баланса - заполучив пакет с бейджа, можно было выдать его же на "банкомат" и увидеть баланс оригинального бейджа.
С помощью пары других бейджей выяснили вариативность айдишнков. Из 12 байт менялось всего 4 - 0, 2, 4 и 10, причём диапазон удалось снизить всего до 5 миллионов айди, большинство которых лежало в самом начале диапазона (принадлежали к основной партии чипов). С помощью простейшего скрипта получилось "сбрутить" айди соседнего бейджа, для которого была известна только авторизующая посылка. Но полный алгоритм формирования посылки оставался неизвестным. Можно было бы, конечно, полагаться на случайность и недостаточную валидацию данных сервером баланса, но хотелось большего.
В ходе попыток чтения с помощью JLink по SWD разных бейджей в полевых условиях нам то ли повезло подглитчить питание чипа в момент его запуска (нет), то ли попался экземпляр без защиты, но очередной подопытный показал в утилите JMem валидное состояние флеша без запроса на стирание из-за RDP1. Сразу же сдампили с него прошивку, закинули в Ghidra + SVD loader. Обнаружили ожидаемое - SHA1 из PolarSSL, чтение 12 байт аппаратного айди и многое другое по формированию исследуемой нами подписи. БОльшая часть происходящего была упакована в одну функцию и анализу с наскока не поддалась.
Мы параллельно решали CTF от одного из банков, представленных на конференции, и имели некоторые успехи в нём, так что уделять значительную часть времени детальному реверсу не получалось. Поэтому, было принято решение попробовать пропатчить бинарник прошивки так, чтобы айди читался не из ROM-области, а прямо из записываемой части флеша.
Проверили, что "вылеченный" таким образом бейдж с подложенным в новое место оригинальным айди корректно опознаётся банкоматом. "Подделавшись" под чужой бейдж, можно было бы конвертировать чужие оффкойны в мерч. Для этого могло бы быть 2 основных пути: поискать онлайн-апи для проверки баланса чужих бейджей, формируя поддельные авторизации, либо собрать реальные авторизации с помощью пары проводов, приделанных к ридеру банкомата.
Доступ к онлайн-апи для работы с балансом был на банкомате и на стендах всех партнёров. Но этот апи был закрыт авторизацией через веб-форму, и, несмотря на возможность получить куки для доступа к нему, решили никого не подставлять.
На этом моменте мы обратились к железячным представителям оргов с вопросом, что бы они посчитали взломом экономики. Они сказали, что таковым будет считаться возможность представиться чужим бейджем и даже выдали 12 байт SHA1 от своего личного. По SHA1 и перебором по маске за несколько секунд нашли айди чипа, после чего он был зашит в "вылеченный" бейдж и представлен оргам. Которые подтвердили успех решения задачи и наградили всех причастных приличным количеством оффкойнов.
У моих авто салонное оборудование и розетки имеют управляемое питание и отключаются от 12В через некоторое время после закрытия машины. Так что высаженные до состояния "мозги не включаются" авто можно через салонную розетку заряжать бесконечно долго.
Какая ОС?
Нужно посмотреть на логи вскода в окне отладки, содержимое вкладки консоли GDB. Если там не будет очевидных причин, то напишите в оф. группе в Телеграме, разберёмся.
Там скользко. Вот, что пишут: Когда может быть установлен факт вручения:
... По истечении установленного времени после доставки уведомления в личный кабинет на Госуслугах
https://www.gosuslugi.ru/help/faq/geps_notification/800060
Апдейт: добавили брейкпойнт до запуска приложения. При активной сессии отладки будет триггериться брейкпойнт после загрузки кода в память, но до его запуска. В этот момент можно расставить все нужные точки в самом коде приложения.
РТК, там на скоростных тарифах выдают ту самую белую динамику. Тариф "апгрейд 500" оказался буквально апгрейдом и по скорости, и по цене.
РТК на некоторых тарифах сейчас выдаёт белую динамику. Хоть по условиям тарифа она и не обещана. На такой тариф я и ушёл.
Они ещё и IPv6 выдают, но толку от него немного - он зацензурен по спискам РКН. Проще отключить на роутере и ходить в IPv6 через брокера 6in4. Есть даже с эндпойнтами в Москве, что даёт минимальное увеличение пинга. Но для 6in4, опять-таки, нужен "белый" адрес.
На момент отключения IPv6 в планах у Билайна не было.
Я один из ушедших - в начале 2022 отключился от домашнего интернета Билайна. Пользовался им ещё с Корбины, года с 2007. Стабильность была более-менее, но где-то с 2021 года Билайн, без каких-то уведомлений, перестал выдавать белые динамические адреса. Просто всех домашних пользователей загнал за CGNAT и предложил купить статический адрес, если очень уж хочется. Опции динамического адреса не было даже за деньги.
Однако, какое-то время можно было получать белые адреса, как прежде, если ходить через устаревший L2TP вместо IPoE. Для этого надо было просить саппорт подключить такой доступ для своей учётки - но он периодически всё равно слетал. После чего надо было висеть на телефоне, прорываться через первую линию саппорта и просить вернуть доступ. А потом и этот вариант прикрыли, и по L2TP тоже стали выдавать "серые" адреса.
Пытаться удержать меня, древнего и постоянно платящего клиента, Билайн не стал - просто предложили подать заявление на расторжение договора в ближайшем офисе. Что и было сделано.
Он просаживает питание на микроконтроллере. Если это сделать кратковременно и в нужный момент, то контроллер не перезагрузится, но может неправильно выполнить что-то, чем был занят. Например, при чтении установленного где-то бита защиты прочитать не то значение, что заставит его работать, будто защиты нет.
Иногда это чтение режима делается один раз при запуске контроллера, тогда достаточно однократно подловить момент и длительность воздействия. При успехе контроллер загрузится без защиты. Иногда эта проверка делается чаще, как в данной статье - и тогда надо городить что-то в духе описанного.
Мы планируем некоторые улучшения со стороны отладки - ожидание аттача дебаггера и прочие мелочи.
Избавиться от usb пока не получится, rpc для заливки файлов через swd/дебаг-борду недоступен.
>После настройки среды необходимо добавить в файл конфигурации VS Code путь подключения библиотек чтобы их видел InteliSense в файлах приложений
Не надо так делать, IntelliSense работает с compile_commands.json, который генерится при сборке полной прошивки. Он оттуда возьмёт все необходимые пути до инклюдов (и не добавит лишние/приватные, как это делает приведённый пример).
Ещё есть ufbt - standalone сборщик приложений, с которым не нужно тащить и собирать всю прошивку целиком. Очень советую пользоваться именно им.
Делл спокойно разорвал. Купленный в январе 2022 год доп. гарантии на ноутбук превратился в тыкву и сообщение о "проблемах" с гарантией при проверке по service code.
Интересно было бы послушать про эволюцию программной части бейджей - что уже делали, какие подходы выбирали и почему, какие планы на новые поколения.
Ни Valve Anti-Cheat, ни EAC, ни BattlEye не согласятся запускать игру в системе с отключённой проверкой подписи драйверов. И вылечить это добавлением параметра не получится. Ну, или с потерей онлайн-режима.
А у этой троицы почти весь современный мультиплеер. Поэтому всерьёз рассматривать для полноценного игрового применения такие видеокарты-франкенштейны нельзя. Что-то уровня покупки забаненных в онлайне консолей.
И это точно заслуживает явного упоминания в статье, расписывающей покупку и запуск такой странной видеокарты с игровыми намерениями.
А ещё после отключения проверки подписи ни одна приличная игра с современным античитом не запустится.
Мне этот ваш бот getmatch уже больше года раз в 2 недели спамит вакансиями, предлагает нажать кнопку, чтобы "выбрать". И ещё ни разу не сработал, каждый раз пишет " ? getmatch временно вышел из строя. Всё будет в порядке: скорее всего уже чиним!". Мне уже интереснее, чем эти вакансии, заработает ли бот хоть когда-нибудь.
К - качество.
Публикация не наша, и инструменты в ней другие - там IDA+ST-шное железо и софт, у нас Ghidra и JLink. И там добыча прошивки хардкорнее. Но итоговое решение с патчингом адресов, фактически, такое же.
А перебор со знанием алгоритма U_ID можно было бы реализовать быстрее, ограничив диапазоны отдельных байт до размеров пластины.
Мы чуть-чуть подломали экономику бейджей. Стали разбираться, как работает вся эта система, и выяснилось, что
1) в качестве "мозгов" стоит STM32F070F6P6, залоченный от чтения (RDP1);
2) после перепрошивки бейдж не теряет баланс;
3) у всех бейджей одна и та же прошивка.
Также был публично доступнен "банкомат" рядом с киоском мерча за оффкойны (валюту бейджей конференции), который отображал баланс приложенного бейджа. А ещё на бейдже были заботливо выведены и даже подписаны пины SWD - отладочного интерфейса под ARM.
Проследив выводы разъёма для "пополнения" до чипа, предположили, что на него выведен UART. Гипотеза подтвердилась с помощью USB-UART конвертера. Бейдж после включения постоянно шлёт в этот порт на 115200 бод посылками по 40 байт, которые меняются между включениями одного бейджа, но имеют между собой общее начало. А у разных бейджей посылки совершенно отличаются друг от друга.
Исходя из этого, предположили, что вся работа с балансом ведётся на сервере, а бейдж просто выдаёт аутентифицирующие пакеты для транзакций, сформированные по чему-то уникальному для этого чипа.
У многих микроконтроллеров от ST с завода есть серийник, расположенный в ROM. Он формируется по координатам чипа на пластине с завода, а также номеру партии. Логично было бы предположить, что этот серийник и используется в качестве исходных данных для формирования пакета на UART. Пожертвовав во благо науки одним бейджем, понизив на нём RDP1 до RDP0 (попутно стерев с него прошивку механизмами безопасности чипа), нашли в ROM 12 байт айди. Впоследствии оказалось, что для чтения айди можно было бы и не понижать RDP, но было уже поздно.
С помощью CyberChef практически сразу выяснилось, что начало пакета - 12 байт - совпадают с SHA1(12 байт id). Более того, работала replay-атака на проверку баланса - заполучив пакет с бейджа, можно было выдать его же на "банкомат" и увидеть баланс оригинального бейджа.
С помощью пары других бейджей выяснили вариативность айдишнков. Из 12 байт менялось всего 4 - 0, 2, 4 и 10, причём диапазон удалось снизить всего до 5 миллионов айди, большинство которых лежало в самом начале диапазона (принадлежали к основной партии чипов). С помощью простейшего скрипта получилось "сбрутить" айди соседнего бейджа, для которого была известна только авторизующая посылка. Но полный алгоритм формирования посылки оставался неизвестным. Можно было бы, конечно, полагаться на случайность и недостаточную валидацию данных сервером баланса, но хотелось большего.
В ходе попыток чтения с помощью JLink по SWD разных бейджей в полевых условиях нам то ли повезло подглитчить питание чипа в момент его запуска (нет), то ли попался экземпляр без защиты, но очередной подопытный показал в утилите JMem валидное состояние флеша без запроса на стирание из-за RDP1. Сразу же сдампили с него прошивку, закинули в Ghidra + SVD loader. Обнаружили ожидаемое - SHA1 из PolarSSL, чтение 12 байт аппаратного айди и многое другое по формированию исследуемой нами подписи. БОльшая часть происходящего была упакована в одну функцию и анализу с наскока не поддалась.
Мы параллельно решали CTF от одного из банков, представленных на конференции, и имели некоторые успехи в нём, так что уделять значительную часть времени детальному реверсу не получалось. Поэтому, было принято решение попробовать пропатчить бинарник прошивки так, чтобы айди читался не из ROM-области, а прямо из записываемой части флеша.
Проверили, что "вылеченный" таким образом бейдж с подложенным в новое место оригинальным айди корректно опознаётся банкоматом. "Подделавшись" под чужой бейдж, можно было бы конвертировать чужие оффкойны в мерч. Для этого могло бы быть 2 основных пути: поискать онлайн-апи для проверки баланса чужих бейджей, формируя поддельные авторизации, либо собрать реальные авторизации с помощью пары проводов, приделанных к ридеру банкомата.
Доступ к онлайн-апи для работы с балансом был на банкомате и на стендах всех партнёров. Но этот апи был закрыт авторизацией через веб-форму, и, несмотря на возможность получить куки для доступа к нему, решили никого не подставлять.
На этом моменте мы обратились к железячным представителям оргов с вопросом, что бы они посчитали взломом экономики. Они сказали, что таковым будет считаться возможность представиться чужим бейджем и даже выдали 12 байт SHA1 от своего личного. По SHA1 и перебором по маске за несколько секунд нашли айди чипа, после чего он был зашит в "вылеченный" бейдж и представлен оргам. Которые подтвердили успех решения задачи и наградили всех причастных приличным количеством оффкойнов.
Заголовок неверный, не "как записать по адресу", а "как разместить по адресу". И второе возможностями только языка, без расширений, не решается.
Ещё была "Орда: Северный Ветер" родом из 1999 г. - наш ответ Варкрафту. На удивление неплохая РТС.
У моих авто салонное оборудование и розетки имеют управляемое питание и отключаются от 12В через некоторое время после закрытия машины. Так что высаженные до состояния "мозги не включаются" авто можно через салонную розетку заряжать бесконечно долго.