692
用户 ID 692 · 当前名首次快照 2026-08-12 10:15:21 · 当前名始于 2026-08-12 10:15:21 · 原站主页: https://linux.sb/user/692
共 29 楼
692
2年前的东西也搬
@嘿嘿喵喵 #3 只有win的。mac接口也不一样。没法通用。
@steve02081504 #2 这咋可能,没感光元件
@杀 #4 你用过外接显示器吗
路过的大哥大姐支持一下
昨天分享了一下酷安的签名纯算。今天分享一下用了很久的win系统亮度调节软件。
大家之前都应该用过Tray,但是一个亮度调节用electron写,有时候会吃上百mb内存,实在太恶心了,而且还会卡来卡去的。
干脆一气之下,自己写了一个,最基本的功能都有,调亮度,快捷键调亮度,用起来是够了。
不想在隔壁开源是因为发个github还要你加上承诺,那我宁愿不发。
————————————————————
Lumaris:轻量,丝滑,有特效
https://github.com/Elnyxn/Lumaris
感兴趣的可以试试看
————————————————————
希望大家多多支持!
@SBBot 锐评一下这个帖子
php的牛逼之处😃
人多了,顶个帖子。好东西不能埋没啊
下一个linuxsb.sb 站倒计时
真想让do站看看论坛也不是只有他一家的话,建议先思考思考怎么管理。你neo论坛起步的时候也没封过这么多人,反动之类的肯定要ban,我们也不搞事。现在这个苗头感觉发展下去,就真变小丑了。
@Adai #50 又加新功能了,还多了个ip地区显示
@StellaFortuna林可欣 #19 这种东西小范围享受就可以了
猫娘版本的看过了,有没有魅魔和雌小鬼版的可以看
恭喜,夏阁艾迪剑
让ai找点开源的屏蔽词库加到用户名里,然后已经注册的用户,让ai去数据库扫出来,官方账号之类的如果不允许昵称自动改成随机的,然后加入屏蔽词里。这样比人工禁言速度快多了。
公告提前说好哪些不允许。我咋还看见吕布也被封了。笑死了
@test1145 #3 6666,秽土转生
楼主喜欢
夏阁艾迪剑
在错误的地方
慢慢来吧,问题不大
@fucker #1 小南娘001
@夏天 #1 那必须不错
本站第一个逆向贴。
网易易盾的壳也是轻松dump。
啥时候支持md代码块啊
#!/usr/bin/env python3
"""Coolapk 16.x X-App-Token generator.
The algorithm was verified against libauth.so (version 16.5.1).
"""
import base64
import hashlib
import time
try:
import crypt
except ImportError as exc: # Python 3.13+ needs a libcrypt-compatible package.
raise RuntimeError("Python crypt module is required for bcrypt ($2y$)") from exc
PACKAGE_NAME = "com.coolapk.market"
VERSION_CODE = 2607271
_AUTH_BLOB_B64 = (
"Dg4YDxUcCykLah82Fg8XMQ0eHzALCR8pDyMfNxYeFBsPI2seChwDLxMjajMXDxdvEyAYDxAcOS4XIzEyFw8LaxAJax4VCQ8iFyAy"
"CxYMFy0MamopEyMyCRcOCykNDhweCBwfLQtqCAwXCQsxDwlqMBEJFy4QHjIDFgwLMQ8wHyARCQspF2oYDBYOCy0PM2pqFAkXKRdo"
"GAIWDBc2EBlrHhQcNhQWGQtqDQ4fIBYJCyILah8yFh8XNhMwHyARHDktFyBqNhYzFB8MIB8wCgkDLxQeMTEWHBctDDMiDhEcMS4L"
"IDICFhwXKQ0ZbjAWCQMuD2gYDg4OG2oWHB8vFyAyDhYwFzITMBweFxwXKRNqGAwWGQsxDxktIBAJEykTIBgJFx8XYg8ZIh8WCRMu"
"E2gYCxYPCzUPI2owFhwXKRMjDzEXHAstDDFqLggZIgMXDhc2EBluahQJHy0PaggLFhwXMhMzajEUCRctD2gYCxYwFD0PIy0wFRwfKRQZ"
"Ig4WHxctDRkiDxYJHy4TIwgOFh4UGBMjamoQHAAUFw8XKQ8eGB8QHD0uFBlqMRYeCzENGWseFxwXIggZMTAWDBdqDDMiDhcc"
"PSITI2o3FgwXIhAJaiAQHAsiF2gYCxYJC24NDhgeFxwXLxNqDzIOCS0gChw9LggeGAgXHhQfDwlqMBUcAy8QHjE2FwkLag8gGyAU"
"CRctCB4xMRcOFzEMCSIPFxwLLggZIgMXDhQcEyMiHxYcAykTIA8yFjMLagxqaiIUGSIMFhkXagwjbiAQHA8iFBkiDhYcC24MI24w"
"AxwDIhAeDzAWDxctDyAcHgocEykXah82Fh4XKQweG2oVCRcvFBkxNxYfCzEMMyIfFwkQFBYOFzUPMy0gFhw5Lg9qCAsWMwstDA4c"
"HhAJDy0PIzEwFw8XMhMjaiATCQ8pE2ofMBcOFy0PCWsPFBw5IggeHzYWDwsuEAluMRQcEykTIDIADg4YDgMcHy0LIwgDFgkXNhMJ"
"bmoWHD0pDB4IABYPCzUNDhgeCxwDLggZIg0WMBQfDB4YHhccMS4UHg82FhwLbgwJaw8QHD0tFyAIDRYeC24PD2otCyNqNxYPC24N"
"CWsOFwkXKQ8jDzMXDxQbDwkiDxYcAy8TaggPFjMXKQ0eHB8WHBciE2gYCxYMF2oNCW4xFRw5LRdqCAIWDBc1DRlqMBEcHyIWGRdq"
"DDMiDhQcGy4IHggNFg8LNhAZaw4QHBstFBkiPQMb"
)
def _md5(data: bytes) -> str:
return hashlib.md5(data).hexdigest()
def build_device_id(metadata: str, manufacturer: str, brand: str, model: str,
display: str, oaid: str) -> str:
"""Reproduce C9682.m64375()'s X-App-Device value."""
raw = f"{metadata}; ; ; ; {manufacturer}; {brand}; {model}; {display}; {oaid}"
encoded = base64.b64encode(raw.encode("utf-8")).decode("ascii")
return encoded[::-1].replace("=", "").replace("\r", "").replace("\n", "")
def _auth_stream() -> bytes:
encrypted = base64.b64decode(_AUTH_BLOB_B64)
return bytes(value ^ 0x5A for value in encrypted)
def get_token(device_id: str, timestamp: int | None = None,
version_code: int = VERSION_CODE,
package_name: str = PACKAGE_NAME) -> str:
"""Generate X-App-Token for the supplied X-App-Device value."""
if timestamp is None:
timestamp = int(time.time())
# libauth selects a 128-character base64 window using current time and version.
stream = _auth_stream()
index = (timestamp + version_code) % 100
start = 0x80 + index * 4
fragment = base64.b64decode(stream[start:start + 0x80])
payload = b"&".join((
package_name.encode("utf-8"),
fragment,
_md5(device_id.encode("utf-8")).encode("ascii"),
str(timestamp).encode("ascii"),
str(version_code).encode("ascii"),
))
encoded_payload = base64.b64encode(payload)
password = _md5(encoded_payload).encode("ascii")
payload_digest = _md5(payload).encode("ascii")
# Native code passes the complete base64 string to bcrypt; crypt uses its
# first 22 characters as the Blowfish salt.
salt = base64.b64encode(f"{timestamp:x}/".encode("ascii") + payload_digest).decode("ascii")
setting = "$2y$04$" + salt[:22]
bcrypt_result = crypt.crypt(password.decode("ascii"), setting)
if not bcrypt_result or bcrypt_result.startswith("*"):
raise RuntimeError("system crypt does not support bcrypt $2y$")
return "v3" + base64.b64encode(bcrypt_result.encode("ascii")).decode("ascii")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("device_id")
parser.add_argument("--timestamp", type=int)
args = parser.parse_args()
print(get_token(args.device_id, args.timestamp))
单字极品id