AWA.SH

此脚本可在Alpine Linux下快速部署网页应用所需的服务器及服务

特点

  • 可选择使用的语言,包括PHP, Python, Node.js
  • 可选择网页服务器,包括Nginx, Apache, Lighttpd
  • 可选择数据库引擎,包括MariaDB, SQLite

使用

wget --no-check-certificate https://obj.yuu.ink/script/awa.sh && chmod +x awa.sh && ./awa.sh

最近把很早以前购买的三星平板拿出来继续使用,其SoC是三星半导体自制的Exynos 9611,由于我买的是WIFI+LTE版本,其存在基带。很久以前用搭载Exynos4210的三星S2的时候,就对三星的奇怪的香农基带感到好奇。
历经快十年的对于逆向的爱好,最近再阅读了一些大牛写的代码和他们提供的Loader,成功的对目前最新的Exynos Shannon基带固件做到了解包,解压后可直接使用ShannonRE项目之中的Loader和静态分析工具进行分析。
当然如果你只是对三星的调试模式比较好奇的话,在我的解压工具中,其将自动从main区块中搜索AT指令,可通过终端模拟器连接到Samsung DM端口发送AT指令进行调试。

# siu.py v1.2

import struct
import sys
import re


class TOC:
    def __init__(self, fstream, fpos=None):
        try:
            if fpos != None:
                fstream.seek(fpos)
            self.buf = fstream.read(32)
        except Exception:
            print("[!]ERROR Reading TOC Header")
            self.buf = []

    def unpack(self):
        self.name = self.buf[:12].rstrip(b"\x00").decode("utf-8")
        self.start = struct.unpack("i", self.buf[12:16])[0]
        self.size = struct.unpack("i", self.buf[20:24])[0]
        self.secdata = struct.unpack("i", self.buf[24:28])[0]
        self.queue = struct.unpack("i", self.buf[28:32])[0]

    def printInfo(self):
        print("Block Name: %s" % self.name)
        print("Start Offset: 0x%08x" % self.start)
        print("Size: 0x%08x" % self.size)
        print("Sec Data: 0x%08x" % self.secdata)
        print("Queue: %d" % self.queue)


class IMG:
    def __init__(self, fstream, hdr):
        fstream.seek(hdr.start)
        self.buf = fstream.read(hdr.size)

    def unpack(self):
        return

    def write(self, dst):
        with open(dst + ".bin", "wb") as f:
            f.write(self.buf)


class BOOT(IMG):
    def unpack(self):
        print('Done')


def unpackToc(fileStream, name):
    hdr = TOC(fileStream)
    hdr.unpack()
    hdr.printInfo()
    assert (hdr.name == name)
    return hdr


def unpackImg(fileStream, hdr, Type):
    img = Type(fileStream, hdr)
    img.unpack()
    return img


def findAt(img):
    at_strings = re.findall(rb'AT\+[^\x00]*', img.buf)
    with open('AT.TXT', 'wb') as f:
        for at_str in at_strings:
            f.write(at_str + b'\n')
        print("Found %d AT strings" % len(at_strings))
    return at_strings


def findVer(img):
    model = input("Input model name>>>")
    ver_strings = re.findall(rb'%s[^\x00]*' % model.encode(), img.buf)
    with open('VER.TXT', 'wb') as f:
        for ver_str in ver_strings:
            f.write(ver_str + b'\n')
        print("Found %d VER strings" % len(ver_strings))
        print("Possible Version: %s" % ver_strings[0].decode())
    return ver_strings


def alert():
    print("SHANNON Image Unpacker v1.2 by Yuu")
    print("Idea from ShannonRE by grant-h")
    print("Usage: python3 ./siu.py <modem.bin> -at/-ver")
    print("  -at: Find AT strings")
    print("  -ver: Find version strings")
    sys.exit(0)


def main():
    if len(sys.argv) < 2:
        alert()

    path = sys.argv[1]
    fileStream = open(path, "rb")

    toc_hdr = unpackToc(fileStream, "TOC")
    boot_hdr = unpackToc(fileStream, "BOOT")
    main_hdr = unpackToc(fileStream, "MAIN")
    vss_hdr = unpackToc(fileStream, "VSS")
    nv_hdr = unpackToc(fileStream, "NV")
    offset_hdr = unpackToc(fileStream, "OFFSET")

    boot_img = unpackImg(fileStream, boot_hdr, BOOT)
    boot_img.write("boot")

    main_img = unpackImg(fileStream, main_hdr, IMG)
    main_img.write("main")

    vss_img = unpackImg(fileStream, vss_hdr, IMG)
    vss_img.write("vss")

    nv_img = unpackImg(fileStream, nv_hdr, IMG)
    nv_img.write("nv")

    fileStream.close()

    if len(sys.argv) > 2 and sys.argv[2] == "-at":
        findAt(main_img)
    if len(sys.argv) > 2 and sys.argv[2] == "-ver":
        findVer(main_img)


if __name__ == "__main__":
    main()

在开始之前,请确定你的设备型号是C1200 v1,以及备份好你的PPPoE账户和密码信息以及VLAN信息
由于马来西亚版本软件阉割了波束成形和AP功能,所以尝试将其刷成公开版。

确定版本

首先使用默认用户名和密码登录

默认用户名为admin,密码为TIME(主MAC地址后四位)
比如你的MAC地址为FF:FF:FF:FF:AA:C0,则对应密码是TIMEAAC0

TPTIME2EU_CheckVersion
首先在TIME旧固件下进入Advanced界面,向下滑动到最下方
TPTIME2EU_VersionCk
即可查看到当前的版本
TIME版本有一个特殊点就是完全没有任何关于系统更新的功能在前台,必须通过审查元素的方式才能调出。
而且只有1.0.0 Build 20180502 rel.45702 (EU)一个软件版本号,从来没有更新过

更新前准备

首先需要进入本来的管理页面,进入Advanced界面,在左侧找到Guest Network
TPTIME2EU_OriginalGuest
在Guest Network按钮上右键选择检查,进入DevTools
找到如下节点
TPTIME2EU_GuestPoint
改为
TPTIME2EU_DevTools_Moded
再次点击Guest Network,即可进入被隐藏的固件更新页面!
TPTIME2EU_UpdatePage

更新到中间固件

TP-LINK也不是傻瓜,不会让我们那么轻易的跨版本刷入固件开启更多功能,但是在2018年发布的46288 BETA版本中,这个版本没有刷写验证,所以我们就选择46288版本进行版本中继,继而就可以刷入正常的RELEASE版本。
TPTIME2EU_Flash46288
TPTIME2EU_Flash46288_Progress

更新到最新发布版固件

等待设备自动重启后,你会发现它的整个UI都大变样,同时也有BETA水印
TPTIME2EU_NewUi
直接设置好密码,进入新的页面
TPTIME2EU_NewBar
此时已经变成了公开版,所以也不再需要DevTools来打开固件更新页面了
TPTIME2EU_NewSidebar
直接进入Firmware Upgrade页面
选择2022年最新发布的58207版本,即可更新到RELEASE版本!
TPTIME2EU_Flash58207
TPTIME2EU_Flash58207_Progress

完成

享受波束成形和AP模式吧!
TPTIME2EU_Finish

固件下载

中转用BETA固件: C1200v1_eu_1.1.3_20180502_46288.bin
欧洲/东南亚区域最新版本固件: C1200v1_eu_1.1.4_20220517_58207.bin
美洲区域最新版本固件: C1200v1_us_1.1.3_20220517_58249.bin
TIME原版固件: C1200v1_time_1.0.0_20180502_45702.bin
注:如果需要刷回TIME版固件,请刷入一遍中转用BETA固件才可刷入TIME版固件

K2A.SH

此脚本可一键将Debian系Linux发行版,一键切换到超级轻量的Linux分支——Alpine Linux,多适用于小型VPS或极限高性能需求下使用

新一代的DD脚本

特点

  • 支持自非标准网卡名(如ens0等)自动获取IPv4/IPv6双栈网络信息并自动生成网络配置文件
  • 支持一键切换到国内镜像源,在运行时添加"--tuna"参数即可切换到由清华大学TUNA协会提供的镜像源,加快在中国大陆地区使用时的安装速度
  • 支持在安装之后使用公钥登录(如果源系统启用了公钥登录的情况下)
  • 支持安装权限检测,并提示提权
  • 支持CSM/UEFI启动环境的的自动检测与安装GRUB
  • 支持UEFI启动时候安全启动状态的检测
  • 支持发行版检测,不符合的基本系统无法执行系统转换作业
  • 支持Ubuntu的Snap管理器检测并可自动删除后再执行系统转换,提升了速度

使用

wget --no-check-certificate https://obj.yuu.ink/script/k2a.sh && chmod +x k2a.sh && ./k2a.sh

使用时请务必做好备份

下一版本

1.尝试检测是实体机还是虚拟机,自动判定安装标准LTS内核还是Virt内核(当前默认为Virt内核,因考虑到该脚本使用环境之因素)

更改日志

2.3-RELEASE
JUN.02-2023
原版本移动至Vintage,现版本改为Release
升级选定版本至3.18

2.3-ALPHA
APR.20-2023
为sshd_config添加默认启用SFTP

2.2-ALPHA
MAR.3-2023
添加EFI安全启动检测功能

2.1-ALPHA
JAN.26-2023
添加snapd检测和卸载功能

2.0-ALPHA
JAN.13-2023
修复无法执行init的逻辑错误
精简部分代码

1.9-ALPHA
JAN.12-2023
添加系统检测功能
修改一些字符提示

1.8-ALPHA
JAN.10-2023
添加EFI检测功能
添加EFI安装功能

第一次尝试给Typecho写插件,其中利用到了Typecho1.2的新功能和比较新的PHP实现
这只是一个简单的小小作品,代码比较混杂,如果有什么建议和遇到问题可在评论区中提出
执行效果如下
CNYLtn_Yuu
动画基于CSS3和其自带的贝塞尔曲线实现进行绘制
同时又由于慢速互联网的存在,该插件会将代码插入到footer以避免影响页面的整体加载和渲染速度
将部分设置做了图形化界面,可以更快进行修改和匹配新的传统节日
CNYLtn_Settings
安装方式则与其他插件一样,解压下方提供的zip,将插件文件夹放入<网站根目录>/usr/plugins下,至Typecho后台启用即可。

更新日志与下载

1.2R->1.3R
<FEB.14-2023>
CNYLtn_1.3R.zip
1.添加调试模式,开启后可在前台控制台中输出调试信息
2.整体结构优化

1.1R->1.2R
<JAN.11-2023>
CNYLtn_1.2R.zip
1.修复在英文版Windows系统和MacOS下的默认字体回归问题
2.修改组件动画显示
3.修改字体大小为3em并在灯笼中居中

1.0R->1.1R
<JAN.04-2023>
CNYLtn_1.1R.zip
1.修复移动端检测无效的问题

1.0R
<JAN.03-2023>
未公开发布的Release版本

注于230214:今年已经更新结束,功能新增将在来年进行更新,Bug修复则可继续提出并等待修复