找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3581|回复: 0
收起左侧

手机远控电脑程序的编写思路

[复制链接]
ID:71922 发表于 2015-1-11 02:32 | 显示全部楼层 |阅读模式
     原本是一个独立的程序,只是因为功能很少就整合在【短信远控电脑 V2.0 Bate】里面。并更名为【手机远控电脑 V3.0 Bate】(总觉得这个名字有点拗口..)。

    设计这个程序初是因为我的一个朋友觉得【短信远控电脑 V2.0 Bate】这个程序要花钱。因为是用短信来控制的。(我觉得很郁闷...)
建议我设计一个可以用手机浏览器来控制电脑的程序(现在设计完了,我的朋友又觉得没多大用处。我表示很纠结...)

    这个程序实现原理还得谢谢小凡,不然我肯定是没法完成的。感激吖~~~ 每次遇到问题,他都很有耐心解答。太TMD感动了...

实现原理:
        在设计前,需要了解一下HTTP协议。

================================================================================================
协议头:
    GET / HTTP/1.1 //第一个GET代表方法  这两种都是合法的
    GET /index.html HTTP/1.1;
    GET
http://www.hao123.com/index.html HTTP/1.1
    一般第二种形式很少 在代理访问时才会是这种形式

    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/rar */*
    接受文件的类型  上面那些是文件描述 固定的
    Accept-Language: zh-cn  
    标识 自然语言

    Accept-Encoding: gzip, deflate
    支持的压缩方式

    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
    浏览器标识
    当年腾讯网页全面拒绝360浏览器,就是通过这个实现的
    Host: 192.168.1.5

    Connection: Keep-Alive
    这句话 我的理解是 客户端允许不断开TCP连接
    具体应用,百度搜索引擎里,联想搜索,肯定没有断开

==================================================================================================
先用 recv 阻塞函数 等待浏览器的访问,如果有用户使用浏览器访问的话
那么 recv 会接受到 浏览器的请求数据包:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive


注意第一个: GET / HTTP/1.1   ,我们可以分析得到的数据,看看 如果发现有GET / HTTP/1.1 说明是浏览器访问的,那么我们就可以将预先设计好的HTML文件 用 send 发送给对方。在发送前需要先发送一个协议头。
HTTP/1.1 200 OK                                          // 标识成功
Server: L、                                                    // 服务器的名字
Content-Length: 1514                                   // html文件的大小 很重要滴
Content-Type: text/html;charset=GB2312     // 编码方式      
Expires: Sat, 28 Jan 2012 02:58:38 GMT     

Connection: close                                         // 我的理解是可以断开的TCP连接

再紧接着发送预先设计的HTML文件。这样对方的浏览器就能完整的显示出你发送过去的网页。
当对方点击你发送的HTML文件中的某一个超链接,例如 超链接指向的是 l.html 页面。那么我们得到的数据包就是:
GET /l.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.1.5/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive


注意第一行:GET /l.html HTTP/1.1  
我们就可以根据这个信息得到对方点击的是哪个超链接,那么我们就反馈相应的HTML网页。
你可以通过抓包工具得到我的程序发送、接受的数据包。在我的程序中,操作电脑的超链接所指向的页面,实际上是不存在的。
例如,在【进程管理】的页面中,【结束 PID】 的超链接所指向的页面假如是:KILLPID2003.html。(2003 是进程的PID)这个页面实质上不存在的。目的只是想通过超连接得到用户所要结束的 PID。假设用户点击了这个超链接,那么得到的数据包就是:
GET /KILLPID2003.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer:
http://192.168.1.5/GetWindow.html
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive


注意第一行:GET /KILLPID2003.html HTTP/1.1 ,我们可以分析这一句。得到的PID是2003,那么就可以遍历进程,对比PID,结束相对应的PID进程就行了,然后重新遍历进程列表,生成HTML文件发送给对方。
整个程序运行的原理大概就是这个样子。只要你遵循数据包的格式发送数据就一定可以成功的。
======================================================================================================

    【手机远控电脑 V3.0 Bate】分两个模式:一个是短信模式,一个浏览器模式。
    现在主要看看 浏览器模式。(手机或电脑的浏览器均可登录操作...)
    主界面:



    这个是启动之后的页面,注意,内网的要在路由设置端口映射,然后在 希网动态域名或花生壳等 申请免费的动态域名。
再将域名指向自己的外网IP。手机就可以通过域名访问连接到你的电脑。还有一点,ADSL 用户要通外网是无法用 80 端口的。被营运商出于某种目的给故意屏蔽了。
   由于采用 POST 方式,接收不到手机浏览器发送的口令(原因不详),所以只能暂用GET 方式提交表单。



    这个是【功能区】,暂时只有四个功能:【窗口管理】、【进程管理】、【重启系统】、【关闭系统】。


    这个是【窗口管理】页面(粉红色的是被隐藏的窗口):


    这个是【进程管理】页面:



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表