迷失 - 技术分享
type: channel
link: https://blog.tx.sb/category/Technical-sharing/
items: 联通光猫烽火HG6142A查看超管密码
items: 检测到 localhost 代理配置，但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理解决方法
items: web js逆向
items: JS逆向常见问题解决方式
items: 一条命令暂停更新Win11一万天
items: CloudFlare 官方免费 CNAME 接入
items: CentOS 7上安装和使用 FFmpeg
items: 白嫖谷歌通配符SSL证书
items: 使用 HiCA 白嫖半年通配符域名 SSL 证书
items: ThinkPHP6.0备忘录

联通光猫烽火HG6142A查看超管密码
type: item
date: 2025-06-23T05:59:56+00:00
description: 光猫超管密码查看教程 一、操作前准备 ​确认设备连接​：确保电脑或移动设备已通过网线或 Wi-Fi 成功连接至目标光猫。 ​获取基础账户​：找到光猫设备背面的标签，获取 user 账户信息（通常标注为 “普通用户”），用于后续登录光猫后台。 ​准备工具​：提前打开常用的浏览器（如 Chrome、Edge、Safari 等），同时准备好能运行 Telnet 命令的终端（Windows 系统可使用命令提示符，Mac 或 Linux 系统可使用终端应用） 。 二、详细操作步骤 步骤 1：登录光猫普通用户后台 打开浏览器，在地址栏输入光猫默认管理地址 192.168.1.1 ，回车后进入登录界面。输入光猫背面标签上标注的 user 账户和密码，点击 “登录” 进入后台。 步骤 2：获取光猫 MAC 值 在光猫后台界面中，找到 “状态” 选项卡（不同光猫界面可能不同，部分可能命名为 “设备信息”“网络状态” 等） 。在 “上报云平台网关信息” 区域，找到 MAC 地址字段，记录完整的 MAC 值（例如：956E784E8880），注意​MAC 值区分大小写​。 步骤 3：开启 Telnet 功能 根据光猫型号，在浏览器地址栏输入对应开启 Telnet 的链接： ​**通用型号（非 HG6145D、HG6142a1）**​： http://192.168.1.1/telnet?enable=1&key=956E784E8880 将956E784E8880替换为步骤 2 中获取的实际 MAC 值。 ​HG6145D 和 HG6142a1 型号​： http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1&key=956E784E8880 同样将956E784E8880替换为实际 MAC 值。 输入链接并回车后，若页面显示Open telnet success!，则表示 Telnet 功能开启成功。 步骤 4：通过 Telnet 连接光猫 打开命令提示符（Windows）或终端（Mac/Linux） 。 在终端窗口输入命令：telnet 192.168.1.1，回车后尝试连接光猫。 连接成功后，系统会提示输入用户名和密码： ​用户名​：尝试admin或root 。 ​密码​：格式为Fh@4E8880，将4E8880替换为步骤 2 中 MAC 值的后六位 。 步骤 5：进入工厂模式并查看超管信息 登录成功后，在命令行输入load_cli factory，回车进入工厂模式。 输入show admin_pwd，回车即可显示管理员密码。 输入show admin_name，回车显示管理员账户名称。 步骤 6：使用超管账户登录 在浏览器地址栏输入http://192.168.1.1/cu.html，进入登录界面。使用步骤 5 中获取的管理员账户和密码，即可登录光猫超管后台。

检测到 localhost 代理配置，但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理解决方法
type: item
date: 2025-05-12T16:52:46+00:00
description: WSL 中使用 V2 代理的配置方法 在使用 Windows 上的 V2 代理软件时，可能会遇到 WSL 无法通过 localhost 访问代理的问题，提示如下错误： wsl: 检测到 localhost 代理配置，但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。 这是因为 WSL 默认运行在 NAT 模式 下，与 Windows 处于不同的网络命名空间中，导致 WSL 无法访问 Windows 的 localhost 代理服务。 🧩 问题原因分析 原因 说明 NAT 模式 WSL 默认使用 NAT 网络模式，与 Windows 网络隔离 无法访问 localhost WSL 无法直接访问 Windows 的 localhost 代理（如 V2Ray 监听在 127.0.0.1:1080） 代理类型 V2Ray、Shadowsocks 等通常监听在 127.0.0.1，而非 0.0.0.0 ✅ 解决方案：修改 WSL 网络模式为 Mirrored 🔧 步骤一：创建或编辑 .wslconfig 文件 .wslconfig 应该放在 Windows 的用户目录下： C:\Users\<YourUsername>\.wslconfig 替换 <YourUsername> 为你的实际用户名。 如果文件不存在，请新建一个，并写入以下内容： [experimental] autoMemoryReclaim=gradual networkingMode=mirrored networkingMode=mirrored：启用“镜像”模式，允许 WSL 共享 Windows 的网络设置（包括代理） autoMemoryReclaim=gradual：优化内存回收（可选） 🔄 步骤二：重启 WSL 在 Windows 命令行中执行： wsl --shutdown 然后重新启动 WSL： wsl 🌐 步骤三：在 WSL 中设置代理 现在 WSL 已经可以访问 Windows 的 localhost 代理了。你可以手动设置环境变量来使用代理。 export http_proxy="http://127.0.0.1:10808" export https_proxy="http://127.0.0.1:10809" 如果你使用的是 V2Ray，默认端口通常是 10808 或 10809，请根据你的代理软件配置调整。 ⚠️ 注意事项 确保代理监听在 0.0.0.0 而非 127.0.0.1 如果你的代理软件只监听 127.0.0.1，那么即使 WSL 设置了 localhost 代理也无法访问。你需要将代理配置为监听 0.0.0.0，以便 WSL 可以访问。 例如，在 V2Ray 配置文件中，将监听地址改为： "listen": "0.0.0.0", "port": 1080 临时设置代理 如果不想每次登录都手动设置，可以将代理配置写入 shell 配置文件（如 ~/.bashrc 或 ~/.zshrc）。 📚 总结 问题 解决方式 WSL 无法访问 Windows 的 localhost 代理 修改 .wslconfig，设置 networkingMode=mirrored 代理监听在 127.0.0.1 修改代理监听地址为 0.0.0.0 设置 WSL 代理 手动设置 http_proxy 和 https_proxy 环境变量

web js逆向
type: item
date: 2025-03-09T09:49:00+00:00
description: JS逆向常见问题解决方式** 一、AES加密 JS实现 const CryptoJS = require('crypto-js'); //引用AES源码js const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥 const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量 //解密方法 function Decrypt(word) { let encryptedHexStr = CryptoJS.enc.Hex.parse(word); let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } //加密方法 function Encrypt(word) { let srcs = CryptoJS.enc.Utf8.parse(word); let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.ciphertext.toString().toUpperCase(); } export default { Decrypt , Encrypt } Python实现 import base64 import binascii from Crypto.Cipher import AES from Crypto.Util.Padding import pad class AESUtil(object): config = { 'ECB': 1, 'CBC': 2, 'CFB': 3, 'OFB': 5, 'CTR': 6, 'OPENPGP': 7, 'CCM': 8, 'EAX': 9, 'SIV': 10, 'GCM': 11, 'OCB': 12 } @classmethod def encrypt(cls, text, key, iv=None, encoding='b64', mode='ECB', padding='pkcs7'): key = key.encode() # 秘钥，b就是表示为bytes类型 if mode != 'ECB': iv = iv.encode() aes = AES.new(key, mode=cls.config[mode], iv=iv) # 创建一个aes对象 else: aes = AES.new(key, mode=cls.config[mode]) # 创建一个aes对象 text = text.encode() if padding: text = pad(text, AES.block_size, style='pkcs7') # 选择pkcs7补全 encrypt_aes = aes.encrypt(text) if encoding == 'b64': encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8') # 解码 elif encoding == 'hex': encrypted_text = str(binascii.b2a_hex(encrypt_aes), encoding='utf-8') else: raise ValueError('错误的编码') encrypted_text_str = encrypted_text.replace("\n", "") return encrypted_text_str if __name__ == '__main__': t = '{"YSZH":"2023","XMMC":"","verifyCode":"bg34"}' key = 'dbd99c5139145091' # iv = '0000000000000000' m = 'ECB' encoding = 'hex' res = AESUtil…

JS逆向常见问题解决方式
type: item
date: 2025-02-13T06:24:00+00:00
description: web js逆向 web页面大家都不陌生，在web开发过程中后端负责程序架构和数据管理，前端负责页面展示和用户交互，有种不严谨的说法是：前端代码给浏览器看，后端代码给服务器看。 有开发经验的同学对前后端交互的理解会更深一点，在这种前后端分离的开发方式中，以接口为标准来进行联调整合。为了保证接口在调用时数据的安全性，也是为了防止请求的参数被篡改，大多数接口都进行了请求签名、身份认证、动态Cookie等机制。另外部分网站会对返回的数据进行加密，通常利用AES、RSA等加密方式，也有在传输时对数据进行序列化，比如Protobuf等，这些会在后面进行详细讲解。 请求签名十分常见，比如URL中的加密参数sign，身份认证也有很多例子，比如动态Cookie。这些参数的生成方法都是Js来控制的，如果想要直接从接口上获取数据，就要去调试分析JavaScript的调用逻辑、堆栈调用关系来弄清楚网站加密的实现方法，根据网站的参数生成规则还原加密参数，可以称这个过程为Js逆向。 我们总结了一下目前加密参数的常用逆向方式，一种是根据源码的生成逻辑还原加密代码，另一种是补环境Copy源码模拟加密参数生成，还有一种是通过RPC的方式远程调用。 在一些逆向案例中，其中的关键就是将浏览器环境移植到Node环境中，Node Js采用的内核也为V8引擎，该引擎调用对方Js的可行性并不是100%，同时由于Node没有界面渲染，因此在浏览器中可使用的例如window、navigator、dom等操作在node中是不存在的，所以对于Node Js的环境搭建和浏览器环境补齐也是Js逆向需要掌握的。 还有就是Chrome作为Js逆向的核心工具，熟练掌握Chrome的控制台、插件编写就足够应对绝大多数的抓包、调试、Hook等，这些内容都会在后续进行讲解。 第一章 逆向基础 1.1 语法基础 Js调试相对方便，通常只需要chrome或者一些抓包工具、扩展插件，就能顺利的完成逆向分析。但是Js的弱类型和语法多样，各种闭包，逗号表达式等语法让代码可读性变得不如其他语言顺畅。所以需要学习一下基础语法。 基本数据类型 字符串 String 数字 Number 布尔 Boolean 空值 Null 未定义 Undefined 独一无二的值 Symbol 引用数据类型 对象 Object 数组 Array 函数 Function 语句标识符 在条件为true时重复执行 do……while 在条件为true时执行 while 循环遍历 for 条件判断 if……else 根据情况执行代码块 switch 退出循环 break 异常捕获 try……catch……finally 抛出异常 Throw 声明固定值的变量 const 声明类 class 停止函数并返回 return 声明块作用域的变量 let 声明变量 var 断点调试 debugger 当前所属对象 this 算数运算符 加 + 减 - 乘 * 除 / 取余 % 累加 ++ 递减 – 比较运算符 等于 == 相等值或者相等类型 === 不等于 != 不相等值或者不相等类型 !== 大于 > 小于 < 大于等于 >= 小于等于 <= 在JavaScript中将数字存储为64位浮点数，但所有按位运算都以32位二进制数执行。在执行位运算之前，JavaScript将数字转换位32位有符号整数。执行按位操作后，结果将转换回64位JavaScript数。 Javascript 函数 JavaScript 中的函数是头等公民，不仅可以像变量一样使用它，同时它还具有十分强大的抽象能力 定义函数的 2 种方式 在JavaScript 中，定义函数的方式如下： function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述 abs() 函数的定义如下： function 指出这是一个函数定义； abs 是函数的名称； (x) 括号内列出函数的参数，多个参数以，分隔； {……} 之间的代码是函数体，可以包含若干语句，甚至可以没有任何语句。 请注意，函数体内部的语句在执行时，一旦执行到 return 时，函数就执行完毕，并将结果返回。因此，函数内部通过条件判断和循环可以实现非常复杂的逻辑。 如果没有 return 语句，函数执行完毕后也会返回结果，只是结果为 undefined。 由于JavaScript的函数也是一个对象，上述定义的 abs()函数实际上是一个函数对象，而函数名 abs可以视为指向该函数的变量。 因此，第二种定义函数的方式如下： var abs = function (x) { if (x >= 0) { return x; } else { return -x…

一条命令暂停更新Win11一万天
type: item
date: 2024-07-15T08:53:43+00:00
description: 此方法适用于 Win11 和 Win10，无需下载软件，不会影响微软商店使用。 按 Win + X 键选择 Windows PowerShell (管理员) 注：Win键就是键盘左下角CTRL键右边那个键 按右键粘贴这行代码后回车即可： reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 10000 /f

CloudFlare 官方免费 CNAME 接入
type: item
date: 2023-11-27T09:12:00+00:00
description: CloudFlare 是很多站长在建站时首选的 CDN 服务商，免费、无限带宽，抗DDOS，都是选择它的理由，但由于某些方面原因，使得国内的访问速度堪忧。由于 CloudFlare 的 NS 服务器在国外，所以还需要尽可能的降低延迟，来提升网站体验，所以就有了CNAME 接入这种方式，使用国内的 NS服务器，可以一定程度缓解加载时间过长的问题。 之前可以使用 CloudFlare 提供的合伙人密钥，使用第三方网站进行添加 CNAME 接入，但由于目前 CloudFlare 的防滥用政策日渐缩紧，所以禁止了通过合伙人密钥来进行添加 CNAME 接入。各家第三方的接入平台如 笨牛网 等已经禁止了用户登录。 但目前 CloudFlare 提供了一种官方 CNAME 接入的方式。 CloudFlare for SaaS 之前使用这个功能是收费的，但自 2022/3/15 起，官方开启了免费额度。每个账户拥有目前 100 个CNAME接入的免费额度，而超过 100 的部分也由每月 2美金 每个的价格降低至了每月 0.1美金 每个。 我们所依赖这个功能所提供的免费额度，来实现免费 CNAME接入。 配置 CNAME 接入 在配置之前，您需要准备一个中转域名以及PayPal账号或者外币卡： demoo.cc : 此域名需要通过 NS 的方式接入CloudFlare test.tx.sb : 此域名即为你需要加速的域名。 如何通过 NS 接入，不再详细演示。 开通CloudFlare for SaaS 打开网站配置页面，并且找到 SSL/TLS 下的自定义主机名。 订阅 CloudFlare for SaaS 需要绑定外币信用卡或 PayPal，个人建议绑定PayPal（此过程不会发生扣费） 由于之前已经开通过了，所以无法演示，根据页面提示进行操作即可。 设置回源域名 在配置 CNAME 接入之前，需要设置回源所需的域名。 在DNS选项中，设置一个自定义的接入CloudFlare的二级域名（即使用上文中提到的 demoo.cc 设置一个二级域名解析到你的网站IP），解析至需要回源的 IP 或域名，并且打开 CloudFlare 的代理。 然后打开 SSL/TLS 下的自定义主机域，在回退源中，填写设置好的域名，并且点添加回退源，等待生效。 此时即可增加需要 CNAME 接入的域名 点击添加自定义主机名，输入你需要接入的域名，并且选择最低TLS版本（如不懂，请保持默认）以及证书验证方式即可。点击添加自定义主机名。 设置国内 NS 服务商 DNS 解析 提交后，即可看到正在初始化，在第三方的 NS服务商处设置好相应的NS解析，等待检测即可。 并且同时，需要将 需要接入的域名 解析到 回源域名 上 解析生效

CentOS 7上安装和使用 FFmpeg
type: item
date: 2023-11-13T12:06:00+00:00
description: 我们将使用 yum 从 RPM Fusion 存储库安装： 1.RPM Fusion 存储库依赖于EPEL 软件存储库，如果您的系统上未启用 EPEL，请使用以下命令： sudo yum install epel-release 2.接下来，通过安装 rpm 包启用 RPM Fusion 存储库 ： sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm 3.启用存储库后，安装 FFmpeg： sudo yum install ffmpeg ffmpeg-devel 4.通过检查其版本来验证 FFmpeg 安装： ffmpeg -version

白嫖谷歌通配符SSL证书
type: item
date: 2023-07-18T13:10:00+00:00
description: 申请准备 需要准备一个 [Google Cloud Platform](云计算服务 | Google Cloud) 的账号 Google Cloud Project ID，可以通过 [https://console.cloud.google.com/apis/dashboard](API 和服务 – API 和服务 – My First Project – Google Cloud Console) 得到 [scode type="lblue"]启用API[/scode] https://console.cloud.google.com/apis/library/publicca.googleapis.com?project=上方ID [scode type="lblue"]第一次点击启用[/scode] [scode type="lblue"]完成后点击激活[/scode] [scode type="yellow"]输入下方命令[/scode] gcloud beta publicca external-account-keys create [scode type="lblue"] 弹出授权点击允许 [/scode] Created an external account key [b64MacKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx keyId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] EAB 密钥使用一次后自动失效；如果没有使用，7 天后也会自动失效。使用 EAB 密钥注册的 ACME 帐户没有过期时间（对证书续期没有影响）。 开始申请 然后运行 acme.sh 注册 ACME 账户 acme.sh --register-account --server google -m "你的邮箱" --eab-kid "你的EAB key（keyId）" --eab-hmac-key "你的HMAC（b64MacKey）" [scode type="red"]然后就直接用 acme.sh 签发证书，选择 Server 为 Googlev[/scode] acme.sh --set-default-ca --server google #切换默认 CA 为 Google [scode type="green"]申请完事 这里用的dnspod api[/scode] acme.sh --issue --dns dns_dp -d tx.sb -d *.tx.sb

使用 HiCA 白嫖半年通配符域名 SSL 证书
type: item
date: 2023-05-27T07:47:00+00:00
description: [scode type="red"]HiCA 默认只提供 acme 协议签发证书，并且禁止任何 GUI 的形式对外公开服务，我们使用最简单的 acme.sh 脚本进行自动签发证书和更新证书。 使用以下命令行安装 acme.sh 自动化脚本，并且替换im@tx.sb[/scode] curl https://get.acme.sh | sh -s email=im@tx.sb [scode type="red"]需要先确认你的 DNS 服务商，这里以 DNSPod 为例，首先获取你的 API Key 和 ID，登录 DNSPod 控制台 选择 DNSPod Token 申请即可，然后将你的 DNSPod API Key 和 ID 用下方命令设置成临时变量：[/scode] export DP_Id="1234567" export DP_Key="6574321" [scode type="green"]开始白嫖。将tx.sb改成要申请的域名[/scode] acme.sh --issue --dns dns_dp -d tx.sb -d *.tx.sb --days 180 --server https://acme.hi.cn/directory --force -k 2048 [scode type="lblue"]证书文件保存至/.acme.sh/申请域名[/scode] [scode type="share"]如果你是其他的 DNS 服务商，参考：How to use DNS API。[/scode]

ThinkPHP6.0备忘录
type: item
date: 2023-05-26T04:05:00+00:00
description: [scode type="yellow"]tp6创建多应用 执行指令安装多应用模式功能: 需要删除app目录下controller目录 [/scode] composer require topthink/think-multi-app [scode type="lblue"]创建应用模块 如：admin[/scode] php think build admin [scode type="lblue"]创建控制器 如：Ad[/scode] php think make:controller Ad [scode type="lblue"]创建模型如：user[/scode] php think make:model User [scode type="lblue"]创建中间件 如:Check[/scode] php think make:middleware Check [scode type="lblue"]单应用模式下生成验证器命令如：save[/scode] php think make:middleware Save [scode type="lblue"] 多应用模式下生成验证器命令：[/scode] php think make:validate admin@stu [scode type="lblue"]安装扩展包[/scode] composer require topthink/think-captcha [scode type="lblue"]生成资源控制器命令单应用[/scode] php think make:controller Test