- 论坛徽章:
- 0
|
本帖最后由 wbc1223 于 2014-05-30 13:51 编辑
我现在想通过登陆厂家的硬件设备,执行指令把设备的反馈的结果得到,方便统计。
我用wireshark抓包,根据抓包过程用Perl写了个脚本,现在是设备登陆成功了,但是执行指令执行不下去。
登陆成功后,程序就卡在登陆上,程序过一会自动退出。
此外,还有两个问题咨询一下:
1、如何设置接受数据的等待时间,方便接受完数据后再输入下一条指令
2、如何设置接收数据的缓冲区的大小,接受的数据从wireshark上抓包看到需要2个以上的数据包来承载反馈结果
有哪位高手帮忙指点一下。
wireshark的包文件:
wireshark抓包.rar
(1.8 KB, 下载次数: 18)
抓包过程如下:
1、登陆设备过程抓包.jpg
2、向设备输入一条指令的抓包.jpg
3、退出设备抓包.jpg
4、执行脚本反馈结果.jpg
脚本如下:
use Socket qw(:all);
use strict;
#129.9.96.11:1400
my $address = sockaddr_in(1400,inet_aton('129.9.96.11'));
socket(SOCK, AF_INET, SOCK_STREAM, IPPROTO_TCP) || die $!;
my $result=connect(SOCK, $address) || die $!;
print $result."\n";
##################################################登陆设备过程
my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x00,0x18,0x00,0x00,0x00,0x00);
my $msg_out = join "", map{chr($_)} @aHead;
$msg_out .= sprintf(':login:"%s","%s"%c%c',"szhw","nesoft",13,10);
syswrite(SOCK, $msg_out);
#print SOCK hex()';
while(<SOCK>)
{
print;
}
undef @aHead;
undef $msg_out;
####################################################登陆设备过程
sleep 3;
####################################################向设备输入一条指令过程
my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x23,
0x00,0x00,0x00,0x00,0x3a,0x70,0x74,0x6e,0x2d,0x65,0x74,0x79,
0x2d,0x67,0x65,0x74,0x2d,0x70,0x6f,0x72,0x74,0x63,0x75,0x72,
0x72,0x61,0x74,0x65,0x3a,0x31,0x2c,0x30,0x78,0x66,0x66,0x2c,0x31,0x0d,0x0a);
my $msg_out = join "", map{chr($_)} @aHead;
#print $msg_out."\n";
syswrite(SOCK,$msg_out);
while(<SOCK>)
{
print;
}
undef @aHead;
undef $msg_out;
#################################################向设备输入一条指令过程
sleep 3;
################################################退出设备过程
my @aHead =(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x00,0x09,0x00,0x00,0x00,0x00,0x3a,0x6c,
0x6f,0x67,0x6f,0x75,0x74,0x0d,0x0a);
my $msg_out = join "", map{chr($_)} @aHead;
#print $msg_out."\n";
syswrite(SOCK,$msg_out);
while(<SOCK>)
{
print;
}
undef @aHead;
undef $msg_out;
################################################退出设备过程
close SOCK or die "close: $!";
#问题,1、如何设置接受数据的等待时间,方便接受完数据后再输入下一条指令
# 2、如何设置接收数据的缓冲区的大小,接受的数据从wireshark上抓包看到需要2个以上的数据包来承载反馈结果 |
|