浏览器串口通信方案

    浏览器不能直接访问硬件接口,微软采用Active插件的方式进行访问,而插件只支持IE浏览器,IE浏览器已经不进行更新了,慢慢退出主流浏览器。

   通过上网查询“浏览器串口通信”,找到一个非常好的实现方案。demo地址如下:http://d.iyanhong.com/demos/TComm/commt2.html

   这套方案的原理是:实现一个Windows服务负责串口通信,通过浏览器对该服务的HTTP调用实现浏览器对串口的数据传输。串口对浏览器的传输是通过浏览器对该服务进行HTTP轮训实现的。(其实采用websocket更好,但是为了兼容更多的浏览器,作者采用了HTTP轮询的方案)。作者封装了JavaScript的库进行交互,调用类库的方法,仿佛浏览器天生支持了串口通信一般。使用上面的demo地址,配合串口虚拟串口Virtual Serial Port Driver和串口调试工具ComAssistant 调通了浏览器和串口的数据交互。

   但是,当将JavaScript集成到前端项目时出现了问题。原来该程序并非免费服务,于是我加了开发者的QQ,询问如何收费的。作者告诉我,需要支付一定费用,我提供域名,给我重新生成一个安装包即可。

   通过收费方式,对权限验证的方法大致有了了解,肯定是通过HTTP头里的Referer进行判断的,demo里下载的安装包配置的合法hosts就是http://d.iyanhong.com,只要访问接口时,Referer是http://d.iyanhong.com就能使用demo提供的服务进行开发了。

   该服务对外提供服务的端口是8132,而浏览器访问HTTP时,并不能通过修改访问使用的Hosts。于是我想到了HTTP转发的方案,让浏览器请求转发服务8133,转发服务器修改Header里的Referer属性后将请求转发给8132服务即可。这样的话8132端口对应的服务接收到的Referer便是修改后的Referer,从而欺骗权限验证逻辑,达到正常提供服务的目的。

   这套方案需要三步:

   1.修改JavaScript类库,将8132的请求全部改为8133的请求。

   首先,将min.js进行解压,获得正常格式的js文件,然后找到所有的http请求,在发起请求前对URL进行字符串替换,将:8132替换为:8133,替换代码如下:

    pq.url = pq.url.replace(":8132",":8133");

   2.实现8133到8132的转发服务。

   这里我们使用go语言开发,go语言开发的代码可以直接打包成exe文件,exe是Windows系统原生的可运行文件,为下一步配置Windows服务提供方便。转发代码使用go语言提供http类库,逻辑非常简单,代码如下:

package main

import (
    "log"
 "net/http"
 "net/http/httputil"
 "net/url"
)

type handle struct {
    host string
    port string
}

func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    remote, err := url.Parse("http://" + this.host + ":" + this.port)
    if err != nil {
        panic(err)
    }
    proxy := httputil.NewSingleHostReverseProxy(remote)
    r.Header.Set("Referer","http://w.want.com/demo.html")
    proxy.ServeHTTP(w, r)
}

func startServer() {
    //被代理的服务器host和port
 h := &handle{host: "127.0.0.1", port: "8132"}
    err := http.ListenAndServe(":8133", h)
    if err != nil {
        log.Fatalln("ListenAndServe: ", err)
    }
}

func main() {
    startServer()
}

    3.将转发服务配置成开机自启,避免每次都要手动启动的麻烦。

    开机自启动使用Windows Service Wrapper小工具即可。https://github.com/winsw/winsw/releases

    配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>CrackTcom</id>
<name>CrackTcom</name>
<description>CrackTcom</description>
<executable>D:\commt2\CrackTcom.exe</executable>
<logmode>none</logmode>
</service>

 

全套方案实现后的预备工作如下:

/**********安装串口插件***********/
1.安装TComm2.exe(安装时需要关闭各种安全卫士)。
2.浏览器输入http://127.0.0.1:8132/验证
/**********安装破解串口插件***********/
1.cmd进入当前目录。
2.执行 start reg.exe install。
3.重启电脑。
4.浏览器输入http://127.0.0.1:8133/验证

 

上面工作完成后,就可以根据JavaScript提供的类库进行串口通信开发了。

这套浏览器串口通信方案基于HTTP实现,支持Windows下的全部浏览器。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单芯片方案。可将 TTL/UART 串口单片机连接至以太网 支持TCP服务器、TCP客户端、UDP模式、UDP组播 支持DHCP、DNS、Modbus TCP等串口服务器所有功能 PQFP 80PIN封装形式 焊上即可使用,无需任何驱动。网口搜索后可以配置IP ZLAN1003 概述 ZLAN1003是一款功能强大的单芯片串口转TCP/IP芯片,内部集成了10/100M快速以太网MAC和PHY接口、UART串口以及串口转TCP/IP所需的软件功能。不同于普通的方案,ZLAN1003具有:易于使用、稳定可靠、系统成本低等3大优点。ZLAN1003可用于最大限度地方便实现TCP/IP、Internet互联产品的设计。 ZLAN1003的方便性体现在,它是一个拿来就用的真正的单芯片串口转TCP/IP芯片,无需任何驱动即可实现UART转TCP/IP数据传输。芯片上电之后用户无需通过参数配置,因为所有的参数配置可以用ZLVircom软件通过网口配置,用户通过ZLVircom可以一键式配置ZLAN1003的内部所有参数。作为TCP 客户端时,ZLAN1003会自动去建立TCP连接;作为TCP服务器时,自动接受连接,无需任何用户MCU的干预。用户MCU只需要做的就是等待ZLAN1003初始化完毕后进行串口(UART)数据的收发即可。 ZLAN1003的稳定性体现在,ZLAN1003的内部的TCP/IP协议栈是经过多年商业应用实践证明的。内部包括:TCP、UDP、IPv4、ICMP、ARP、HTTP等。 特点 内部集成全功能的串口转TCP/IP软件,无需复杂编程,使用简便。 内部集成10M/100M的快速以太网的MAC和PHY接口。 支持自动协商(Auto Negotiation Full-duplex&half duplex)。 支持自动交叉线检测(MDI/MDIX)。 支持TCP服务器、TCP客户端、UDP、UDP组播工作模式。 作为TCP服务器时支持和100个客户端同时通信。 作为TCP客户端时,可以同时连接8个目的IP和端口。 3.3V工作电压,5V I/O信号承受度。 波特率支持1200~460800,支持硬件流控和软件流控。 80脚LQFP封装。无铅(Lead free)封装。 丰富的指示灯:TCP连接建立指示灯、网线连接指示、数据通信指示。 规格 网络界面 以太网 10/100 Mbps 串口界面 界面 3.3V UART 串口数 1 校验位 None, Even, Odd, Space, Mark 数据位 5~9 停止位 1,2 流控 RTS/CTS,DTR/DCR,XON/XOFF 速率 1200bps~460800bps 软件特性 协议 TCP,HTTP,UDP,ICMP,ARP,IP,DNS,DHCP 虚拟串口平台 Windows 95/98/ME/NT/2000/XP/WIN7/WIN8 配置方式 Web浏览器、卓岚ZLVirCom、串口类AT命令 电器特性 电压输入 供电电压:3.3V;IO电压:5V;230mA最大电流 机械特性 尺寸 见数据手册 工作环境 工作温度,湿度 0~70℃,5~95% RH 储存温度,湿度 -45~165℃,5~95% RH W

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值