Skip to content

Instantly share code, notes, and snippets.

@tewilove
Last active December 29, 2020 05:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tewilove/a3872fd670c6864e953be03ac4e60211 to your computer and use it in GitHub Desktop.
Save tewilove/a3872fd670c6864e953be03ac4e60211 to your computer and use it in GitHub Desktop.
From Xiaomi AX3600, version 1.0.79, produced by unluac_2020_05_28.jar.
--c736578b1d7c82e2df2a4f770e46ecb3e50c393776a03300ab45428cec78ecda ./rootfs/usr/sbin/checkupgrade.lua
--d0069d4b6c0bb716b07e0e014757f99f7baaabf7b270d17da6bfc5637a4cb2bb ./rootfs/usr/sbin/checkupgrade.lua.dec
local L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25
L0 = require
L1 = "xiaoqiang.common.XQConfigs"
L0 = L0(L1)
L1 = require
L2 = "xiaoqiang.common.XQFunction"
L1 = L1(L2)
L2 = require
L3 = "xiaoqiang.XQPreference"
L2 = L2(L3)
L3 = require
L4 = "xiaoqiang.XQLog"
L3 = L3(L4)
L4 = require
L5 = "xiaoqiang.util.XQNetUtil"
L4 = L4(L5)
L5 = require
L6 = "xiaoqiang.util.XQSysUtil"
L5 = L5(L6)
L6 = require
L7 = "xiaoqiang.util.XQDownloadUtil"
L6 = L6(L7)
L7 = require
L8 = "luci.util"
L7 = L7(L8)
L8 = require
L9 = "luci.fs"
L8 = L8(L9)
L9 = 300
function L10(A0)
local L1
return A0
end
_ = L10
L10 = L5.updateUpgradeStatus
L11 = 1
L10(L11)
L10 = L2.set
L11 = L0.PREF_ROM_FULLSIZE
L12 = nil
L10(L11, L12)
L10 = L2.set
L11 = L0.PREF_ROM_DOWNLOAD_URL
L12 = nil
L10(L11, L12)
L10 = L2.set
L11 = L0.PREF_ROM_DOWNLOAD_ID
L12 = nil
L10(L11, L12)
L10 = require
L11 = "luci.model.uci"
L10 = L10(L11)
L10 = L10.cursor
L10 = L10()
L11 = tonumber
L13 = L10
L12 = L10.get
L14 = "misc"
L15 = "hardware"
L16 = "flash_per"
L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25 = L12(L13, L14, L15, L16)
L11 = L11(L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25)
if L11 == 1 then
L11 = 1
if L11 then
goto lbl_64
end
end
L11 = 0
::lbl_64::
L12 = tonumber
L14 = L10
L13 = L10.get
L15 = "misc"
L16 = "hardware"
L17 = "usbmode"
L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25 = L13(L14, L15, L16, L17)
L12 = L12(L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25)
if L12 == 1 then
L12 = 1
if L12 then
goto lbl_77
end
end
L12 = 0
::lbl_77::
L13 = {}
L14 = arg
L14 = #L14
if L14 == 3 then
L13.needUpdate = 1
L14 = arg
L14 = L14[1]
L13.downloadUrl = L14
L14 = arg
L14 = L14[2]
L13.fullHash = L14
L14 = tonumber
L15 = arg
L15 = L15[3]
L14 = L14(L15)
L13.fileSize = L14
else
L14 = L4.checkUpgrade
L14 = L14()
L13 = L14
end
L14 = L3.log
L15 = 6
L16 = "Upgrade:check upgrade"
L17 = L13
L14(L15, L16, L17)
if L13 then
L14 = L13.needUpdate
if L14 == 1 then
L14 = L5.updateUpgradeStatus
L15 = 2
L14(L15)
L14 = L13.downloadUrl
L15 = L13.fullHash
if L14 and L15 then
L16 = L5.updateUpgradeStatus
L17 = 3
L16(L17)
L16 = L2.set
L17 = L0.PREF_ROM_FULLSIZE
L18 = L13.fileSize
L16(L17, L18)
L16 = L2.set
L17 = L0.PREF_ROM_DOWNLOAD_URL
L18 = L14
L16(L17, L18)
L16 = L3.log
L17 = 6
L18 = "Upgrade:downloading ..."
L16(L17, L18)
L16 = nil
if L12 == 1 then
L17 = L5.usbMode
L17 = L17()
L16 = L17
if L16 then
L17 = os
L17 = L17.execute
L18 = "/etc/init.d/usb_deploy_init_script.sh stop >/dev/null 2>/dev/null; echo 3 > /proc/sys/vm/drop_caches"
L17(L18)
end
end
L17 = L6.syncDownload
L18 = L14
L17, L18 = L17(L18)
L19 = L3.log
L20 = 6
L21 = "Hash and path:"
L22 = L17
L23 = L18
L19(L20, L21, L22, L23)
if L17 == L15 and L18 then
L19 = L3.log
L20 = 6
L21 = "Upgrade:download success"
L19(L20, L21)
L19 = L5.verifyImage
L20 = L18
L19 = L19(L20)
if not L19 then
L19 = L5.updateUpgradeStatus
L20 = 9
L19(L20)
if L18 then
L19 = L8.access
L20 = L18
L19 = L19(L20)
if L19 then
L19 = L8.unlink
L20 = L18
L19(L20)
end
end
if L16 then
L19 = os
L19 = L19.execute
L20 = "/etc/init.d/usb_deploy_init_script.sh start >/dev/null 2>/dev/null"
L19(L20)
end
return
end
L19 = L5.updateUpgradeStatus
L20 = 5
L19(L20)
L19 = 0
while true do
L20 = L5.getFlashPermission
L20 = L20()
if L20 then
break
end
L19 = L19 + 2
if L9 <= L19 then
break
end
L20 = os
L20 = L20.execute
L21 = "sleep 2"
L20(L21)
end
L20 = os
L20 = L20.execute
L21 = "flash.sh '"
L22 = L18
L23 = "'"
L21 = L21 .. L22 .. L23
L20 = L20(L21)
if L20 == 0 then
if L11 == 0 then
L21 = os
L21 = L21.execute
L22 = L0.NVRAM_SET_UPGRADED
L21(L22)
end
L21 = L5.updateUpgradeStatus
L22 = 11
L21(L22)
else
L21 = L5.updateUpgradeStatus
L22 = 10
L21(L22)
if L18 then
L21 = L8.access
L22 = L18
L21 = L21(L22)
if L21 then
L21 = L8.unlink
L22 = L18
L21(L22)
end
end
if L16 then
L21 = os
L21 = L21.execute
L22 = "/etc/init.d/usb_deploy_init_script.sh start >/dev/null 2>/dev/null"
L21(L22)
end
end
L21 = L3.log
L22 = 6
L23 = "Upgrade:result "
L24 = tostring
L25 = L20
L24 = L24(L25)
L23 = L23 .. L24
L21(L22, L23)
else
if L18 then
L19 = L8.unlink
L20 = L18
L19(L20)
end
if L16 then
L19 = os
L19 = L19.execute
L20 = "/etc/init.d/usb_deploy_init_script.sh start >/dev/null 2>/dev/null"
L19(L20)
end
L19 = L5.updateUpgradeStatus
L20 = 8
L19(L20)
L19 = L3.log
L20 = 3
L21 = "Upgrade:download failed"
L19(L20, L21)
end
else
L16 = L5.updateUpgradeStatus
L17 = 7
L16(L17)
L16 = L3.log
L17 = 3
L18 = "Upgrade:No url or fullhash"
L16(L17, L18)
end
end
else
if L13 then
L14 = L13.needUpdate
if L14 == 0 then
L14 = L5.updateUpgradeStatus
L15 = 6
L14(L15)
L14 = L3.log
L15 = 6
L16 = "Upgrade:No update"
L14(L15, L16)
end
else
L14 = L5.updateUpgradeStatus
L15 = 6
L14(L15)
L14 = L3.log
L15 = 3
L16 = "Upgrade:server unreachable"
L14(L15, L16)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment