mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 23:00:44 +00:00
琚帶绔?- 淇 MTU 闂锛氬す MSS + 璺緞 MTU 鎺㈡祴锛堝叕缃戝彲鐢ㄧ巼 48% -> 100%锛?- 澶嶇敤 HTTP 杩炴帴锛堝厤鎺夋瘡娆℃柊寤?TLS 鐨?30% 鎻℃墜澶辫触锛?- 姣忓垎閽熷洖澶存壘灞€鍩熺綉锛岃嚜鍔ㄥ垏鍥炲揩 400 鍊嶇殑璺緞 - 鐢婚潰蹇冭烦甯э細闈欐鏃剁渷娴侀噺锛屽鎴风浠嶇煡閬撴祦鏄椿鐨?- 閿佸睆鏃剁粰鍑哄彲鎿嶄綔鐨勬彁绀? 鎵嬭〃绔?- 鍐呯疆 GTS Root R4 / GlobalSign Root CA锛屼慨 SSLHandshakeException - 杩炴帴閿欒缈昏瘧鎴愪汉璇濓紙璇佷功/鏃堕棿/瑙f瀽/瓒呮椂鍒嗗埆鎻愮ず锛?- 缁忎腑杞繛涓婂悗鐢ㄦ湇鍔″櫒鎶ョ殑鍦板潃鍒锋柊宸查厤瀵硅褰?- 鏂板灞€鍩熺綉杩炴帴椤甸潰銆佹湇鍔″櫒寤惰繜妫€娴? 鏈嶅姟鍣ㄧ - 鏀寔 chunked 璇锋眰浣擄紙淇瘡 16 绉掍竴娆$殑杩炴帴閿欎贡涓庡ぇ闈㈢Н 502锛?- 缃戠粶璋冧紭鑴氭湰 net-tune.sh锛堝紑鏈鸿嚜鍔ㄥ簲鐢級 - 绠$悊椤碉細鎵归噺鍒犻櫎銆佺綉缁滀綋妫€銆佷笅杞藉尯 - 闅ч亾鏀?HTTP/2 + 鍙岃繛鎺? 鏂囨。 - 璁稿彲鍗忚 / 瀹夎鍓嶅繀璇?/ 瀹夎鍚庨』鐭ワ紙浣滆€咃細灏忛害瀛愶級
194 lines
6.5 KiB
Python
194 lines
6.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""生成「工具箱.bat」—— 被控端目录的统一入口。
|
||
|
||
原来工具是散的:一键修复防火墙.bat / 网络自检.bat 各自双击,
|
||
用户不知道该点哪个。这里合成一个菜单,双击即用。
|
||
|
||
.bat 的两个硬性要求(真机踩过):
|
||
1. CRLF 换行 —— 裸 LF 会让 cmd 逐段误读,命令全变无效
|
||
2. GBK 编码 + chcp 936 —— 中文 Windows 的 cmd 默认代码页
|
||
生成后做字节级自检。
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
VERSION = "1.3.0"
|
||
|
||
LINES = [
|
||
"@echo off",
|
||
"chcp 936 >nul",
|
||
"title 局域网遥控 . 工具箱",
|
||
'cd /d "%~dp0"',
|
||
"",
|
||
":MENU",
|
||
"cls",
|
||
"echo ============================================================",
|
||
"echo 局域网遥控 . 工具箱 版本 " + VERSION,
|
||
"echo ============================================================",
|
||
"echo.",
|
||
"echo 1. 启动被控端 日常使用就点这个",
|
||
"echo 2. 一键修复防火墙 连不上时先试这个(需要管理员)",
|
||
"echo 3. 网络自检 还连不上就用它排查",
|
||
"echo 4. 查看使用说明",
|
||
"echo 5. 查看运行日志",
|
||
"echo 6. 打开接收文件夹",
|
||
"echo 7. 查看当前防火墙状态",
|
||
"echo.",
|
||
"echo 0. 退出",
|
||
"echo.",
|
||
'set "CHOICE="',
|
||
"set /p CHOICE= 请选择 [0-7]: ",
|
||
"",
|
||
'if "%CHOICE%"=="1" goto START_AGENT',
|
||
'if "%CHOICE%"=="2" goto FIX_FW',
|
||
'if "%CHOICE%"=="3" goto NETCHECK',
|
||
'if "%CHOICE%"=="4" goto SHOW_README',
|
||
'if "%CHOICE%"=="5" goto SHOW_LOG',
|
||
'if "%CHOICE%"=="6" goto OPEN_RECV',
|
||
'if "%CHOICE%"=="7" goto SHOW_FW',
|
||
'if "%CHOICE%"=="0" exit /b 0',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":START_AGENT",
|
||
'if not exist "ykxmz.exe" goto NO_EXE',
|
||
"echo.",
|
||
"echo 正在启动被控端 ...",
|
||
'start "" "ykxmz.exe"',
|
||
"ping -n 3 127.0.0.1 >nul",
|
||
"echo 已启动。关掉窗口程序仍在后台运行,",
|
||
"echo 再双击一次 exe 可以把窗口叫回来。",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":FIX_FW",
|
||
'if not exist "一键修复防火墙.bat" goto NO_FIX',
|
||
"echo.",
|
||
"echo 即将以管理员身份运行防火墙修复脚本。",
|
||
"echo 弹出的 UAC 窗口请点「是」。",
|
||
"echo.",
|
||
"pause",
|
||
'call "一键修复防火墙.bat"',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":NETCHECK",
|
||
'if not exist "网络自检.bat" goto NO_NET',
|
||
"echo.",
|
||
'call "网络自检.bat"',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":SHOW_README",
|
||
'if exist "使用说明.txt" start "" notepad "使用说明.txt"',
|
||
'if not exist "使用说明.txt" if exist "先看这个.txt" start "" notepad "先看这个.txt"',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":SHOW_LOG",
|
||
'if not exist "data\\运行日志.txt" goto NO_LOG',
|
||
'start "" notepad "data\\运行日志.txt"',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":OPEN_RECV",
|
||
'if not exist "received" mkdir "received"',
|
||
'start "" "received"',
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":SHOW_FW",
|
||
"echo.",
|
||
"echo ---- 端口放行规则 ----",
|
||
'netsh advfirewall firewall show rule name="LAN Remote TCP" | findstr /C:"规则名称" /C:"Rule Name" /C:"已启用" /C:"Enabled" /C:"操作" /C:"Action" /C:"本地端口" /C:"LocalPort"',
|
||
'netsh advfirewall firewall show rule name="LAN Remote UDP" | findstr /C:"规则名称" /C:"Rule Name" /C:"已启用" /C:"Enabled" /C:"操作" /C:"Action"',
|
||
"echo.",
|
||
"echo ---- 程序级放行规则(治本那条)----",
|
||
'netsh advfirewall firewall show rule name="LAN Remote App TCP" verbose | findstr /C:"规则名称" /C:"Rule Name" /C:"已启用" /C:"Enabled" /C:"程序" /C:"Program" /C:"操作" /C:"Action"',
|
||
"echo.",
|
||
"echo ---- 阻止规则(有的话会压过放行)----",
|
||
'netsh advfirewall firewall show rule name="lanremote-agent.exe" dir=in | findstr /C:"规则名称" /C:"Rule Name" /C:"操作" /C:"Action" /C:"程序" /C:"Program"',
|
||
"echo.",
|
||
"echo 如果上面「阻止规则」出现了内容,就点菜单 2 修复。",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
"",
|
||
"rem ------------------------------------------------------------",
|
||
":NO_EXE",
|
||
"echo.",
|
||
"echo [错误] 没找到 ykxmz.exe",
|
||
"echo 请确认本脚本和被控端 exe 在同一个文件夹里。",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
"",
|
||
":NO_FIX",
|
||
"echo.",
|
||
"echo [错误] 没找到 一键修复防火墙.bat",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
"",
|
||
":NO_NET",
|
||
"echo.",
|
||
"echo [错误] 没找到 网络自检.bat",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
"",
|
||
":NO_LOG",
|
||
"echo.",
|
||
"echo 还没有运行日志(程序没启动过)。",
|
||
"echo.",
|
||
"pause",
|
||
"goto MENU",
|
||
]
|
||
|
||
|
||
def build_text() -> str:
|
||
return "\n".join(LINES) + "\n"
|
||
|
||
|
||
def write(target: Path) -> int:
|
||
target.parent.mkdir(parents=True, exist_ok=True)
|
||
with open(target, "w", encoding="gbk", newline="\r\n") as handle:
|
||
handle.write(build_text())
|
||
|
||
data = target.read_bytes()
|
||
crlf = data.count(b"\r\n")
|
||
lone = data.count(b"\n") - crlf
|
||
has_bom = data[:3] == b"\xef\xbb\xbf"
|
||
text = data.decode("gbk")
|
||
|
||
print(f" 路径: {target}")
|
||
print(f" 大小: {len(data)} 字节 CRLF={crlf} 裸LF={lone} BOM={has_bom}")
|
||
|
||
problems = []
|
||
if lone:
|
||
problems.append(f"存在 {lone} 处裸 LF(cmd 会解析错乱)")
|
||
if has_bom:
|
||
problems.append("存在 UTF-8 BOM")
|
||
for probe in ("局域网遥控", "启动被控端", "一键修复防火墙", "网络自检"):
|
||
if probe not in text:
|
||
problems.append(f"缺少内容「{probe}」")
|
||
if problems:
|
||
for item in problems:
|
||
print(f" [失败] {item}")
|
||
return 1
|
||
print(" 自检: 通过")
|
||
return 0
|
||
|
||
|
||
def main() -> int:
|
||
root = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote")
|
||
return write(root / "tools" / "工具箱.bat")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|