web server URL访问机制

http://{ip}:{port}/go?cmd={cmd}&code={code}&st={st}&md={md}

其中:

URL的合成算法

在上面已经讲述了URL中各参数的意义,下面讲述具体的合成算法:

http://{ip}:{port}/go?cmd={cmd}&code={code}

直接合成即可;

http://{ip}:{port}/go?cmd={cmd}&code={code}&st={st}&md={md}

下面以PHP合成URL的语句来讲述合成算法:

//给原始参数赋值
$ip = "192.168.8.126";
$port=80;
$cmd="run";
$code="cls(1);";
$pwd="abc";

$st=time();//获取当前时间戳
$mdstr=$cmd.$code.$st.$pwd;//将四个变量字符串累加起来
$code1=urlencode($code);//urlencode编码字符串
$url="http://{$ip}";
if ($port!=80) $url.=":".$port;
$url.="/go?cmd=$cmd&code=$code1&st=$st&md=".strtoupper(md5($mdstr));
//此时$url就是合成的url

首先,st变量获取当前时间戳;然后将$cmd+$code+$st+$pwd 这4个变量字符串累加起来(PHP中的字符串变量的累加是.;其中$st是数字变量在做字符串变量累加时会自动转成字符串);累加之后通过md5()函数变成一个32位16进制字符串,但是此时字符串中的字母是小写的,串口屏内部比对使用的是大写字母,因此需要过一遍函数strtoupper()将小写字符转成大写字母;另外由于是合成URL,因此code内部的字符串需要经过urlencode()函数进行url safe的转换再合成;

URL合成页面与合成样例

http://a-diy.cn/cmdcrc/wifimd.php

由于URL合成需要代码,为了方便调试和测试比对,我们在服务器端制作了一个辅助合成页面,是用浏览器访问上述地址:

也就是说:

参数
ip 192.168.8.126
port 80
cmd run
code cls(2);
pwd abc
st 1706244827

合成的URL:

http://192.168.8.126/go?cmd=run&code=cls%282%29%3B&st=1706244827&md=700EE997803F3F89708B9592CC9779EC

使用上面的URL可以让串口屏执行"cls(2);"这条语句,也就是清成绿色屏幕;