Forwarded from зачем алине канал
собрала новый домашний сервер :3
старый совсем помирать начал, китайский минипк видимо отслужил свое
собирала сразу на века и с запасом, поэтому под капотом тут 9900х, 64 озу, 6 дисков по 8тб (~30тб в raid6) + room for growth в виде ещё 6 слотов под диски и свободный слот под видеокарту. и еще снаружи висюлька в виде nanokvm.
а ещё это первый раз когда я собираю пк :D
выглядит все довольно на соплях потому что ну по факту так и есть. но в этой квартире особо вариантов больше нет, с проводкой тут грустно, из-за чего пришлось ибп и роутеры ставить сверху и тянуть провода вниз(
старый совсем помирать начал, китайский минипк видимо отслужил свое
собирала сразу на века и с запасом, поэтому под капотом тут 9900х, 64 озу, 6 дисков по 8тб (~30тб в raid6) + room for growth в виде ещё 6 слотов под диски и свободный слот под видеокарту. и еще снаружи висюлька в виде nanokvm.
а ещё это первый раз когда я собираю пк :D
выглядит все довольно на соплях потому что ну по факту так и есть. но в этой квартире особо вариантов больше нет, с проводкой тут грустно, из-за чего пришлось ибп и роутеры ставить сверху и тянуть провода вниз(
🔥16🤷♂1
KWIK_FAQ_1MHz,_Single_Supply,_Photodiode_Transimpedance_Amplifier.pdf
730.9 KB
исәнмесез дуслар, занимаюсь щас проектированием измерительного тракта с трансимпедансным усилителем, хочу поделиться наиболее прикладной из найденных статей по этой теме
1MHz, Single Supply, Photodiode Transimpedance Amplifier
(TIA) Design | KWIK CIRCUIT FAQ
1MHz, Single Supply, Photodiode Transimpedance Amplifier
(TIA) Design | KWIK CIRCUIT FAQ
❤7
160 Core RISC-V supercluster on a single M.2
YouTube
I made a GPU at home
Take back your personal data with Incogni! Use code BITLUNI at the link
below and get 60% off an annual plan: https://incogni.com/BITLUNI (sponsor)
Code & Designs: https://github.com/bitluni/Supercluster2
Tools and parts (affiliate links):
RISC-V CH32V208:…
below and get 60% off an annual plan: https://incogni.com/BITLUNI (sponsor)
Code & Designs: https://github.com/bitluni/Supercluster2
Tools and parts (affiliate links):
RISC-V CH32V208:…
❤5
Forwarded from learning log
Добрался наконец до работы с atmega под линукс на C
https://www.tonymitchell.ca/posts/setup-avr-toolchain-on-linux/
Здесь, в принципе, все описано
gcc-avr - компилятор
avr-libc - имплементация стандартной библиотеки для AVR https://avr-libc.nongnu.org/user-manual/index.html)
avrdude - тулза для заливки в МК
Код "мигалки"
Команды для компиляции и заливки. Единственное я поменял программатор на usbasp
Здесь -DF_CPU=тактовая частота в Гц,
#tetris_c #avr
https://www.tonymitchell.ca/posts/setup-avr-toolchain-on-linux/
Здесь, в принципе, все описано
gcc-avr - компилятор
avr-libc - имплементация стандартной библиотеки для AVR https://avr-libc.nongnu.org/user-manual/index.html)
avrdude - тулза для заливки в МК
sudo apt install make gcc-avr avr-libc avrdude
Код "мигалки"
#include <avr/io.h>
#include <util/delay.h>
int main()
{
// Set built-in LED pin as output
DDRB |= (1 << DDB5);
while (1) {
PORTB |= (1 << PB5); // LED on
_delay_ms(500);
PORTB &= ~(1 << PB5); // LED off
_delay_ms(500);
}
return 0;
}
Команды для компиляции и заливки. Единственное я поменял программатор на usbasp
avr-gcc blink.c -o blink.elf -mmcu=atmega328p -DF_CPU=16000000UL -Os
avr-objcopy blink.elf -O ihex blink.hex
avrdude -c usbasp -p m328p -U flash:w:"blink.hex":a
Здесь -DF_CPU=тактовая частота в Гц,
#tetris_c #avr
Tony Mitchell
How to setup the AVR toolchain on Linux
Overview
❤🔥9👍1
Forwarded from Интернет ненужных вещей (Oleg Artamonov)
У моего коллеги Саши Батина (техлида проекта Станции Стрит) — первая статья на Хабре.
https://habr.com/ru/companies/yandex/articles/925610/
https://habr.com/ru/companies/yandex/articles/925610/
🔥7
Forwarded from Toxblч. Не только Linux
This media is not supported in your browser
VIEW IN TELEGRAM
А вы знали, на что готовилось нападение?!
Альт Гном команда сбросила свою йадерку!
ALR! Это аур для альта! Приплыли. Хром можно поставить на раз два. Яндекс музыку на счёт три!
И для это нужен простой, современный набор команд в ваше чёрное окно
Ссылочек вам тут насыплю:
https://altlinux.space/aides-pkgs
https://altlinux.space/aides-community
https://t.iss.one/aides_space
📹 https://youtu.be/Pv-u9DShmWg и youtube версия для друга
С понедельником Вас!
@toxblh_linux
Альт Гном команда сбросила свою йадерку!
И для это нужен простой, современный набор команд в ваше чёрное окно
epmi 386131
alr repo add aides https://altlinux.space/aides-community/aides.git
alr in yandex-music
Ссылочек вам тут насыплю:
https://altlinux.space/aides-pkgs
https://altlinux.space/aides-community
https://t.iss.one/aides_space
С понедельником Вас!
@toxblh_linux
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1
Forwarded from dlinyj
Один мой хороший товарищ - @nikhotmsk, организует фестиваль самодельной электроники и компьютерного искусства в Рощино, Ленинградская область.
Восьмой по счету Undefined состоится 16 августа и будет идти два дня подряд. Никита активно ищет докладчиков, волонтеров и просто посетителей, кто желает отважиться на путешествие в живописный лес, навстречу 8-битным консолям, старинным компьютерным играм и демосцене!
Конечно, один анонс не сможет вместить всего, что может быть на Undefined, ведь это фестиваль всего на свете.
Итак:
Телеграм-канал Никиты: @undefined_diy_fest
Сайт фестиваля Undefined: https://undefined.chaosconstructions.ru/👈
@dlinyj_news
Восьмой по счету Undefined состоится 16 августа и будет идти два дня подряд. Никита активно ищет докладчиков, волонтеров и просто посетителей, кто желает отважиться на путешествие в живописный лес, навстречу 8-битным консолям, старинным компьютерным играм и демосцене!
Конечно, один анонс не сможет вместить всего, что может быть на Undefined, ведь это фестиваль всего на свете.
В своё время, я даже принимал участие в демосцене этого мероприятия и делал демку для "Микроши", которую можно увидеть тут.
Итак:
Телеграм-канал Никиты: @undefined_diy_fest
Сайт фестиваля Undefined: https://undefined.chaosconstructions.ru/
@dlinyj_news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Forwarded from Грокаем C++
Volatile
#опытным
Ключевое слово, которое не embedded С++ разработчик вряд ли когда-нибудь встречал в код. Сегодня мы поговорим, для чего оно используется.
Предположим, что у нас есть переменная keyboard_press, память под которую замаплена на память устройства ввода-вывода. Когда нажимается кнопка клавиатуры, изменяется переменная keyboard_press. Оставим сам маппинг за скобками и попробуем написать какую-то детсадовскую логику с переменной keyboard_press:
Что в ассемблере?
А где цикл? А где инкремент count_test?
На самом деле код собран с -О3 и компилятор просто выкинул цикл. Он не видит, что в данном коде где-то еще изменяется keyboard_press, поэтому разумно полагает, что мы написали бесконечный цикл без сайдэффектов, который вообще-то ub.
Но keyboard_press может изменяться, просто это никак не понятно по коду программы.
Теоретически компилятор мог бы увидеть, что мы замапили устройство ввода-вывода на эту переменную. А может и не увидеть. Если маппинг происходит в другой единице трансляции, то точно не увидит. Компилятор технически не может знать всего, что творится в коде. Он оптимизирует какой-то локальный участок кода на основе своих эвристик, которые просто не могут учитывать весь код программы.
Однако компилятор точно видит тип переменной. И на него мы можем повлиять. Вот чтобы отучить компилятор от таких фокусов, нужно пометить keyboard_press ключевым словом volatile.
Теперь ассемблер выглядит так:
Все, что делает volatile - все операции над переменной становятся видимыми спецэффектами и не могут быть оптимизированы компилятором. Ну и еще операции над volitile переменными не могут переупорядочиваться с другими видимыми спецэффектами в порядке кода программы.
Говорится ли здесь что-нибудь о потоках? Нет! Здесь говорится только об оптимизациях компилятора.
Поэтому использовать volatile можно только для обработки сигналов(хэндлер которых вызывается в том же прерванном потоке), либо в тех местах, где вы работаете с переменной строго в одном потоке.
Доступ к volatile переменным не атомарный + с их помощью нельзя делать синхронизацию неатомарных переменных между потоками, так как volitile не подразумевает барьеров памяти.
Именно из-за этих ограничений volatile используется в очень узком спектре задач работы с I/O. Во всех остальных случаях в С++ используются атомики.
Don't be optimized out. Stay cool.
#cppcore #multitasking #memory
#опытным
Ключевое слово, которое не embedded С++ разработчик вряд ли когда-нибудь встречал в код. Сегодня мы поговорим, для чего оно используется.
Предположим, что у нас есть переменная keyboard_press, память под которую замаплена на память устройства ввода-вывода. Когда нажимается кнопка клавиатуры, изменяется переменная keyboard_press. Оставим сам маппинг за скобками и попробуем написать какую-то детсадовскую логику с переменной keyboard_press:
int keyboard_press = 0;
size_t count_test = 0;
void some_function() {
while(keyboard_press == 0) {
count_test++;
}
// doing stuff
}
Что в ассемблере?
some_function():
mov eax, DWORD PTR keyboard_press[rip]
test eax, eax
jne .L1
.L3: // это кстати пустой бесконечный цикл, куда нельзя попасть и откуда нельзя выбраться
jmp .L3
.L1:
ret
count_test:
.zero 8
keyboard_press:
.zero 4
А где цикл? А где инкремент count_test?
На самом деле код собран с -О3 и компилятор просто выкинул цикл. Он не видит, что в данном коде где-то еще изменяется keyboard_press, поэтому разумно полагает, что мы написали бесконечный цикл без сайдэффектов, который вообще-то ub.
Но keyboard_press может изменяться, просто это никак не понятно по коду программы.
Теоретически компилятор мог бы увидеть, что мы замапили устройство ввода-вывода на эту переменную. А может и не увидеть. Если маппинг происходит в другой единице трансляции, то точно не увидит. Компилятор технически не может знать всего, что творится в коде. Он оптимизирует какой-то локальный участок кода на основе своих эвристик, которые просто не могут учитывать весь код программы.
Однако компилятор точно видит тип переменной. И на него мы можем повлиять. Вот чтобы отучить компилятор от таких фокусов, нужно пометить keyboard_press ключевым словом volatile.
volatile int keyboard_press = 0;
size_t count_test = 0;
// same
Теперь ассемблер выглядит так:
some_function():
mov eax, DWORD PTR keyboard_press[rip]
test eax, eax
jne .L1
mov rax, QWORD PTR count_test[rip]
add rax, 1
.L3:
mov edx, DWORD PTR keyboard_press[rip]
mov rcx, rax
add rax, 1
test edx, edx
je .L3
mov QWORD PTR count_test[rip], rcx
.L1:
ret
Все, что делает volatile - все операции над переменной становятся видимыми спецэффектами и не могут быть оптимизированы компилятором. Ну и еще операции над volitile переменными не могут переупорядочиваться с другими видимыми спецэффектами в порядке кода программы.
Говорится ли здесь что-нибудь о потоках? Нет! Здесь говорится только об оптимизациях компилятора.
Поэтому использовать volatile можно только для обработки сигналов(хэндлер которых вызывается в том же прерванном потоке), либо в тех местах, где вы работаете с переменной строго в одном потоке.
Доступ к volatile переменным не атомарный + с их помощью нельзя делать синхронизацию неатомарных переменных между потоками, так как volitile не подразумевает барьеров памяти.
Именно из-за этих ограничений volatile используется в очень узком спектре задач работы с I/O. Во всех остальных случаях в С++ используются атомики.
Don't be optimized out. Stay cool.
#cppcore #multitasking #memory
❤10❤🔥2👍2
Forwarded from Embedded Doka (Dmitry Murzinov)
В электронике тоже есть своё правило№34:
Правило#35: если нет микросхемы, перепроверь еще раз у китайцев
Правило#36: всегда существует еще болеетупая дешевая дискретная реализация нужного функционала из говна и палок на рассыпухе
Правило#37: рассыпуха под рукой всегда будет не той мощности, которая нужна в данный момент, поэтому TO-3 балласт будет соседствовать с 0201
Правило#38: Всегда существует реализация которая займет больше времени на разработку и отладку и вы выберете именно ее
Правило#39: [Если вы не китаец, то] что бы вы не делали у китайцев этот же функционал реализован проще
@embedoka
На любую вашу хотелку существует готовая реализация в интегральном исполнении (с) Doka 😅
Правило#35: если нет микросхемы, перепроверь еще раз у китайцев
Правило#36: всегда существует еще более
Правило#37: рассыпуха под рукой всегда будет не той мощности, которая нужна в данный момент, поэтому TO-3 балласт будет соседствовать с 0201
Правило#38: Всегда существует реализация которая займет больше времени на разработку и отладку и вы выберете именно ее
Правило#39: [Если вы не китаец, то] что бы вы не делали у китайцев этот же функционал реализован проще
@embedoka
❤13👍1
Forwarded from Segment@tion fault
This media is not supported in your browser
VIEW IN TELEGRAM
Это я, сижу жду когда ИИ меня наконец заменит на работе
😁15
Forwarded from Единички Нолики
RP2350 Hacking Challenge
Raspberry Pi неожиданно показали отличный пример системного подхода к безопасности: как грамотно организовать bug bounty и превратить это в удачный пиар.
Для начала их контроллер использовался в бейдже на прошлогоднем DEF CON 2024 — крупнейшей в мире конференции по информационной безопасности. Нужно отметить, что DEF CON ежегодно собирает около 30 000 человек — профессионалов и энтузиастов в сфере безопасности. Это сильно гиковская тусовка, собирающая лучших хакеров со всего мира.
Одним из традиционных развлечений конференции является конкурс с бейджем — стилизованной печатной платой. Для одних это способ социализации через взаимодействие бейджей, для других — возможность пореверсить и взломать устройство, что и является сутью конкурса. Для третьих — шанс попрограммировать на новой архитектуре. Взломать бейдж — всегда азартная и престижная часть DEF CON.
Во-вторых, Raspberry не просто предоставили свой контроллер для создания бейджа — они объявили отдельный приз за успешое извлечение ключа из OTP. За время конференции никто с задачей не справился, что вполне логично: большинство приехало питьпиво Club-Mate и развлекаться. Хардкорный хакинг обычно начинается уже после конференции, на воодушевленном подъеме. Поэтому Raspberry продлили конкурс до конца года и увеличили призовой фонд с $10 000 до $20 000. И это очень правильный шаг: если вас не взламывают (за предложенные деньги) — это не значит, что вас невозможно взломать, а скорее, что за эти деньги вы просто никому не нужны.
В итоге их поломали аж пять команд — и довольно разными способами. Все подробно описано в их блоге:
1️⃣ “Hazardous threes” – Aedan Cullen
2️⃣ USB bootloader single-instruction fault with supply-voltage injection – Marius Muench
3️⃣ Signature check single-instruction fault with laser injection – Kévin Courdesses
4️⃣ Extracting antifuse secrets from RP2350 by FIB/PVC – IOActive
5️⃣ Glitch detector evaluation, and OTP read double-instruction fault with EM injection – Hextree
По итогу:
- Raspberry, по цене полугодовой зарплаты одного сильного инженера, получили пять уникальных методов взлома своего чипа — и понимание, как защищаться в следующих ревизиях.
- Отлично прорекламировали конкурс и завлекли исследователей, по сути сунув чипы каждому посетителю прямо в карман
- Назначили достойные призы, не пожадничали и расширили фонд, не обидев ни одну команду — все участники реально проделали крутую работу
- По результатам открыто рассказали о взломах, дав отличный пиар и себе, и исследователям
- Для общественности это хороший набор примеров того, что следует учитывать при проектировании безопасных чипов
До этого момента я не воспринимал RP2350 как сколько-нибудь серьёзную платформу в плане безопасности. Сейчас смотрю кардинально иначе. Может быть, потому что не было никаких ожиданий — а в итоге увидел честный, правильный подход от команды, которая действительно старается.
Возможно, такой качественный результат конкурса получился потому, что подход Raspberry одновременно и привлёк сильных ресерчеров, и за счёт необходимости хоть немного вложиться (купить железо) — отсеял тех, кто обычно приходит на багбаунти ради копейки, заваливая платформы потоком низкосортных отчётов. Чаще всего — это выводы сканеров или, теперь уже, голый выхлоп ChatGPT без малейшей проверки.
Оставлю как напоминание, как грамотно организовать bug bounty.
Как поломали RP2350 ⬇️
Raspberry Pi неожиданно показали отличный пример системного подхода к безопасности: как грамотно организовать bug bounty и превратить это в удачный пиар.
Для начала их контроллер использовался в бейдже на прошлогоднем DEF CON 2024 — крупнейшей в мире конференции по информационной безопасности. Нужно отметить, что DEF CON ежегодно собирает около 30 000 человек — профессионалов и энтузиастов в сфере безопасности. Это сильно гиковская тусовка, собирающая лучших хакеров со всего мира.
Одним из традиционных развлечений конференции является конкурс с бейджем — стилизованной печатной платой. Для одних это способ социализации через взаимодействие бейджей, для других — возможность пореверсить и взломать устройство, что и является сутью конкурса. Для третьих — шанс попрограммировать на новой архитектуре. Взломать бейдж — всегда азартная и престижная часть DEF CON.
Во-вторых, Raspberry не просто предоставили свой контроллер для создания бейджа — они объявили отдельный приз за успешое извлечение ключа из OTP. За время конференции никто с задачей не справился, что вполне логично: большинство приехало пить
В итоге их поломали аж пять команд — и довольно разными способами. Все подробно описано в их блоге:
1️⃣ “Hazardous threes” – Aedan Cullen
2️⃣ USB bootloader single-instruction fault with supply-voltage injection – Marius Muench
3️⃣ Signature check single-instruction fault with laser injection – Kévin Courdesses
4️⃣ Extracting antifuse secrets from RP2350 by FIB/PVC – IOActive
5️⃣ Glitch detector evaluation, and OTP read double-instruction fault with EM injection – Hextree
По итогу:
- Raspberry, по цене полугодовой зарплаты одного сильного инженера, получили пять уникальных методов взлома своего чипа — и понимание, как защищаться в следующих ревизиях.
- Отлично прорекламировали конкурс и завлекли исследователей, по сути сунув чипы каждому посетителю прямо в карман
- Назначили достойные призы, не пожадничали и расширили фонд, не обидев ни одну команду — все участники реально проделали крутую работу
- По результатам открыто рассказали о взломах, дав отличный пиар и себе, и исследователям
- Для общественности это хороший набор примеров того, что следует учитывать при проектировании безопасных чипов
До этого момента я не воспринимал RP2350 как сколько-нибудь серьёзную платформу в плане безопасности. Сейчас смотрю кардинально иначе. Может быть, потому что не было никаких ожиданий — а в итоге увидел честный, правильный подход от команды, которая действительно старается.
Возможно, такой качественный результат конкурса получился потому, что подход Raspberry одновременно и привлёк сильных ресерчеров, и за счёт необходимости хоть немного вложиться (купить железо) — отсеял тех, кто обычно приходит на багбаунти ради копейки, заваливая платформы потоком низкосортных отчётов. Чаще всего — это выводы сканеров или, теперь уже, голый выхлоп ChatGPT без малейшей проверки.
Оставлю как напоминание, как грамотно организовать bug bounty.
Как поломали RP2350 ⬇️
🔥14👍3❤1
Forwarded from Единички Нолики
1️⃣ “Hazardous threes” – Aedan Cullen
OTP хранит не только ключи, но и критические настройки (debug enable), а также модуль имеет логику-интерфейс (и стейт-машину), которая должна запоминать значение в условиях нестабильного питания. Вариация power-glitch, при которой при reset из OTP считывается неверное значение, и остаётся включённый JTAG. [github] [video]
2️⃣ USB bootloader single-instruction fault with supply-voltage injection – Marius Muench
Недостаток API в BootROM. Команда которая называется REBOOT_TYPE_PC_SP и позволяет сделать soft-reset с нужным PC и SP, конечно же, только из доверенного загрузчика. С помощью fault injection во время команды к USB bootloader можно было изменить команду reboot API и вызвать soft-reset с PC в RAM, где уже был наш невирицированный код.
3️⃣ Signature check single-instruction fault with laser injection – Kévin Courdesses
Классика, fault injection на функции проверки подписи. RP2350 имеет voltage-glitch detector, поэтому гличили лазером.
4️⃣ Extracting antifuse secrets from RP2350 by FIB/PVC – IOActive
Ликнули OTP значения под SEM-микроскопом. Писал об этом выше.
5️⃣ Glitch detector evaluation, and OTP read double-instruction fault with EM injection – Hextree
Атакуем сам glitch detector. С помощью electromagnetic fault injection (EMFI) можно найти место на чипе, где гличинг не будет ловиться детектором.
OTP хранит не только ключи, но и критические настройки (debug enable), а также модуль имеет логику-интерфейс (и стейт-машину), которая должна запоминать значение в условиях нестабильного питания. Вариация power-glitch, при которой при reset из OTP считывается неверное значение, и остаётся включённый JTAG. [github] [video]
2️⃣ USB bootloader single-instruction fault with supply-voltage injection – Marius Muench
Недостаток API в BootROM. Команда которая называется REBOOT_TYPE_PC_SP и позволяет сделать soft-reset с нужным PC и SP, конечно же, только из доверенного загрузчика. С помощью fault injection во время команды к USB bootloader можно было изменить команду reboot API и вызвать soft-reset с PC в RAM, где уже был наш невирицированный код.
3️⃣ Signature check single-instruction fault with laser injection – Kévin Courdesses
Классика, fault injection на функции проверки подписи. RP2350 имеет voltage-glitch detector, поэтому гличили лазером.
4️⃣ Extracting antifuse secrets from RP2350 by FIB/PVC – IOActive
Ликнули OTP значения под SEM-микроскопом. Писал об этом выше.
5️⃣ Glitch detector evaluation, and OTP read double-instruction fault with EM injection – Hextree
Атакуем сам glitch detector. С помощью electromagnetic fault injection (EMFI) можно найти место на чипе, где гличинг не будет ловиться детектором.
🔥10
Forwarded from Tänään ja ensi viikkona
Microchip анонсировали огромное количество 32-разрядных МК в низкоценовом сегменте. Даже не читая новостей, можно понять, что дела у компании идут не очень хорошо, и этим шагом компания пытается бороться за существование, взяв одну из долей рынка.
Я как разработчик продукцию Microchip для тех же ГБК не рассматривал, так как у их контроллеров, по крайней мере, раньше, был важнейший косяк — для прошивки нужен был специализированный программатор, который стоит очень дорого. Так, PICKIT-5 стоит на алиэкспрессе немилосердные 11кР, и это в то время, когда STM'овский "свисток" "нисколько не стоит", аналогичная ситуация для WCH, а для ESP32 программатор вовсе не нужен. Благо в последних контроллерах серии PIC32 я увидел JTAG, а значит, есть смутная надежда прошиваться через него.
Я как разработчик продукцию Microchip для тех же ГБК не рассматривал, так как у их контроллеров, по крайней мере, раньше, был важнейший косяк — для прошивки нужен был специализированный программатор, который стоит очень дорого. Так, PICKIT-5 стоит на алиэкспрессе немилосердные 11кР, и это в то время, когда STM'овский "свисток" "нисколько не стоит", аналогичная ситуация для WCH, а для ESP32 программатор вовсе не нужен. Благо в последних контроллерах серии PIC32 я увидел JTAG, а значит, есть смутная надежда прошиваться через него.
Forwarded from встраиваемый АлиЭкспресс | embedded AliExpress
Аппарат точечной сварки FNIRSI SWM-10 по 🫳 людской 🫳 цене с доставкой из РФ.
https://market.yandex.ru/cc/7DvniA
https://market.yandex.ru/cc/7DvniA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8 2 2