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

Asummonster

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

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

  • Посещение

  • Победитель дней

    12

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


  1. Такое API, библиотека которая имеет доступ к счетам пользователей, или возможность ими управлять, образует слишком большую уязвимость, к сожалению.

    Почему?Можно отправлять запрос банковскому серваку,а он отправляет вам пароль,который надо ввести, вы его вводите - АПИ его отправляет банку, пароли совпадают - деньги снимаются


  2. "биосные" - это дрон и контроллер, а вот на счет "на все устройства" это устанавливая одну и ту же ос на планшет и настольный пк мы получаем разный интерфес для сенсорного планшета и настольного пк

    Это довольно просто сделать. У планшета есть компонент "tablet", а у робота - "robot"

    • Нравится 1

  3. Всем привет! В этой теме я расскажу моей программе ---Удалённом рабочем столе на сети OpenNet и моде OpenComputers.
    Первым делом расскажу как ей пользоваться.
    Ввод данных:
    Всё очень просто=)
    Жмёте на кнопку на клавиатуре, и её нажатие эмитируется на удалённом компьютере.
    Для обновления экрана --- F5
    Для выхода из программы на удалённом компьютере --- F2
    Для выхода из программы на локальном компьютере ---F1
    Ну....Вроде всё по управлению=)
    Запуск,настройка и подключение:
    Подготовка к запуску удалённого терминала: 
    Установить библиотеку thread: 


    local computer = require("computer")
    computer.SingleThread = computer.pullSignal
    local thread = {}
    
    local mainThread
    local timeouts
    
    local function MultiThread( _timeout )
      if coroutine.running()==mainThread then
        local mintime = _timeout or math.huge
        local co=next(timeouts)
        while co do
          if coroutine.status( co ) == "dead" then
            timeouts[co],co=nil,next(timeouts,co)
          else
            if timeouts[co] < mintime then mintime=timeouts[co] end
            co=next(timeouts,co)
          end
        end
        if not next(timeouts) then
          computer.pullSignal=computer.SingleThread
          computer.pushSignal("AllThreadsDead")
        end
        local event={computer.SingleThread(mintime)}
        local ok, param
        for co in pairs(timeouts) do
          ok, param = coroutine.resume( co, table.unpack(event) )
          if not ok then timeouts={} error( param )
          else timeouts[co] = param or math.huge end
        end
        return table.unpack(event)
      else
        return coroutine.yield( _timeout )
      end
    end
    
    function thread.init()
      mainThread=coroutine.running()
      timeouts={}
    end
    
    function thread.create(f,...)
      computer.pullSignal=MultiThread
      local co=coroutine.create(f)
      timeouts[co]=math.huge
      local ok, param = coroutine.resume( co, ... )
      if not ok then timeouts={} error( param )
      else timeouts[co] = param or '' end
      return co
    end
    
    function thread.kill(co)
      timeouts[co]=nil
    end
    
    function thread.killAll()
      timeouts={}
      computer.pullSignal=computer.SingleThread
    end
    
    function thread.waitForAll()
      repeat
      until MultiThread()=="AllThreadsDead"
    end
    -------------------------------------------------------------------------------
    return thread 

    (Только на сервер,на клиенте она не нужна)
    Установить OpenNet и находится в зоне его покрытия.
    Установить на сервер его часть:



    local event= require("event")
    local thread= require("thread")
    local opennet= require("opennet")
    local computer= require("computer")
    local gpu= require("component").gpu
    local unicode= require("unicode")
    local keyboard= require("component").keyboard.address
    local IP, dis2serv = opennet.getIP()
    print("Local IP: "..IP)
    args={...}
    if args[1]==nil then
      print("Использование: openviewerS <opennet_ip>")
      os.exit()
    end
    
    --[[
    _, result, reason = opennet.sendrec(args[1], "connecting...")
    if result==false then
      print(reason); os.exit()
    end
    if args[1]==IP then
      print("Невозможно инициализировать удалённый доступ со своим устройством.")
      os.exit()
    end
    ]]--
    
    initial=args[1]
    local function getScreen()
      screen=""
      for y=1, 25 do
        for x=1, 80 do
          symbol = gpu.get(x, y)
          screen=screen..symbol
        end
      end
      return screen
    end
    local function sendScreen()
      opennet.send(initial, getScreen())
    end
    function runShell()
      os.execute("sh")
    end
    function reInitial()
      thread.killAll()
      thread.init()
      thread.create(runShell)
      thread.create(EmulateSignal)
      thread.waitForAll()
    end
    event.listen("Screen", sendScreen)
    event.listen("Exit", reInitial)
    function EmulateSignal()
      while true do
        opennetIP, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 = opennet.receive()
        if opennetIP==initial then
          computer.pushSignal(arg1, keyboard, tonumber(arg3), tonumber(arg4), arg5)
        end
      end
    end
    thread.init()
    thread.create(runShell)
    thread.create(EmulateSignal)
    thread.waitForAll()

    Установить на клиент клиентскую часть:



    local opennet= require("opennet")
    local term= require("term")
    local unicode= require("unicode")
    local event= require("event")
    args={...}
    if args[1]==nil then
      print("Использование: openviewerC <opennet_ip>")
      os.exit()
    end
    initial=args[1]
    function getScreen()
      repeat
        ip, screenRaw=opennet.receive()
      until ip==initial
      for sym=1, #screenRaw-160 do
        io.write(unicode.sub(screenRaw, sym, sym))
      end
    end
    term.clear()
    opennet.send(initial, "Screen")
    getScreen()
    while true do
      arg1, arg2, arg3, arg4, arg5 = event.pull()
      if arg1=="key_down" and arg3==0 and arg4==63 then
        term.clear()
        opennet.send(initial, "Screen")
        getScreen()
      elseif arg1=="key_down" and arg3==0 and arg4==59 then
        os.exit()
      elseif arg1=="key_down" and arg3==0 and arg4==60 then
        opennet.send(initial, "Exit")
      else
        opennet.send(initial, arg1, arg2, arg3, arg4, arg5)
      end
    end
    

     
    Для запуска программы надо написать на сервере: openviewerS <IP Адрес клиента>
    ВНИМАНИЕ!!! Надо ввести именно IP, а не DNS; Единственное поддерживаемое разрешение - 80x25
    На клиенте же пишем: openviewerC <IP Адрес сервера>
    Вот и всё=)
    Надеюсь,эта программа вам будет полезна !
    Неплохо было-бы попасть в вайт-лист ;) 

    • Нравится 3

  4. Через event.listen swg2you можешь повесить слушателя на modem_message. Вот если не знаешь его использование:

     

     

    event.listen(event: string, function: function) -- Теперь если он словит event который указан в первом аргументе будет выполнена функция со второго аргумента. Аргументы функции нужно передавать такие же, какие выдаст event.pull, т е шесть аргументов.

    Например:

    local function listmsg(_,_,_,_,_,msg)
        print(msg)
    end
    event.listen("modem_message", listmsg)
    Такой код будет ловить сообщения по всем открытым портам и выводить их на экран.

     

    Только их там не 6. Если ты напишешь m.broadcast(port, data1)---их будет шесть,а если ты напишешь m.broadcast(port, data1, data2)---их будет 7, и так далее


  5. ID можно было получить в старых версиях OC.

    А теперь только "кодовое имя". Типа "minecraft:sand".

     

    Для этого надо установить апгрейд-контроллер инвентаря. (По ссылке - подробная справка.)

    И воспользоваться функцией getStackInInternalSlot(slot:number):table.

     

    Пример:

     

    local com = require('component')
    local controller = com.inventory_controller
    
    local slot_number = 1
    local stack = controller.getStackInInternalSlot(slot_number)
    
    print("Название предмета в слоте: "..stack.label)
    print("Код: "..stack.name)
    print("Метаданные: "..stack.damage)
    Только я бы добавил if stack then ... end, т.к. если слот пуст---будет вылет
    • Нравится 1

  6. [ok=Новые моды!][/ok]

     

    На сервер установлен мод Computronics и мод на магнитные карточки. У Computronics  (чатбокс, камера, радар, шифровальный блок) изменены рецепты. В основном, это добавлен корпус ИК-Е в машинки-блоки и микрочипы, или камешки драгоценные. Землю и булыгу с кирпичами с досками выкинул оттуда.

     

    Если заметите какие-то багульки в модификации  КТ, просьба - немедленно сообщить в эту тему или в ЛС.

    Попробуй в дрона радар засунуть. У меня из-за этого вылетал сервер.

  7. Вообще билд можно заменить Thermal Expansion или на худой конец ExtraUtils, так как АЕ2 расчитан далеко не на среднего игрока. А по теме - играл с модом очень долго на 1.7.10, никаких багов или дюпов не обнаружил. Особенно здорово пошло мочить дракошу двумя нано саблями :D Вообщем мод отличный и всем рекомендую.

    А я баг нашёл=)


  8. Спасибо, что напомнили. Мне, видимо, опять придётся попотеть.

    Вот только найти бы эмулятор Opencomputers для винды, я бы свою ось создал именно для этого мода.

    Если ты пишешь именно ось,а не графическую оболочку,то просто скачай чистый луа: http://kent.dl.sourceforge.net/project/luabinaries/5.2/Executables/lua-5.2_Win32_bin.zip

    Если надо,то могу помочь :)


  9. Уходи от КК, КК хороший мод, но он намного скучнее ОК. В ОК ты можешь создать своё ядро, загрузчик, свой пакет программ и утилит, вобщем реальную ось. А в КК все псевдо ос- просто графическая оболочка

    С набором программ

    • Нравится 1

  10. Исправьте пожалуйста) Запускаю это, но показывает одно и то же число, то бишь текст статичный и время не меняется. Как сделать, чтобы оно обновлялось?

    gmv38RnTDPz52a.jpg

     

    Переменные в цикл добавь

    while true do
        t = os.time()
        t = t + 0
        d = os.day()
        if t>=400 then break
        end
        print("Time: "..t)
        print("Day: "..d)
        sleep(1)
        term.clear()
        term.setCursorPos(1, 1)
    end
    
×
×
  • Создать...