樱境物语 的index.txt在哪里找

如标题

我下载了github上的一个程序

但是我找不到最新的index.txt

https://hefc.hrbzqy.com/patch/files/index.txt.975a5fcaf2be6108fb93e42dc8e5f51a

目前应该还是1.9版本吧
可以通过修改请求获取到超前版本2.0的资源2.0的资源基本全部重新打包了

官方好像加了身份验证,直接请求获取不到

没有用

# -------------------------
# Protobuf varint 编码 (支持任意大整数)
# -------------------------
cpdef bytes encode_varint(value):
    """protobuf varint 编码,支持任意精度整数"""
    if value < 0:
        raise ValueError("encode_varint 不支持负数")
    cdef bytearray out = bytearray()
    v = int(value)
    while v > 0x7F:
        out.append((v & 0x7F) | 0x80)
        v >>= 7
    out.append(v & 0x7F)
    return bytes(out)

# -------------------------
# Protobuf length-delimited 编码
# -------------------------
cpdef bytes encode_length_delimited(data: bytes):
    return encode_varint(len(data)) + data

# -------------------------
# 构造 Protobuf
# -------------------------
cpdef bytes build_protobuf(version: bytes):
    """根据动态版本号 + 实时时间戳生成 protobuf payload"""
    cdef bytes inner = b""
    cdef bytes outer = b""

    # 当前时间戳 (毫秒)
    cdef long long timestamp = int(pytime.time() * 1000)


    inner += encode_varint(1 << 3 | 0) + encode_varint(2)
    inner += encode_varint(2 << 3 | 2) + encode_length_delimited(version)
    inner += encode_varint(3 << 3 | 2) + encode_length_delimited(b"zhcn")

    outer += encode_varint(1 << 3 | 0) + encode_varint(99015)
    outer += encode_varint(3 << 3 | 2) + encode_length_delimited(b"-1")
    outer += encode_varint(10 << 3 | 0) + encode_varint(int("18446744073709551615"))
    outer += encode_varint(12 << 3 | 0) + encode_varint(timestamp)
    outer += encode_varint(14 << 3 | 2) + encode_length_delimited(
        b"2C13D4EAD3491FB1AD93C2ABA0303CE3"
    )
    outer += encode_varint(99015 << 3 | 2) + encode_length_delimited(inner)
    return outer

# -------------------------
# 发送请求
# -------------------------
cpdef bytes send_requestyj(version: bytes):
    """构造protobuf并POST到服务器,返回响应bytes"""
    payload = build_protobuf(version)
    url = "https://game-ct-labs.ecchi.xxx:1893/"
    headers = {
        "Host": "game-ct-labs.ecchi.xxx:1893",
        "User-Agent": "UnityPlayer/2020.3.41f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)",
        "Accept": "*/*",
        "Accept-Encoding": "deflate, gzip",
        "Content-Type": "application/octet-stream",
        "X-Unity-Version": "2020.3.41f1"
    }
    resp = requests.post(url, headers=headers, data=payload, timeout=15)
    return resp.content


from libc.stdint cimport uint64_t, uint32_t, uint8_t

cdef tuple decode_varint(bytes data, Py_ssize_t offset):
    cdef uint64_t result = 0
    cdef int shift = 0
    cdef uint8_t b
    cdef Py_ssize_t idx = offset

    while True:
        b = data[idx]
        result |= (b & 0x7F) << shift
        idx += 1
        if b < 0x80:
            break
        shift += 7

    return result, idx

cpdef dict decode_protobuf(bytes data, Py_ssize_t offset=0):
    cdef dict result = {}
    cdef uint64_t key, field_number
    cdef uint32_t wire_type
    cdef uint64_t value
    cdef uint64_t length
    cdef bytes raw
    cdef Py_ssize_t idx = offset
    cdef list lst

    while idx < len(data):
        key, idx = decode_varint(data, idx)
        field_number = key >> 3
        wire_type = key & 0x07

        if wire_type == 0:  # varint
            value, idx = decode_varint(data, idx)
            lst = result.setdefault(field_number, [])
            lst.append(value)

        elif wire_type == 2:  # length-delimited
            length, idx = decode_varint(data, idx)
            raw = data[idx:idx + length]
            idx += length
            try:
                decoded = raw.decode("utf-8")
                lst = result.setdefault(field_number, [])
                lst.append(decoded)
            except UnicodeDecodeError:
                nested = decode_protobuf(raw, 0)
                lst = result.setdefault(field_number, [])
                if nested:
                    lst.append(nested)
                else:
                    lst.append(raw)
        else:
            raise ValueError(f"未知 wire_type: {wire_type}")

    return result

cpdef dict parse_responseyj(str hex_str):
    cdef bytes data = bytes.fromhex(hex_str)
    return decode_protobuf(data, 0)

cpdef object extract_fieldyj(dict parsed, int field_number):
    return parsed.get(field_number, None)


versioninfo = f"{user_version}-el-h-win".encode('utf-8')
        response_bytes = send_requestyj(versioninfo)
        parsed = parse_responseyj(response_bytes.hex())
        indexhash = extract_fieldyj(parsed[99016][0], 7)
        patchurl = extract_fieldyj(parsed[99016][0], 10)
        print("indexhash:", indexhash)
        print("patchurl:", patchurl)
        if patchurl:
            index_url = f"{patchurl[0]}/patch/files/index.txt.{indexhash[0]}"
            print(f'Try {index_url}')

差不多就这样不过还是少去宣传他的超前版本
在之前的一个超前版本抓到了ct066的原稿


后来就是这个版本的看板娘

而现在应该出了愚人节的测试

像是,musedash能干出来的事…

这鬼AI写的注解…
这些东西可能和设备码有关?
类似

SystemInfo.deviceUniqueIdentifier

当初只是做成能跑就行懒得深入研究
实际上他似乎并不会去校验时间戳所以如果不想去构造Protobuf请求直接利用这个例子

hex_data = (
    "08c785061a022d3150ffffffffffffffffff"
    "ffff0160a6f1c5c5903372203243313344"
    "3445414433343931464231414439334332"
    "41424130333033434533baac3017080212"
    "0d312e372e302d656c2d682d616e1a047a"
    "68636e"
)

eg:
f"08c785061a022d3150ffffffffffffffffffffff0160a6f1c5c5903372203243313344344541443334393146423141443933433241424130333033434533baac30170802120d{tohex('1.9.0')}2d656c2d682d616e1a047a68636e"


把他版本号的hex改了
自从这游戏改Protobuf请求后倒勾就开始说要鉴权。。。

我拿游戏构建的Protobuf在电脑上去发送过去一样不行

def send_requestyj(version: bytes) -> bytes:
    payload = b'\x08\xc7\x85\x06\x1a\x02-1P\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01`\xcb\x85\x89\x8a\xcd3r 2C13D4EAD3491FB1AD93C2ABA0303CE3\xba\xac0\x18\x08\x02\x12\x0e2.0.0-el-h-win\x1a\x04zhcn'

    print(payload)
    url = "https://game-ct-labs.ecchi.xxx:1893/"
    headers = {
        "Host": "game-ct-labs.ecchi.xxx:1893",
        "User-Agent": "UnityPlayer/2020.3.41f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)",
        "Accept": "*/*",
        "Accept-Encoding": "deflate, gzip",
        "Content-Type": "application/octet-stream",
        "X-Unity-Version": "2020.3.41f1"
    }
    resp = requests.post(url, headers=headers, data=payload, timeout=15)
    return resp.content

UA AE CT都要设置

不懂就问这是什么语言?像python但是又不能运行

cython
其实也是python只是最终需要转译为c然后编译成pyd运行
其实就是dll…可以理解为没有自动变量类型识别的python需要和c一样去申明

奇怪,又能用了,前几天我还试过你的程序也是获取不了

我都加了beta验证你难道赞助了?
旧版本没APK包获取版本号只能手动填写或者fuzz

一直用的旧版,前几天我发现获取不了就试了一下你的程序,后来我又抓一下app发送的请求,然后拿它的请求去获取也是获取不了,我就以为官方改了东西,真是奇了怪了,我的程序一点没改,又可以用了

ip不纯净吧
Amazon WAF开了禁IDC找个好点的服务商比如it7的梯子
NS的游戏都有WAF的如果梯子开不了gpt那就也过不了WAF
而且你可以直接PM我拿激活码的。。。我都说了赞助只是为了那些没对下载器提供技术支持的人提供便利提供过的直接PM我就行了下载器魔改了一堆库

好的,感谢感谢,有需要的时候我会联系你,今天刚重装了系统,电脑需要装的东西有点多,之前系统环境出了问题,Python库装了都识别不到,一些软件的跳转也出了问题,比如live2dviewerex都打不开,exe双击默认不是运行程序,反正一堆奇奇怪怪的问题