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

micro bios, bios с возможностью запустить openOS онлайн

Рекомендуемые сообщения

aJQiLsL.png

 

как пользоваться:

  • для входа в меню bios нажмите alt при загрузке
  • для установки пароля bios>password(текущий пароль)>set password вводите пароль два раза
  • пароль можно выключить и он будет нужен только для входа в меню password он может блокировать меню или загрузку в цело
  • пароль захеширован хоть и храниться в nbt, владельцы варпов могут быть спокойны
  • также вы можете перезагрузить компьютер без появления надписи bios menu(computer.shutdown("fast")) или сразу в меню (computer.shutdown("bios"))
  • если у вас стоит мод для openOS() то вы можете использовать reboot fast и reboot bios прямо в shell

 

также из под функций присутствует:

  • url boot (Internet>Url boot)
  • возможность запуска openOS через интернет(Internet>openOSonline)
  • так же биос умеет подгружать утилиты с github репозитория, которых в скором времени там будет много
  • password
  • возможность загрузки в разные файлы на одном диске например - openOS и mineOS

 

что может быть непонятно:

  • если вы вводите пароль а поле просто очищается значит вы ввели его неправильна
  • если вы вводите в буквы не вводиться убедитесь что у вас включен английский язык
  • если вы поставили пароль в он не подставился и не было окна pleas wait значит два пароля не совпадают

 

примечания:

  • поддерживаются все тиры железа
  • обязательно установить архитектуру процессора в lua 5.3(начиная с новой версии биос меняет ее автоматически(как Cyan Bios))
  • начиная с новой версии загрузка в mineOS работать не будет, это проблема ос, так как она использует getData вместо getBootAddress, и я больше не собираюсь поддерживать этот костыль(поддержка mineOS была полностью удалена)

 

команда для установки: 

wget https://raw.githubusercontent.com/igorkll/microBios/main/compressed.bin /tmp/bios.lua -f;echo "" > /dev/eeprom-data;flash /tmp/bios.lua microBios -q;echo "require('computer').setArchitecture('lua 5.3')" > "/tmp/architecture.lua" /tmp/architecture.lua;reboot

 

Изменено пользователем rootmaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Is it time to analyze code?

Скрытый текст

biosname="microBios"
statusAllow=1;
local b=function()error("no bootable medium found",0)end;
do
  local type,c,d=type,true,computer.getDeviceInfo()
  local function e(f)
    local g,h,i,j,k=126,1671,7124,"",{}
    for l=1,#f do table.insert(k,f:byte(l))end;
    for l=1,#f do
      local m,n,o=f:byte(l-1),f:byte(l+1),f:byte(l)
      if not m then m=f:byte(#f)end;
      if not n then n=f:byte(1)end;
      local p=m*g+n*h+o*i;p=p+l*h;p=p*(i-(#f-l))
      for q,r in ipairs(k)do p=p+r-l*q*(g-h)end;
      p=math.abs(p)p=p%256;j=j..string.char(p)
      if#j==16 then
        local s=j:byte(1)g=g+s;h=h*s;i=i*s;j=j:sub(2,#j)
      end
    end;
    while#j<16 do j=string.char(math.abs(i+h*#j)%256)..j end;
    return j
  end;
  local function t(u)return component.proxy(component.list(u)()or"*")end;
  local v=t("eeprom")
  local function w(f,x)
    local y,z,l={},1,1;
    while 1 do
      if l>#f then break end;
      local s=f:sub(l,#x+l-1)
      if not y[z]then y[z]=""end;
      if s==x then z=z+1;l=l+#x else y[z]=y[z]..f:sub(l,l)l=l+1 end
    end;
    if f:sub(#f-(#x-1),#f)==x then table.insert(y,"")end;
    return y
  end;
  local function A(B)
    return w(v.getData(),"\n")[B]or""
  end;
  local function C(B,D)
    if A(B)==D then return end;
    if D:find("\n")then error("\\n char")end;
    local y=w(v.getData(),"\n")
    for l=B,1,-1 do
      if not y[l]then y[l]=""end
    end;
    y[B]=D;
    v.setData(table.concat(y,"\n"))
  end;
  local function E(F)
    local G,H,I;
    for J in component.list(F)do
      I=tonumber(d[J].width)
      if component.type(F)=="screen"then
        if#component.invoke(J,"getKeyboards")>0 then I=I+10 end
      end;
      if not H or I>H then G,H=J,I end
    end;
    return G
  end;
  local function K(L,M)
    local N=computer.uptime()
    while computer.uptime()-N<L do M()end
  end;
  local O,P,Q,R=t("internet"),component.proxy(E("gpu")or""),a,{}
  if P then
    Q=A(2)
    if component.type(Q)~="screen"then Q=E("screen")
      if Q then C(2,Q)end
    end;
    if Q then R=component.invoke(Q,"getKeyboards")P.bind(Q)end
  end;
  local function S(T)
    return function()return T end
  end;
  computer.getBootGpu=S(P and P.address)
  computer.getBootFile=function()return A(3)end;
  computer.getBootScreen=S(Q)
  computer.getBootAddress=function()return A(1)end;
  function computer.setBootFile(U)C(3,U)end;
  function computer.setBootScreen(Q)C(2,Q)end;
  function computer.setBootAddress(J)C(1,J)end;
  local V=computer.shutdown;
  function computer.shutdown(W)
    if type(W)=="string"then C(6,W)end;V(W)
  end;
  local function X(J)
    for l,p in ipairs(R)do
      if p==J then return 1 end
    end
  end;
  local function Y(J)
    local Z=component.proxy(J)
    return Z.getLabel()and Z.address:sub(1,4)..":"..Z.getLabel()or Z.address:sub(1,4)
  end;
  local function _(a0)
    local a1,a2,a3,a4=O.request(a0),""
    if a1 then
      while 1 do
        a3,a4=a1.read(math.huge)
        if a3 then a2=a2 ..a3 else
          a1.close()
          if a4 then return a,a4 else return a2 end
        end
      end
    else return a,"Unvalid Address"
    end
  end;
  local a5,a6,a7,a8;
  local function a9()
    if not Q then return end;
    local aa={[8]={0xf0f0f0,0x1e1e1e,0x2d2d2d,0x3c3c3c,0x4b4b4b,0x5a5a5a,0x696969,0x787878,0x878787,0x969696,0xa5a5a5,0xb4b4b4,0xc3c3c3,0xd2d2d2,0xe1e1e1,0},[4]={0xffffff,0xffcc33,0xcc66cc,0x6699ff,0xffff33,0x33cc33,0xff6699,0x333333,0xcccccc,0x336699,0x9933cc,0x333399,0x663300,3368448,0xff3333,0}}aa=aa[a5]
    if aa then a8=c;
      for l,p in ipairs(aa)do P.setPaletteColor(l-1,p)end
    end
  end;
  if Q then
    a5=math.floor(P.getDepth())
    a6,a7=P.getResolution()
    a9()
    if a8 then P.setPaletteColor(1,0x7B68EE)P.setPaletteColor(2,0x1E90FF)P.setPaletteColor(3,0x6B8E23)P.setPaletteColor(4,0x8B0000)P.setPaletteColor(5,0xDAA520)P.setPaletteColor(6,0)P.setPaletteColor(7,0xFFFFFF)
    end
  end;
  local function ab(f,ac,ad)
    P.set((ac or 0)+math.floor(a6/2-(#f-1)/2+0.5),ad or math.floor(a7/2+0.5),f)
  end;
  local function ae()
    P.setBackground(0)P.setForeground(0xFFFFFF)P.fill(1,1,a6,a7," ")
  end;
  local function af(f,ag,L,ah,ai)
    if not Q then if ah then error(ah,0)end;return end;
    ae()
    P.setForeground(ag or 1,not ai and a8)
    ab(f)
    if L==c then
      ab("Press Enter To Continue",a,math.floor(a7/2+0.5)+1)
      while 1 do
        local aj={computer.pullSignal()}
        if aj[1]=="key_down"and X(aj[2])and aj[4]==28 then break end
      end
    elseif L then
      K(L,function()computer.pullSignal(0)end)
    end;
    return 1
  end;
  _G.status=function(f)af(f,0xFFFFFF,a,a,1)end;
  local function ak(f,al)
    local am=""
    local function an()
      af(f..": "..(al and string.rep("*",#am)or am).."_",5)
    end;
    an()
    while 1 do
      local aj={computer.pullSignal()}
      if X(aj[2])then
        if aj[1]=="key_down"then
          if aj[4]==28 then
            return am
          elseif aj[3]>=32 and aj[3]<=126 then
            am=am..string.char(aj[3])an()
          elseif aj[4]==14 then
            if#am>0 then am=am:sub(1,#am-1)an()end
          elseif aj[4]==46 then
            break
          end
        elseif aj[1]=="clipboard"then
          am=am..aj[3]an()
          if am:byte(#am)==13 then return am end
        end
      end
    end
  end;
  local function ao(ap,aq,ar)
    local as,at,au={},{},ar or 1;
    function as.a(...)
      table.insert(at,{...})
    end;
    local function av()
      ae()
      P.setForeground(aq,a8)
      ab(ap,a,a7//3)
      local m,o,n=at[au-1],at[au],at[au+1]
      P.setBackground(0)
      if m then
        P.setForeground(m[2],a8)ab(m[1],-a6//3,a7//3*2)
      end;
      if n then
        P.setForeground(n[2],a8)ab(n[1],a6//3,a7//3*2)
      end;
      P.setBackground(o[2],a8)P.setForeground(0)ab(o[1],a,a7//3*2)
    end;
    function as.l()
      av()
      while 1 do
        local aj={computer.pullSignal()}
        if aj[1]=="key_down"and X(aj[2])then
          if aj[4]==28 then
            if not at[au][3]then break end;
            local aw=at[au][3]()
            if aw then return aw end;
            av()
          elseif aj[4]==205 then
            if au<#at then au=au+1;av()end
          elseif aj[4]==203 then
            if au>1 then au=au-1;av()end
          end
        end
      end
    end;
    return as
  end;
  local ax=A(6)C(6,"")
  local function ay(J)
    local Z=component.proxy(J)
    if Z.exists("/boot/kernel/pipes")then return"/boot/kernel/pipes"
    elseif Q then
      if Z.exists("/OS.lua")then return"/OS.lua"
      elseif Z.exists("/init.lua")then return"/init.lua"
      end
    else
      if Z.exists("/init.lua")then return"/init.lua"
      elseif Z.exists("/OS.lua")then return"/OS.lua"
      end
    end
  end;
  local function az()
    af("Please Wait",5)
  end;
  local function aA()
    if A(4)==""then return 1 end;
    while 1 do
      local aB=ak("Enter Password",1)
      if not aB then break end;
      if e(aB)==A(4)then return 1 end
    end
  end;
  local function aC()
    if A(5)==""and not aA()then V()end;
    local aD=ao("micro bios",2)
    aD.a("Back",4)
    aD.a("Reboot",4,function()V(1)end)
    aD.a("Shutdown",4,V)
    if O then
      aD.a("Url Boot",3,function()
          local a0=ak("Url")
          if a0 then
            local a2,ah=_(a0)
            if a2 then
              local M,ah=load(a2,"=urlboot")
              if M then
                a9()
                local aE,ah=pcall(M)
                if not aE then af(ah or"unknown error",0xFFFFFF,c,a,1)end
              else af(ah,4,c)
              end
            else af(ah,4,c)end
          end
        end)
    end;
    aD.a("Password",5,function()
        if aA()then
          local aD=ao("Password",3)
          aD.a("Set Password",5,function()
              local aF=ak("Enter New Password",1)
              if aF and aF~=""and aF==ak("Confirm New Password",1)then az()C(4,e(aF))end
            end)
          aD.a("Set Password Mode",5,function()
              local aD=ao("Select Mode",2)
              aD.a("Menu",5,function()az()C(5,"")end)
              aD.a("Boot",5,function()az()C(5,"1")end)
              aD.a("Disable",5,function()az()C(5,"2")end)
              aD.a("Back",4)aD.l()
            end)
          aD.a("Clear Password",5,function()
              az()C(4,"")C(5,"")
            end)
          aD.a("Back",4)
          aD.l()
        end
      end)
    for J in component.list("filesystem")do
      local ap=Y(J)
      aD.a(ap,1,function()
          local aD=ao("Drive "..ap,2)
          local Z=component.proxy(J)
          local aG={"/init.lua","/OS.lua"}
          for l=2,1,-1 do
            if not Z.exists(aG[l])then table.remove(aG,l)end
          end;
          local aH="/boot/kernel/"
          for aI,U in ipairs(Z.list(aH)or{})do
            table.insert(aG,aH..U)
          end;
          if#aG>0 then
            aD.a("boot",1,function()
                local U=ay(J)
                if U then az()C(1,J)C(3,U)return 1 end;
                af("Boot File Is Not Found",a,c)
              end)
          end;
          local function aJ(U)
            if component.invoke(J,"exists",U)then
              aD.a(U,1,function()az()C(1,J)C(3,U)return 1 end)
            end
          end;
          for l,p in ipairs(aG)do aJ(p)end;
          aD.a("Back",4)
          return aD.l()
        end)
    end;
    aD.l()
  end;
  if ax~="fast"and A(5)=="1"and(not Q or not aA())then V()end;
  if Q then
    if ax=="bios"then
      aC()
    elseif ax~="fast"and#R>0 and af("Press Alt To Open The Bios Menu")then
      K(1,function()
          local aj={computer.pullSignal(0.1)}
          if aj[1]=="key_down"and X(aj[2])and aj[4]==56 then aC()end
        end)
    end
  end;
  local aK,U=A(1),A(3)
  local aL=component.proxy(aK)
  if not aL or not aL.exists(U)then
    af("Search For A Bootable Filesystem")
    U=a;
    if aL then U=ay(aK)end;
    if not U then
      for aM in component.list("filesystem")do
        local aN=ay(aM)
        if aN then aK=aM;U=aN;break end
      end
    end;
    if U then
      az()C(1,aK)C(3,U)
      aL=component.proxy(aK)
    else
      af("Bootable Filesystem Is Not Found",a,c,1)V()
    end
  end;
  if Q then a9()end;
  af("Boot To Drive "..Y(aK).." To File "..U,0xFFFFFF,a,a,1)
  local U,am=assert(aL.open(U,"rb")),""
  while 1 do
    local aB=aL.read(U,math.huge)
    if not aB then break end;
    am=am..aB
  end;
  aL.close(U)
  if U=="/OS.lua"then
    v.getData=function()return aK end
  end;
  b=load(am,"=init")
end;
b()

 

 

Поделиться сообщением


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 15.06.2022 в 17:41, ProgramCrafter сказал:

Is it time to analyze code?

  Скрыть содержимое


biosname="microBios"
statusAllow=1;
local b=function()error("no bootable medium found",0)end;
do
  local type,c,d=type,true,computer.getDeviceInfo()
  local function e(f)
    local g,h,i,j,k=126,1671,7124,"",{}
    for l=1,#f do table.insert(k,f:byte(l))end;
    for l=1,#f do
      local m,n,o=f:byte(l-1),f:byte(l+1),f:byte(l)
      if not m then m=f:byte(#f)end;
      if not n then n=f:byte(1)end;
      local p=m*g+n*h+o*i;p=p+l*h;p=p*(i-(#f-l))
      for q,r in ipairs(k)do p=p+r-l*q*(g-h)end;
      p=math.abs(p)p=p%256;j=j..string.char(p)
      if#j==16 then
        local s=j:byte(1)g=g+s;h=h*s;i=i*s;j=j:sub(2,#j)
      end
    end;
    while#j<16 do j=string.char(math.abs(i+h*#j)%256)..j end;
    return j
  end;
  local function t(u)return component.proxy(component.list(u)()or"*")end;
  local v=t("eeprom")
  local function w(f,x)
    local y,z,l={},1,1;
    while 1 do
      if l>#f then break end;
      local s=f:sub(l,#x+l-1)
      if not y[z]then y[z]=""end;
      if s==x then z=z+1;l=l+#x else y[z]=y[z]..f:sub(l,l)l=l+1 end
    end;
    if f:sub(#f-(#x-1),#f)==x then table.insert(y,"")end;
    return y
  end;
  local function A(B)
    return w(v.getData(),"\n")[B]or""
  end;
  local function C(B,D)
    if A(B)==D then return end;
    if D:find("\n")then error("\\n char")end;
    local y=w(v.getData(),"\n")
    for l=B,1,-1 do
      if not y[l]then y[l]=""end
    end;
    y[B]=D;
    v.setData(table.concat(y,"\n"))
  end;
  local function E(F)
    local G,H,I;
    for J in component.list(F)do
      I=tonumber(d[J].width)
      if component.type(F)=="screen"then
        if#component.invoke(J,"getKeyboards")>0 then I=I+10 end
      end;
      if not H or I>H then G,H=J,I end
    end;
    return G
  end;
  local function K(L,M)
    local N=computer.uptime()
    while computer.uptime()-N<L do M()end
  end;
  local O,P,Q,R=t("internet"),component.proxy(E("gpu")or""),a,{}
  if P then
    Q=A(2)
    if component.type(Q)~="screen"then Q=E("screen")
      if Q then C(2,Q)end
    end;
    if Q then R=component.invoke(Q,"getKeyboards")P.bind(Q)end
  end;
  local function S(T)
    return function()return T end
  end;
  computer.getBootGpu=S(P and P.address)
  computer.getBootFile=function()return A(3)end;
  computer.getBootScreen=S(Q)
  computer.getBootAddress=function()return A(1)end;
  function computer.setBootFile(U)C(3,U)end;
  function computer.setBootScreen(Q)C(2,Q)end;
  function computer.setBootAddress(J)C(1,J)end;
  local V=computer.shutdown;
  function computer.shutdown(W)
    if type(W)=="string"then C(6,W)end;V(W)
  end;
  local function X(J)
    for l,p in ipairs(R)do
      if p==J then return 1 end
    end
  end;
  local function Y(J)
    local Z=component.proxy(J)
    return Z.getLabel()and Z.address:sub(1,4)..":"..Z.getLabel()or Z.address:sub(1,4)
  end;
  local function _(a0)
    local a1,a2,a3,a4=O.request(a0),""
    if a1 then
      while 1 do
        a3,a4=a1.read(math.huge)
        if a3 then a2=a2 ..a3 else
          a1.close()
          if a4 then return a,a4 else return a2 end
        end
      end
    else return a,"Unvalid Address"
    end
  end;
  local a5,a6,a7,a8;
  local function a9()
    if not Q then return end;
    local aa={[8]={0xf0f0f0,0x1e1e1e,0x2d2d2d,0x3c3c3c,0x4b4b4b,0x5a5a5a,0x696969,0x787878,0x878787,0x969696,0xa5a5a5,0xb4b4b4,0xc3c3c3,0xd2d2d2,0xe1e1e1,0},[4]={0xffffff,0xffcc33,0xcc66cc,0x6699ff,0xffff33,0x33cc33,0xff6699,0x333333,0xcccccc,0x336699,0x9933cc,0x333399,0x663300,3368448,0xff3333,0}}aa=aa[a5]
    if aa then a8=c;
      for l,p in ipairs(aa)do P.setPaletteColor(l-1,p)end
    end
  end;
  if Q then
    a5=math.floor(P.getDepth())
    a6,a7=P.getResolution()
    a9()
    if a8 then P.setPaletteColor(1,0x7B68EE)P.setPaletteColor(2,0x1E90FF)P.setPaletteColor(3,0x6B8E23)P.setPaletteColor(4,0x8B0000)P.setPaletteColor(5,0xDAA520)P.setPaletteColor(6,0)P.setPaletteColor(7,0xFFFFFF)
    end
  end;
  local function ab(f,ac,ad)
    P.set((ac or 0)+math.floor(a6/2-(#f-1)/2+0.5),ad or math.floor(a7/2+0.5),f)
  end;
  local function ae()
    P.setBackground(0)P.setForeground(0xFFFFFF)P.fill(1,1,a6,a7," ")
  end;
  local function af(f,ag,L,ah,ai)
    if not Q then if ah then error(ah,0)end;return end;
    ae()
    P.setForeground(ag or 1,not ai and a8)
    ab(f)
    if L==c then
      ab("Press Enter To Continue",a,math.floor(a7/2+0.5)+1)
      while 1 do
        local aj={computer.pullSignal()}
        if aj[1]=="key_down"and X(aj[2])and aj[4]==28 then break end
      end
    elseif L then
      K(L,function()computer.pullSignal(0)end)
    end;
    return 1
  end;
  _G.status=function(f)af(f,0xFFFFFF,a,a,1)end;
  local function ak(f,al)
    local am=""
    local function an()
      af(f..": "..(al and string.rep("*",#am)or am).."_",5)
    end;
    an()
    while 1 do
      local aj={computer.pullSignal()}
      if X(aj[2])then
        if aj[1]=="key_down"then
          if aj[4]==28 then
            return am
          elseif aj[3]>=32 and aj[3]<=126 then
            am=am..string.char(aj[3])an()
          elseif aj[4]==14 then
            if#am>0 then am=am:sub(1,#am-1)an()end
          elseif aj[4]==46 then
            break
          end
        elseif aj[1]=="clipboard"then
          am=am..aj[3]an()
          if am:byte(#am)==13 then return am end
        end
      end
    end
  end;
  local function ao(ap,aq,ar)
    local as,at,au={},{},ar or 1;
    function as.a(...)
      table.insert(at,{...})
    end;
    local function av()
      ae()
      P.setForeground(aq,a8)
      ab(ap,a,a7//3)
      local m,o,n=at[au-1],at[au],at[au+1]
      P.setBackground(0)
      if m then
        P.setForeground(m[2],a8)ab(m[1],-a6//3,a7//3*2)
      end;
      if n then
        P.setForeground(n[2],a8)ab(n[1],a6//3,a7//3*2)
      end;
      P.setBackground(o[2],a8)P.setForeground(0)ab(o[1],a,a7//3*2)
    end;
    function as.l()
      av()
      while 1 do
        local aj={computer.pullSignal()}
        if aj[1]=="key_down"and X(aj[2])then
          if aj[4]==28 then
            if not at[au][3]then break end;
            local aw=at[au][3]()
            if aw then return aw end;
            av()
          elseif aj[4]==205 then
            if au<#at then au=au+1;av()end
          elseif aj[4]==203 then
            if au>1 then au=au-1;av()end
          end
        end
      end
    end;
    return as
  end;
  local ax=A(6)C(6,"")
  local function ay(J)
    local Z=component.proxy(J)
    if Z.exists("/boot/kernel/pipes")then return"/boot/kernel/pipes"
    elseif Q then
      if Z.exists("/OS.lua")then return"/OS.lua"
      elseif Z.exists("/init.lua")then return"/init.lua"
      end
    else
      if Z.exists("/init.lua")then return"/init.lua"
      elseif Z.exists("/OS.lua")then return"/OS.lua"
      end
    end
  end;
  local function az()
    af("Please Wait",5)
  end;
  local function aA()
    if A(4)==""then return 1 end;
    while 1 do
      local aB=ak("Enter Password",1)
      if not aB then break end;
      if e(aB)==A(4)then return 1 end
    end
  end;
  local function aC()
    if A(5)==""and not aA()then V()end;
    local aD=ao("micro bios",2)
    aD.a("Back",4)
    aD.a("Reboot",4,function()V(1)end)
    aD.a("Shutdown",4,V)
    if O then
      aD.a("Url Boot",3,function()
          local a0=ak("Url")
          if a0 then
            local a2,ah=_(a0)
            if a2 then
              local M,ah=load(a2,"=urlboot")
              if M then
                a9()
                local aE,ah=pcall(M)
                if not aE then af(ah or"unknown error",0xFFFFFF,c,a,1)end
              else af(ah,4,c)
              end
            else af(ah,4,c)end
          end
        end)
    end;
    aD.a("Password",5,function()
        if aA()then
          local aD=ao("Password",3)
          aD.a("Set Password",5,function()
              local aF=ak("Enter New Password",1)
              if aF and aF~=""and aF==ak("Confirm New Password",1)then az()C(4,e(aF))end
            end)
          aD.a("Set Password Mode",5,function()
              local aD=ao("Select Mode",2)
              aD.a("Menu",5,function()az()C(5,"")end)
              aD.a("Boot",5,function()az()C(5,"1")end)
              aD.a("Disable",5,function()az()C(5,"2")end)
              aD.a("Back",4)aD.l()
            end)
          aD.a("Clear Password",5,function()
              az()C(4,"")C(5,"")
            end)
          aD.a("Back",4)
          aD.l()
        end
      end)
    for J in component.list("filesystem")do
      local ap=Y(J)
      aD.a(ap,1,function()
          local aD=ao("Drive "..ap,2)
          local Z=component.proxy(J)
          local aG={"/init.lua","/OS.lua"}
          for l=2,1,-1 do
            if not Z.exists(aG[l])then table.remove(aG,l)end
          end;
          local aH="/boot/kernel/"
          for aI,U in ipairs(Z.list(aH)or{})do
            table.insert(aG,aH..U)
          end;
          if#aG>0 then
            aD.a("boot",1,function()
                local U=ay(J)
                if U then az()C(1,J)C(3,U)return 1 end;
                af("Boot File Is Not Found",a,c)
              end)
          end;
          local function aJ(U)
            if component.invoke(J,"exists",U)then
              aD.a(U,1,function()az()C(1,J)C(3,U)return 1 end)
            end
          end;
          for l,p in ipairs(aG)do aJ(p)end;
          aD.a("Back",4)
          return aD.l()
        end)
    end;
    aD.l()
  end;
  if ax~="fast"and A(5)=="1"and(not Q or not aA())then V()end;
  if Q then
    if ax=="bios"then
      aC()
    elseif ax~="fast"and#R>0 and af("Press Alt To Open The Bios Menu")then
      K(1,function()
          local aj={computer.pullSignal(0.1)}
          if aj[1]=="key_down"and X(aj[2])and aj[4]==56 then aC()end
        end)
    end
  end;
  local aK,U=A(1),A(3)
  local aL=component.proxy(aK)
  if not aL or not aL.exists(U)then
    af("Search For A Bootable Filesystem")
    U=a;
    if aL then U=ay(aK)end;
    if not U then
      for aM in component.list("filesystem")do
        local aN=ay(aM)
        if aN then aK=aM;U=aN;break end
      end
    end;
    if U then
      az()C(1,aK)C(3,U)
      aL=component.proxy(aK)
    else
      af("Bootable Filesystem Is Not Found",a,c,1)V()
    end
  end;
  if Q then a9()end;
  af("Boot To Drive "..Y(aK).." To File "..U,0xFFFFFF,a,a,1)
  local U,am=assert(aL.open(U,"rb")),""
  while 1 do
    local aB=aL.read(U,math.huge)
    if not aB then break end;
    am=am..aB
  end;
  aL.close(U)
  if U=="/OS.lua"then
    v.getData=function()return aK end
  end;
  b=load(am,"=init")
end;
b()

 

 

исходник же в репозитории есть, зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 15.06.2022 в 18:21, Fingercomp сказал:
Здесь заявляется, что пароли хэшируются. Хотя это определённо прогресс по сравнению с плейнтекстом, мне кажется, готовую хэш-функцию в силу религиозных убеждений ты юзать побоялся и сделал свою. Можешь ли тогда выложить не избитую минификатором используемую тобой функцию хэширования? Кроме того, солишь ли ты пароль перед хэшированием?

нет пароль не солю хотя стоило бы но вот  30 байт свободного места которых даже не хватило на переключения архитектуры так не считают, а hesh функцию можеш посмотреть в исходнике https://raw.githubusercontent.com/igorkll/topBiosV5/main/microBios.lua

Изменено пользователем rootmaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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