Обновить
2K+
205
Руслан@checkpoint

Old-time Unix hacker

1,2
Рейтинг
183
Подписчики
Отправить сообщение

Простите, а кто будет проверять те миллиарды строк кода которые нагенерировала машина ? Или уважаемый Нолан полагает, что в сгенерированном его болванчиком коде совершенно нет ошибок, неприятных артефактов и прочих дыр в безопасности ? Чтож, пожелаем успехов его клиентам.

А Flash память кокого типа ? SLC, TLC или QLC ? SLC продержится лет 8-10. QLC - года 3.

Основная проблема с храненим данных на NAND Flash состоит в том, она очень сильно подверженна влиянию поверхностного статического заряда и ESD защита тут бессильна. Храните ваши флэшки в токопроводящей заземленной коробке. :-)

Didn't know that Cray maniches had Unix flavour.

Я правильно понимаю, что автор сам, т.е. своим аллокатором, создал себе проблему и мужественно её преодолел ? :-)

Я попробовал сделать что-то подобное на FreeBSD: две заглушки для malloc(), одна на Си, другая на C++. Вот как это выглядит у меня:

Malloc wrapper in C on FreeBSD
rz@butterfly:~/code_snippets/C/Preload % make clean testc
rm -rf libpreload.o libpreloadc.so libpreloadcpp.so

=== Building malloc wrapper in C
cc -c -fPIC -o libpreload.o libpreload.c
cc -shared -o libpreloadc.so libpreload.o

=== Testing malloc wrapper written in C
FreeBSD butterfly 13.5-RELEASE-p9 FreeBSD 13.5-RELEASE-p9 GENERIC amd64
LD_PRELOAD=./libpreloadc.so /bin/ls -al
MALLOC: 128
MALLOC: 377
ls: fts_open: MALLOC: 2
Invalid argument
*** Error code 1

Stop.
make: stopped in /usr/home/rz/code_snippets/C/Preload
Malloc wrapper in C++ on FreeBSD
rz@butterfly:~/code_snippets/C/Preload % make clean testcpp
rm -rf libpreload.o libpreloadc.so libpreloadcpp.so

=== Building malloc wrapper in C++
c++ -c -fPIC -o libpreload.o libpreload.cpp
c++ -shared -o libpreloadcpp.so libpreload.o

=== Testing malloc wrapper written in C++
FreeBSD butterfly 13.5-RELEASE-p9 FreeBSD 13.5-RELEASE-p9 GENERIC amd64
LD_PRELOAD=./libpreloadcpp.so /bin/ls -al
MALLOC: 4096
Class Test has been constructed
MALLOC: 128
MALLOC: 377
ls: fts_open: MALLOC: 2
Invalid argument
*** Error code 1

Stop.
make: stopped in /usr/home/rz/code_snippets/C/Preload

Как видно, если не использовать stdlib++, то первые аллокации совсем крохотные - столько, солько требуется утилите /bin/ls. Если использовать библиотку libstdc++, то её инициализация запрашивает 4096 байт (ровно одну страничку).

На Linux-е этот же тест действительно первым запросом показывает 72704 байт. Еще один плюс в карму FreeBSD. ;-)

Забавно, но на Linux-е результат malloc() не проверяется на NULL не внутри инициализации stdlib++, не в коде /bin/ls. Моя обертка выдает NULL, а программа продолжает работу как будь-то всё в порядке и снимается с ипольнения только системой когда уже совсем того:

Malloc wrapper in C++ on Linux
rz@devbox:~/Preload$ make clean testcpp
rm -rf libpreload.o libpreloadc.so libpreloadcpp.so

=== Building malloc wrapper in C++
c++ -c -fPIC -o libpreload.o libpreload.cpp
c++ -shared -o libpreloadcpp.so libpreload.o

=== Testing malloc wrapper written in C++
Linux devbox 4.15.0-30-generic #32-Ubuntu SMP Thu Jul 26 17:42:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
LD_PRELOAD=./libpreloadcpp.so /bin/ls -al
MALLOC: 72704
MALLOC: 552
MALLOC: 552
MALLOC: 1024
Class Test has been constructed
MALLOC: 5
MALLOC: 552
MALLOC: 5
MALLOC: 34
MALLOC: 10
MALLOC: 56
/bin/ls: memory exhausted
Makefile:27: recipe for target 'testcpp' failed
make: *** [testcpp] Error 2

PS: Мой код: https://github.com/pointcheck/code_snippets/tree/master/C/Preload

Вам тут уже и без меня накидали в панамку. Но так, на всякий случай:

  1. Проблемы с ЭМ совместимость, антенный эффект, неожиданные резонансы там где их не ожидают, препятствия для возвратных токов.

  2. Проблемы с согласованием импеданса для высокоскоростных линий.

  3. Проблемы с отводом тепла.

Никаких. Зато это создает массу проблем с ЭМ совместимостью, трассbровкой диф пар и других высокоскоростных цепей. Используйте сплошные полигоны, всегда подключайте их к цепям питания (GND или VDD).

Вы понимаете какую проблему Вы можете создать этими своими "кружочками" неподключенными к GND или VDD ?

Через браузер заходим на xiaozhi.me, нажимаем кнопку "Console", и регистрируемся, указав номер телефона либо авторизуясь через Google.

Спасибо, друг! Еще китайского товарища майора мне нехватало у себя дома.

Заявку подал.

Всяких "хахаряшек" у меня в хозяйстве - хоть отбавляй, а вот книжки - они вечны. Их можно детям или студентам давать почитать. :)

Следующим шагом автор вспомнит про R1,5 и R2 сигнализацию. Только вот Астериск вряд ли поможет с этим.

Про атаку на драйверы GPU слышу давно, спасибо за освещение этой темы на Хабре. Было бы интересно почитать более подробный разбор этой темы - какие версии ядра Linux подверженны, примеры кода выполнения атаки.

Вообще, если вдуматься, драйверы современных GPU на столько обьемные (и закрытые), что дыр там может быть просто бесконечное число. Ставить любое, не тобой написанное, приложение на смартфон небезопасно априори, защиты нет и быть не может.

Еще один интересный момент - WebGL. Подозреваю, что через этот API любое Web приложение может осуществить аналогичную атаку на GPU. Что слышно на этот счет ?

Да, Вы правы. xterm, kconsole, xfce4-terminal - это всё эмуляторы терминала работающие с последовательной линией, хоть и виртуальной. Сетевой эмулятор терминала это Telnet и SSH клиенты.

Вопрос интерфейса с CP/M и её наследниками мы здесь не рассматриваем. ;)

А Вы не ощущаете ? Одна и та же фраза ходит по кругу по сто раз. Статью можно ужать до трех предожений. И автор не раскрыл как всё же устроены "all-optical" элементы типа NAND, NOR, мультиплексор MUX2 и ячейка двухпортовой SRAM. Без этой информации статья - просто ведро воды.

Upd: достаточно MUX2 и SRAM, всё остальное выражается через эти два базовых элемента.

В целом, статья хорошая, но неподготовленного читателя может легко запутать. :-)

Краткий словарь терминов:

Терминал - физическое устройство с RS-232 интерфейсом (мы говорим о символьных терминалах). Редкий зверь в современно мире.

Эмулятор терминала - программная реализация терминала исполняемая где-то на другой машине подключенной к хосту либо через последовательный интерфейс (cu, minicom, terraterm), либо по сети через TCP соединение. В подавляющем большинстве случаев мы имеем дело именно с последним вариантом (xterm, kconsole, xfce4-terminal).

Виртуальный терминал - программный эмулятор терминала встроенный внутрь ядра современных Unix-подобных ОС, позволяющий работать с системой используя клавиатуру и видео-монитор подключенные непосредственно к хосту. Виртуальный терминал прикидывается стандартным терминалом и подключается к системе на виртуаальное последовательное устройство. Это то, к чему мы имеем доступ по Ctrl+Alt+F1, Ctrl+Alt+F2 и т.д.

Консоль - отдельная терминальная линия, на которую ядро ОС выдает системные сообщения. В современных Unix-подобных системах виртуальный терминал с номером ноль (Ctrl+Alt+F1) используется в том числе и в качестве консоли. То есть с этого виртуального терминала можно традиционно залогиниться в систему, одновременно на него система будет выдавать свои аварийные и прочие служебные сообщения.

В ОС Linux с консоли можно подавать специальные последовательности символов для управления ядром ОС путем нажатия Alt+SysRq+commandkey, где commandkey - клавиша с кодом команды:

  • ‘k’ – Kills all the process running on the current virtual console.

  • ’s’ – This will attempt to sync all the mounted file system.

  • ‘b’ – Immediately reboot the system, without unmounting partitions or syncing.

  • ‘e’ – Sends SIGTERM to all process except init.

  • ‘m’ – Output current memory information to the console.

  • ‘i’ – Send the SIGKILL signal to all processes except init

  • ‘r’ – Switch the keyboard from raw mode (the mode used by programs such as X11), to XLATE mode.

  • ’s’ – sync all mounted file system.

  • ‘t’ – Output a list of current tasks and their information to the console.

  • ‘u’ – Remount all mounted filesystems in readonly mode.

  • ‘o’ – Shutdown the system immediately.

  • ‘p’ – Print the current registers and flags to the console.

  • ‘0-9′ – Sets the console log level, controlling which kernel messages will be printed to your console.

  • ‘f’ – Will call oom_kill to kill process which takes more memory.

  • ‘h’ – Used to display the help. But any other keys than the above listed will print help.

Чтобы разрешить эту фичу, необходимо сначала собрать ядро с опцией CONFIG_MAGIC_SYSRQ (в файле конфигурации ядра .config), потом ввести команду:

echo "1" > /proc/sys/kernel/sysrq

Либо собрать ядро с опциями CONFIG_MAGIC_SYSRQ и CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE. На сколько мне известно, в большинстве дистрибутивов Linux ядро поставляется с включенной опцией CONFIG_MAGIC_SYSRQ.

Более подробно про Magic Keys: https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html

"Hope, this helps". Как говорят французы. ;)

А что в современных ВУЗах больше не преподают ТАУ ?

Реализация PID регулятора на Си занимает 10 строк кода, PID на Verilog - чуть поболее. Но вопрос был не про PID, а про его автоподстройку. И тут уже требуется мат аппарат.

Какие нафиг мегабайты ? Тогда слова такого не знали.

Вы правы, к IT я не имею никакого отношения и не хочу иметь.

У большинства заводов и совхозов не было своих машин, ленты там писать было попросту нечем!!! Там ставили перфоратор и специально обученая девочка дырявила карты. Потом всё это дело свозилось на ИВЦ, перегонялось на ленты, как-то обрабатывалось и отправлялось в ГИВЦ. Одна из задач нашего ИВЦ была как раз в сборе этих данных. Под закат организовали модемный доступ (собсно моя BBS этим и занималась).

Видео на тему: https://www.youtube.com/watch?v=hoOo0q7vcos

Информация

В рейтинге
1 814-й
Дата рождения
Зарегистрирован
Активность