本文目录一览:
- 1、HTTP系列二: 使用telnet模拟http请求
- 2、PHP连接telnet并执行命令
- 3、求教如何telnet 模拟器
- 4、php中调用cmd并执行telnet命令的方法,vbs也可以,但是希望能全面一点,我不懂那个。或者其他方法也行。
HTTP系列二: 使用telnet模拟http请求
上一篇讲解了http协议的大致原理与基本格式,这一篇使用mac系统自带telnet工具来模拟http请求,分为GET请求和POST请求
为了测试使用,我在本地服务器上上传了一个php脚本,
这个脚本的功能是在浏览器输入用户名和密码,正确的用户名为zhangsan,密码为1234,如果用户名和密码正确,那么就返回username=zhangsan,如果用户名和密码不正确,那么就返回空字符。同时支持get请求和post请求,会把请求方法也输出。-php模拟telnet
1.首先打开终端,在终端输入telnet 127.0.0.1 80
2.连接成功后,按终端提示 按住control+] 进入telnet命令行,注意命令操作一定要快,因为telnet连接web服务器后,在短时间内就会被web服务器关闭连接。具体连接时间是多少不太清楚,目测1分钟左右。所以最好提前把需要输入的命令复制好,等用的时候直接复制粘贴。-php模拟telnet
为了方便,我就把命令敲在此处:
GET /login.php?username=zhangpassword=1234 HTTP/1.1
Host:localhost
3.注意此处一定要在按一下回车,不能直接在telnet后面输入命令
4.输入两条命令后 连续按两次回车 即是发出请求
可以看到,服务器返回是登录成功。
post请求与get请求前边操作一致,只是请求行 请求头 与请求头有区别
一个post请求的命令如下:
POST /login.php HTTP/1.1
Host:localhost
Content-type:application/x-www-form-urlencoded
content-length:28
username=zhangpassword=1234
注意请求头输入完之后要留一个空行,表示请求头输入完成,接下来的内容是请求体。
可以看到telnet发送的POST请求也得到了服务器的正确响应。
通过使用telnet模拟http的请求,我们发现,其实只要我们发送给服务器的消息的格式符合http请求规范,那么http服务器(apache,ngnix)就能正确响应我们的请求,而浏览器所做的工作就是包装我们发送的http请求,形成符合规范的http请求,详细过程我们可以通过谷歌浏览器或者抓包工具进行抓取分析。-php模拟telnet
PHP连接telnet并执行命令
?php
// Create the socket and connect
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket,’localhost’, 1337);
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
{
if($buffer == “NO DATA”)
{
echo(“pNO DATA/p”);
break;
}
else
{
// Do something with the data in the buffer
echo(“pBuffer Data: “ . $buffer . “/p”);
}
}
echo(“pWriting to Socket/p”);
// Write some test data to our socket
if(!socket_write($socket, “SOME DATA\r\n”))
{
echo(“pWrite failed/p”);
}
// Read any response from the socket
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
{
echo(“pData sent was: SOME DATAbr Response was:” . $buffer . “/p”);
}
echo(“pDone Reading from Socket/p”);
?
其实就是 tcp socket传输,网上很多例子
我无节操的随便找了一份,应该能用。
你使用的时候修改下socket_connect的ip和port就行
命令就是socket_write时的参数
求教如何telnet 模拟器
可以的。可以这样模拟:
三台路由器A、B
A的f0/0接口IP地址为:10.10.10.10 255.0.0.0
f0/1接口IP地址为:192.168.1.1 255.255.255.0
B的f0/0接口IP地址为:20.20.20.20 255.0.0.0
A的f0/0和B的f0/0连接,A的f1/0连接电脑,在这里,B就做为远程的VTY服务器。这里这样模拟,是因为两个路由器的IP不在一个网段,这就得进行路由配置,就像互联网的那么多的主机,都不是在一个网段上的。-php模拟telnet
接下来,在A上配置一条指向B的默认路由:
RouterA(config)#ip route 0.0.0.0 0.0.0.0 20.20.20.20
在B上配置一条指向a的默认路由:
RouterB(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.10
接下来配置B,因为B作为vty服务器,要在远端telnet上来。
RouterB(config)#enable secret 123 设置路由器密码
RouterB(config)#line vty 0 4 进入vty配置
RouterB(config-line)#password 123 进入vty的密码
RouterB(config-line)#login
RouterB(config-line)#exit
把PC的IP地址设置成192.168.1.0/24网段的,如192.168.1.10,然后telnet 20.20.20.20,看是否telnet到路由器B上去了。
php中调用cmd并执行telnet命令的方法,vbs也可以,但是希望能全面一点,我不懂那个。或者其他方法也行。
PHP是服务器端脚本,就算能打开cmd窗口,也应该是打开的服务器端cmd窗口。