发新话题
打印

[教程技巧] 用手机控制电脑的方法

用手机控制电脑的方法

最初的想法就是看我的电脑是不是在登录QQ,如果是我就用手机关掉它。一直在苦想,究竟用什么办法能让手机控制电脑呢?手机怎么连接到电脑呢?

第一个想到了短信。那时候网易popo还是免费的,popo有一个固定的短信号码。用手机发出指令,如“关机”,在电脑这端编写个软件截取到popo的新信息,判断是否是先前设置的手机号,然后执行指令,关掉新信息。

可是,这样以来就有了一个问题。popo必须是一直在线的,而且软件拦截窗口,读取信息,执行信息,关掉窗口这样太复杂的动作有可能随时出现错误,像我这么懒的人,要去仔细的调试程序,我看还是找个更简单的办法吧。

第二个想到了WAP。这也是能远程传递信息给电脑的方法。那首先要架设WAP服务器,最简单的就是iis了,可是,我考虑到iis不是每个电脑上都有的,也不适合灵巧便携的应用。那可怎么办。

忽然想到了一款叫netbox的小软件,原来用它在没有iis的电脑上演示过asp的页面。由于这个软件被加壳了,那就脱掉它的壳先。用PEiD查出它是UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo的壳,脱掉后,发现没必要……


创建一个wwwroot的文件夹,创建一个手机WAP网页格式的p.wml,代码如下:
复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<!-- code by oran -->
<head>
<meta forua="true" http-equiv="Cache-Control" content="max-age=0"/>
<meta forua="true" http-equiv="Cache-Control" content="must-revalidate"/>
</head>
<template>
<do type="prev"><prev/></do>
</template>
<card id="card1" title="Wap2PC" newcontext="true">
<p>
<b>Code:</b><br/>
<input name="SID" size="10" maxlength="50" type="text" emptyok="true"/><br/>
<br/>
<anchor title="login">
<go href="p.asp" method="post">
<postfield name="code" value="$SID"/>
</go>Send<br/>
</anchor>
</p>
</card>
</wml>
然后创建一个ASP文件,p.asp,代码如下:
复制内容到剪贴板
代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="main" title="post">
<%
code=Request.Form("code")
Set file1 = CreateObject("NetBox.File")
file1.Create "code.log"
file1.WriteText code
file1.Close
%>
<p>
Successful!
</p>
</card>
</wml>
手机通过wap访问到p.wml这个页面,页面中有一个表单,文本框和提交按钮。文本框就是来提交指令的了。这个页面的信息被传递到p.asp这个页面。把指令保存到一个叫code.log的文件里,然后显示“Successful!”。当然,我们现在只是做思路,在ASP中没有过滤传递的的信息。说到这个ASP,还有个小插曲,就是一直都是用FSO创建文件,可是测试起来发现总是出错,后来查阅netbox的说明文件后才发现,netbox的创建文件需要用“CreateObject("NetBox.File")”这样一个特殊的对象。

电脑上是接收到手机传递的指令了,可是怎么执行呢?事情发展到这里就比较好办了,大家可以利用自己熟悉的语言编写软件,在这里我只说我的思路好了。设定每2秒刷新一遍code.log这个文件,如果是空文件就跳过,如果有指令,则拿code.log里面的指令匹配数据库中对应的指令,能对上的话就表示是正确的指令,然后执行相应的命令,然后清空code.log,以便下一条指令的到达。

说起来这个程序是很简单的,只不过在WAP控制电脑的时候还要考虑到一个安全问题。为了方便,我们会把命令公开或记录下来。要是有人利用命令非法执行怎么办。那我们还需要在程序这块增加一个口令认证模块。比如说先前发送“关机”就可以执行的命令,现在加入口令“123456 关机”才可以。最简单的办法就是读取code.log的时候加上一个函数,读取从左开始前6位的字符串去匹配这个口令,如果是则继续读取第8位到完的字符串去匹配指令,然后执行。

最后要设置netbox,netbox需要一个main.box执行文件,才能把p.asp、p.wml打包成一个独立的程序,main.box里面的代码如下:
复制内容到剪贴板
代码:
Dim httpd

Shell.Execute "code.exe"
Shell.Service.RunService "WapServer", "Oran Wap Server", "Wap Server For Remote Control"

'---------------------- Service Event ---------------------

Sub OnServiceStart()
    Set httpd = NetBox.CreateObject("NetBox.HttpServer")

    If httpd.Create("", 80) = 0 Then
        Set host = httpd.AddHost("", "\wwwroot")

        host.EnableScript = true
        host.AddDefault "p.wml"

        httpd.Start
    else
        Shell.Quit 0
    end if
End Sub

Sub OnServiceStop()
    httpd.Close
End Sub

Sub OnServicePause()
    httpd.Stop
End Sub

Sub OnServiceResume()
    httpd.Start
End Sub
其中的“Shell.Execute "code.exe"”这个就是前面讲到的我们自己编写的读取指令的程序。让它随着网页服务一起运行。由于开机再自动运行很麻烦,我就考虑到服务的方法开启网页服务。“Shell.Service.RunService "WapServer", "Oran Wap Server", "Wap Server For Remote Control"”这段代码就是创建一个自动运行的服务。那这个也是我考虑用netbox的一个用意吧。代码“Set host = httpd.AddHost("", "\wwwroot")”是指定网站的根目录,“host.AddDefault "p.wml"”就是默认的首页了。

大部分家里还都是宽带ADSL,由于不是固定IP,我们还需要一个类似花生壳的动态解析软件。这样就可以在外面随时随地的访问电脑了。

这个思路的扩展性还是很强的,还能扩展为控制网站服务器,监视内存、CPU使用情况,重启IIS等多种操作。由于只需要手机WAP上网,价格相对低廉,方便易操作,也是日后控制程序发展的方向啊~希望有高人开发一种这样的程序,让它更简单更易用。

做到了这里,这个用手机控制电脑的思路就差不多结束了。其实,每件难事只要多思考,多动手,多体会,就能在自己和大家的帮助下,一步步的完成。

TOP

发新话题