Chebuya
-
Публикации
609 -
Зарегистрирован
-
Посещение
-
Победитель дней
72
Сообщения, опубликованные пользователем Chebuya
-
-
30 минут назад, eu_tomat сказал:Итак, идея: запрашивать по сети не контрольную сумму EEPROM, а полное содержимое. Чем ответит взломщик?
Но кто будет запрашивать? Если запрашивать будет сервер, вроде схемы загрузки по сети (потенциально небезопасная EEPROM -> содержимое -> сервер) тогда это не имеет смысла, т.к взломщик может просто отправить оригинальный код.
33 минуты назад, eu_tomat сказал:Предлагаю сыграть в игру. Накидывайте возможные варианты защиты, а я скажу как им противодействовать. А можно и наоборот. Главное, сохранить состязательность. Это позволит по-новому взглянуть на старые идеи.
Первое, что мне пришло в голову - это в целом не давать компьютерам биос, и вставлять еепрому только на этап загрузки системы. Как сказал fingercomp в IRC - просто поставить eeprom в readonly режим, и физически при старте системы просто сверять адреса компонентов. Остальные варианты представить сложно, потому что в основном защита будет строится на обфускации и спагетти-коде.
-
1
-
-
Только что, ProgramCrafter сказал:Немного не в теме: имеется в виду программная подмена компонента или вставка нового EEPROM?
И кто должен убедиться в неизменности EEPROM: сам робот/дрон/кто-то там или компьютер, общающийся с ним по сети?
Fingercomp в IRC уже написал мне об неправильно поставленном вопросе.
В общем: убедится в неизменности EEPROM должен сам игрок при включении компьютера, на счет подмены: имеется в виду либо вставка нового компонента, либо подмена окружения, либо изменение самого кода eeprom напрямую (впрочем, eeprom можно установить в readonly, но едва ли это поможет, если подменили физический компонент) -
31 минуту назад, Mihis сказал:Думаю можно постоянно чекать чексум EEPROM
.Если изменилась - значит EEPROM был подменен.getChecksum():stringа что если сам component.eeprom был подменен физически? нечему проверять checksum. Нужно как-то "секретно" индицировать, что это наш eeprom, а не EEPROM злоумышленника.
-
Сидя уже 5 час над этой задачей, адекватных решений не пришло в голову.
Вопрос таков: каким образом можно обезопасить окружение на уровне компонента EEPROM, например, если нам нужно удостоверится, что текущий component.eeprom не был подменен как и его код? Не думаю, что это может помочь, если злоумышленник достаточно заинтересован во взломе.
Какие практики первыми приходят в голову? Обфускация кода/держать EEPROM под подушкой? В irc-канале #oc не нашел ничего интересного по этому поводу, поэтому, предлагаю обсудить здесь. -
-

Добавлена поддержка нескольких загрузочных файлов (если на одном физическом диске, например, майнось и опенось)-
7
-
-
32 минуты назад, ProgramCrafter сказал:Главное, чтобы оператор АЭС не задумал посмотреть что-нибудь на рабочем компе.
Иначе с реактором может случиться бо-ольшой бабах...
это не проблема "песочницы" непосредственно, TLWY может вылетать просто так, если сервер очень сильно тормозит. К тому же, это не проблема песочницы, а в целом внутриигровой среды OC. С таким же успехом можно запустить while true do end и говорить "а у меня комп сломался!!!".
-
1
-
-
3 минуты назад, eu_tomat сказал:А каким образом внутри пользовательского кода OpenComputers можно реализовать механику TLWY?
Есть блокирующие вызовы, которые не вызывают TLWY, но позволяет в цикле выполнять код без задержки. Насколько помню, код вроде while true do computer.beep() end будет выполняться бесконечно, но мы можем подменить computer.beep на свой, с задержкой.
9 минут назад, eu_tomat сказал:И кроме стандартного while true do end можно придумать много других скриптов с тем же эффектом. Как предлагаешь бороться с ними?
А какая разница, как синтаксически выражен бесконечный цикл? Если компьютер не yield'ится - сам machine.lua выкинет TLWY, который отловится pcall'ом (не всегда, конечно, но в большинстве случаев отлавливается)
11 минуту назад, eu_tomat сказал:А в худшем случае лагающий сервер выключит комп раньше. А ещё можно получить бан от админа.
Как раз поэтому есть TLWY, который поможет избежать выключения компьютера/бана от админа. Если компьютер вообще выключился - это должны были сойти все звезды, не вижу особых проблем. Если говорить о теории, то конечно, абсолютно гарантировать отлавливание TLWY нельзя, но на практике обычного pcall'а достаточно. Сайт этим и так подпортит себе репутацию.
-
1
-
1
-
-
1 минуту назад, AtomicScience сказал:Ну, это защита не от вредительского кода типа filesystem.delete("/"), а скорее от недостоверной информации и спама. Вдруг кто-то начнет рассылать порно-баннеры, блокирующие компьютер бесконечным циклом?
сделать внутри песочницы свой TLWY, блокирующие вызовы - подменить, стандартный while true do end отлавливается pcall'ом.
-
1
-
-
В 25.02.2021 в 13:25, AtomicScience сказал:да и это необязательно - в сети, где все друг другу доверяют, можно просто шарить lua-скрипты, которые будут рендерить страницы.
строго говоря, даже "доверенность" сети не обязательна. Просто запускать код в песочнице - и пусть делает там что хочет.
-
1
-
1
-
-
1 минуту назад, Del сказал:Нужно закрыть программу, так что-бы отдельные функции оставались рабочими(у меня - приём сообщений), а по нажатию на определённую кнопку программа заново открывалась, на определённом месте.
Сейчас я вроде-как сделал сворачивание, а вот разворачивание - уже проблема. То что нужно напечатать - печатается, а консоль(эта штука с /home$) ломает ВСЁ
можно будет реализовать функции status, например. На слушателях писать не очень удобно. -
14 минуты назад, ECS сказал:Хотя это было на старых версиях опеноси, возможно, сейчас что-то фиксанули. Ну и мелочи типа отсутствия глобальных component/computer/unicode, которые опеноська зачем-то скрывает из _G, тоже изрядно напрягали
это решил я достаточно кардинально
-
1
-
-
3 часа назад, ECS сказал:Кек, зашибенски. А как ты решил проблемы вылетов подмененного опеносевского computer.pullSignal в песочнице?
а они должны были быть? прямо openos'овский пуллсигнал внутрь и пробросил..
-
1
-
-
12 часа назад, ECS сказал:Нет, т.к. оська уже установлена. Тут полная аналогия с реальными компами: ставишь несколько осей на несколько загрузочных томов, а потом через биос выбираешь приоритетный том для загрузки. А биос можно использовать либо штатный, либо сторонний - в зависимости от предпочтений
Скрытый текст
¯\_(ツ)_/¯
-
1
-
-
Небольшое обновление: добавлен автоматический скейлинг. Работает "на лету".
-
6
-
1
-
1
-
-
5 минут назад, kaka888 сказал:Если речь о командах в чате (/msg, /list, /call, /money, /ban и пр.), то не может. Робот может писать в [локальный] чат только ОБЫЧНЫЕ сообщения, ну и, в некоторых случаях, видеть какие команды вводят игроки на всём сервере.
Чисто технически, если играешь в одиночке/админ на сервере - то вполне реально.
runCommand(command:string):number, string-
2
-
-
2 минуты назад, eu_tomat сказал:@hohserg А что за компонент enderchest_1 присутствует в коде?
это fallback, на сервере, где играем, почему-то вместо ender_tank пишет как enderchest_1. Так же почему-то напрямую через метод enderchest_1 нельзя узнать количество жидкости, поэтому нужен жидкостный контроллер ¯\_(ツ)_/¯
-
1
-
1
-
-
3 часа назад, vford сказал:А для опенкомпов, как вы уже сказали, есть OCIF, и писать ей альтернативу будет не очень резонно.
У OCIF есть фатальный недостаток.
-
1
-
3
-
1
-
-
В 30.12.2020 в 19:31, hohserg сказал:Какие минимальные системные требования?
Обновил в шапке.. Лучше уж поздно, чем никогда
-
1
-
-
В 31.12.2020 в 09:33, Bs0Dd сказал:Да и в любом случае, где-то нужно хранить настройки и список доверенных пользователей (которые могут войти по отпечатку), а области в 256 байт у биоса для этого будет маловато
В 256 байт умещается ~20 ников средней длины. Вполне себе адекватное количество ников, обычно, в доме не живет больше 4-5-6 человек. Говорю как человек, который делал это:
-
1
-
-
1 час назад, eu_tomat сказал:При большом желании на Lua можно написать и ассемблер, и JVM.
https://oc.cil.li/topic/2310-lukyt-java-on-opencomputers-without-mod/
-
1
-
-
1 минуту назад, Zer0Galaxy сказал:Робот без монитора и, наверное, без видеокарты. Что бы гпу работал, видушку поставить придется.
Можно ведь виртуальный компонент сделать
-
-
15 часов назад, eu_tomat сказал:Вероятность спавна дисков с программами в сундуках подземелий задаётся параметром lootProbability в файле конфигурации OpenComputers.cfg. В комментарии к этому параметру также приведены справочные значения для спавна железа, золота и алмазов.
Самая бесполезная вещь, что можно найти в сундуках. Из ключа и любой дискеты (Например, OpenOS) можно сделать любую дискету. Просто кладем дискету и ключ рядом, и перекрафчиваем до тех пор, пока не будет нужная.


Аппаратная безопасность в OC
в Программирование
Опубликовано: · Изменено пользователем BrightYC
На зашифрованном сервере, который предварительно мы загрузили безопасно с трюком выше.