Chebuya
Пользователи-
Публикации
609 -
Зарегистрирован
-
Посещение
-
Победитель дней
72
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Chebuya
-
На зашифрованном сервере, который предварительно мы загрузили безопасно с трюком выше.
-
Но кто будет запрашивать? Если запрашивать будет сервер, вроде схемы загрузки по сети (потенциально небезопасная EEPROM -> содержимое -> сервер) тогда это не имеет смысла, т.к взломщик может просто отправить оригинальный код. Первое, что мне пришло в голову - это в целом не давать компьютерам биос, и вставлять еепрому только на этап загрузки системы. Как сказал fingercomp в IRC - просто поставить eeprom в readonly режим, и физически при старте системы просто сверять адреса компонентов. Остальные варианты представить сложно, потому что в основном защита будет строится на обфускации и спагетти-коде.
-
Fingercomp в IRC уже написал мне об неправильно поставленном вопросе. В общем: убедится в неизменности EEPROM должен сам игрок при включении компьютера, на счет подмены: имеется в виду либо вставка нового компонента, либо подмена окружения, либо изменение самого кода eeprom напрямую (впрочем, eeprom можно установить в readonly, но едва ли это поможет, если подменили физический компонент)
-
а что если сам component.eeprom был подменен физически? нечему проверять checksum. Нужно как-то "секретно" индицировать, что это наш eeprom, а не EEPROM злоумышленника.
-
Сидя уже 5 час над этой задачей, адекватных решений не пришло в голову. Вопрос таков: каким образом можно обезопасить окружение на уровне компонента EEPROM, например, если нам нужно удостоверится, что текущий component.eeprom не был подменен как и его код? Не думаю, что это может помочь, если злоумышленник достаточно заинтересован во взломе. Какие практики первыми приходят в голову? Обфускация кода/держать EEPROM под подушкой? В irc-канале #oc не нашел ничего интересного по этому поводу, поэтому, предлагаю обсудить здесь.
-
@ECS D: Моё чувство перфекционизма: (там прогрессбар не до конца отрисовывается...)
-
Добавлена поддержка нескольких загрузочных файлов (если на одном физическом диске, например, майнось и опенось)
-
это не проблема "песочницы" непосредственно, TLWY может вылетать просто так, если сервер очень сильно тормозит. К тому же, это не проблема песочницы, а в целом внутриигровой среды OC. С таким же успехом можно запустить while true do end и говорить "а у меня комп сломался!!!".
- 81 ответ
-
- 1
-
-
Есть блокирующие вызовы, которые не вызывают TLWY, но позволяет в цикле выполнять код без задержки. Насколько помню, код вроде while true do computer.beep() end будет выполняться бесконечно, но мы можем подменить computer.beep на свой, с задержкой. А какая разница, как синтаксически выражен бесконечный цикл? Если компьютер не yield'ится - сам machine.lua выкинет TLWY, который отловится pcall'ом (не всегда, конечно, но в большинстве случаев отлавливается) Как раз поэтому есть TLWY, который поможет избежать выключения компьютера/бана от админа. Если компьютер вообще выключился - это должны были сойти все звезды, не вижу особых проблем. Если говорить о теории, то конечно, абсолютно гарантировать отлавливание TLWY нельзя, но на практике обычного pcall'а достаточно. Сайт этим и так подпортит себе репутацию.
- 81 ответ
-
- 2
-
-
-
сделать внутри песочницы свой TLWY, блокирующие вызовы - подменить, стандартный while true do end отлавливается pcall'ом.
- 81 ответ
-
- 1
-
-
строго говоря, даже "доверенность" сети не обязательна. Просто запускать код в песочнице - и пусть делает там что хочет.
- 81 ответ
-
- 2
-
-
-
можно будет реализовать функции status, например. На слушателях писать не очень удобно.
-
это решил я достаточно кардинально
-
а они должны были быть? прямо openos'овский пуллсигнал внутрь и пробросил..
-
Небольшое обновление: добавлен автоматический скейлинг. Работает "на лету".
-
Чисто технически, если играешь в одиночке/админ на сервере - то вполне реально. runCommand(command:string):number, string
-
это fallback, на сервере, где играем, почему-то вместо ender_tank пишет как enderchest_1. Так же почему-то напрямую через метод enderchest_1 нельзя узнать количество жидкости, поэтому нужен жидкостный контроллер ¯\_(ツ)_/¯
-
У OCIF есть фатальный недостаток.
- 81 ответ
-
- 5
-
-
-
-
Обновил в шапке.. Лучше уж поздно, чем никогда
- 52 ответа
-
- 1
-
-
- drone
- управление
-
(и ещё 1 )
Теги:
-
В 256 байт умещается ~20 ников средней длины. Вполне себе адекватное количество ников, обычно, в доме не живет больше 4-5-6 человек. Говорю как человек, который делал это:
- 23 ответа
-
- 1
-
-
- защита дома
- standalone
- (и ещё 1 )
-
https://oc.cil.li/topic/2310-lukyt-java-on-opencomputers-without-mod/
-
Можно ведь виртуальный компонент сделать
-
от Asior'а: https://pastebin.com/3ifphkJi
-
Самая бесполезная вещь, что можно найти в сундуках. Из ключа и любой дискеты (Например, OpenOS) можно сделать любую дискету. Просто кладем дискету и ключ рядом, и перекрафчиваем до тех пор, пока не будет нужная.
