批处理

批处理脚本_一键内网穿透脚本

grise · 6月21日 · 2019年

前言

因为我本人是十分喜欢批处理脚本的,因为有些简单的东西用程序写就相当的麻烦,而且现在大数字或者某某管家一旦无法识别的程序一律当成病毒、木马,所以还是写成批处理脚本比较方便。

思路

因为目前来说很多朋友一般电脑出问题都会找我,正所谓电脑修的好,备胎当到老,但是语音+视频远程指点,操作起来真的是拙计,加上以前不堪回首的往事,教一个小姐姐装系统特么能教5小时,然后还没装好,老想着上门服务,差评。而且目前大部分家用宽带都不提供公网ip,而且就算有公网ip,教一个毫无基础的人去设置DDNS映射还是比较麻烦的,所以我还是倾向于内网穿透+远程控制,而且目前主流的远程控制有mstsc远程桌面、Teamview、Anydesk; 目前比较热门的内网穿透有Frp、N2N等等。

主流远程控制

由于mstsc属于windows自带的,登录需要放开3389端口和设置相应的账号密码,经过尝试之后发现会留下很大一部分痕迹,譬如需要设置当前账号密码,如果是新建账号的话则桌面会被新建。

Teamview是比较主流的,但是免费版经常被涉嫌商业应用,而且只从代理被流氓代理了之后,(Ps:自行百度怎么回事)网上大部分最新的Crack版基本被替换成国内修改版,价格比国外版还要高昂不说,服务还差,而且不支持公网直连。

Anydesk就是我目前使用的,具有单文件版,支持id和公网直连,不过缺点就是自动记录的只有id地址,无法自动记录公网地址,如果想速度更快点,每次都得手动敲地址。

主要代码

程序很简单,我采用的是Anydesk+Frp,Frp是使用家用宽带+动态DDNS搭建的,可靠性在国内比较不错,Frp的具体设置就不说了,或者可以用蹭别人的免费Frp节点都是比较不错的,Frp拿到手的重要参数就三个,一个是域名或者说ip地址,一个是握手的端口号,一个是Token就是密匙,有了这三个就可以完成远程端与服务器,服务器与被控端的握手,简单来说服务器就是作为一个跳板的存在。

程序文件只有三个,一个是批处理,一个是Frp文件,一个是Anydesk,我这里只提供批处理代码,批处理自动生成的2个文件,ini是配置文件,log是日志文件。

@echo off
goto begin

:begin

REM 启用延迟环境变量扩展 
setlocal enabledelayedexpansion 
REM 设置服务器数量
set server_Length=2

REM 设置服务器节点地址端口和Token、端口最小值和最大值
set server[0].addr=*********
set server[0].port=20000
set server[0].Min=22000
set server[0].Max=30000
set server[0].toke=*********
  
set server[1].addr=*********
set server[1].port=20000
set server[1].Min=22000
set server[1].Max=30000
set server[1].toke=*********


goto server

:server
set /a md=!server_Length!-1-0+1 

for /l %%i in (1,1,1) do ( 
REM 产生[min,max]之间的随机数 
set /a j=!random!%%!md!+0

del frpc.ini >nul 2>nul
del frpc.log >nul 2>nul
echo [common]>frpc.ini
call echo server_addr = %%server[!j!].addr%%>>frpc.ini
call echo server_port = %%server[!j!].port%%>>frpc.ini
echo log_file = ./frpc.log>>frpc.ini
echo log_level = info>>frpc.ini
echo log_max_days = 3 >>frpc.ini
call echo token = %%server[!j!].toke%%>>frpc.ini

REM 设置随机数的最小和最大值以及求模用的变量
call set min=%%server[!j!].min%%
call set max=%%server[!j!].max%%


) 
goto write


:write

Setlocal Enabledelayedexpansion
set Str=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
set /a 长度=8
for /l %%i in (1,1,8888) do (if "!Str:~0,%%i!"=="!Str!" set StrSum=%%i&goto :result)

:result
set /a Num+=1,StrNum=%Random%%%%StrSum%
set result=%result%!str:~%StrNum%,1!
if %Num% lss %长度% goto :result

echo [!result!]>>frpc.ini
echo type = tcp>>frpc.ini
echo local_ip = 127.0.0.1>>frpc.ini
echo local_port = 7070>>frpc.ini
echo use_encryption = false>>frpc.ini
echo use_compression = false>>frpc.ini

set /a mod=!max!-!min!+1 

for /l %%i in (1,1,1) do ( 
REM 产生[min,max]之间的随机数 
set /a r=!random!%%!mod!+!min! 
echo remote_port = !r!>>frpc.ini 
) 
goto running

:running
echo frp端口号:!r!
echo.
echo 请在AnyDesk输入地址:
call echo %%server[!j!].addr%%:!r!
echo.
echo 请将地址截图发给需要远控该电脑的用户。
echo.
echo 正在启动AnyDesk。
echo 然后请收到控制请求点击确定。
start AnyDesk.exe
goto frpc

:frpc
echo.
echo frp客户端启动完成
echo.
frpc.exe -c frpc.ini
echo.
echo 服务进程不见了,即将重启,请稍后。
echo.
ping -n 2 127.1 >nul
cls
goto frpc

结语

大概说一下批处理的大概流程,首先begin初始化数组,这里存放了几组Frp节点数据,可以通过添加数组来设置动态均衡,如果想某个服务器的概率更高一点,就复制几组一样的,如果是1:1的话大概是概率也是50%左右,然后server随机选择服务器并写入到配置文件,接着写入随机8位英文+数字的app名称+默认映射127.0.0.1的7070端口就是本机,TCP模式到配置文件,接着写入默认端口号,端口号会随机在最大值到最小值之间随机,可在最开始的服务器数组数据设置,最后运行Frp和Anydesk,并开启守护程序保证Frp的持续运行,然后将批处理+2个程序发给对方就可以愉悦远程控制了。

0 条回应