【全栈之路】软件、硬件和破解:一个程序员的电动车防护

最近遇到一个程序员,他和我聊了一下电动车的防盗之路,感觉很有意思,就把这个事情记录了下来。

这位同学在广州工作,每天都是电动车通勤。车子是深远的牌子,这位同学进行了改造,给车子安装了哈啰的防盗设备,可以远程手机启动关闭车辆,查看车辆位置。

在这里插入图片描述

但他怎么都没有想到,小偷只偷电池,不偷车。主要是因为电动车需要上牌,车架号抹除或者重复的话,不能上牌,甚至会报警。

思索再三,这位同学从某宝购买了一款带有4G功能,支持GPS定位的电池,来实时追踪车辆位置。

在这里插入图片描述

遗憾的是,这个电池开发商只提供了小程序,车辆的位置信息只能打开小程序才能看到。整个行业只有哈啰才会提供付费的位置变动的短信提醒,其他开发商为了成本考虑,也没有提供APP,也没有提供微信推送功能。

于是,这位同学想到了另外一种办法。

他下载了Fiddler。设置了全局代理之后,再打开小程序,抓取获取地理位置的api接口的数据包。

在这里插入图片描述
在这里插入图片描述
有了API接口之后,他又来到Bmob后端云,创建了一个云函数,代码如下:

function onRequest(request, response, modules) {
    var http = modules.oHttp;
    //获取数据库对象
    var db = modules.oData;
    //模拟请求
    const headers = {
        'Host': 'www.yugps.com',
        'content-type': 'application/json;charset=utf-8',
        'abp.tenantid': '',
        'accept': 'application/json, text/plain, */*',
        '.aspnetcore.culture': 'zh-Hans',
        'accept-language': 'zh-CN,zh-Hans;q=0.9',
        'authorization': '这个授权信息这里保密,每个人都不一样',
        'referer': 'https://servicewechat.com/wx1a60cf37e5d67920/83/page-frame.html',
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E217 MicroMessenger/6.8.0(0x16080000) NetType/WIFI Language/en Branch/Br_trunk MiniProgramEnv/Mac'
    };

    const data = {
        "coordinates": "GCJ02",
        "id": 171595
    };

    var options = {
        "url": 'https://www.yugps.com/api/Position/GetMonitorDataSamplePreOrNext',
        "headers": headers,
        "body": JSON.stringify(data)
    };

    http.post(options,
        function(error, res, body) {
            var resultObject = JSON.parse(body);
            const device = resultObject.result;
            var dd = device.gLatitude + ''gLatitude = dd.slice(0, -1);
            // 获取到数据
            const data = {
                "gLatitude": device.gLatitude,
                "gLongitude": device.gLongitude,
                "offlineOrStaticTime":device.offlineOrStaticTime
            };

            // 将位置等数据插入到Bmob后端云中
            db.insert({
                //表名和数据
                "table": "diandong",
                "data": data,
            },
            function(err, data) { //回调函数
                response.send([err, data]);
            });
        }
    );
}

然后他打开了这个云函数的定时任务,设定每1分钟执行一次,不断去获取电动车的位置。

在这里插入图片描述

最后,他还是用云函数结合定时任务,不断去判断位置是否发生改变,一旦发生变动,就往企业微信内部群上发送一条信息。

在这里插入图片描述

发送企业微信的代码如下:

function onRequest(request, response, modules) {
    var http = modules.oHttp;

    const data = {
        msgtype: 'text',
        text: {
            content: '报警信息'
        }
    };

    const headers = {
        'Content-Type': 'application/json'
    };

    var options = {
        "url": 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa',
        "headers": headers,
        "body": JSON.stringify(data)
    };

    http.post(options,
        function(error, res, body) {
            response.send([err, data]);
        }
    );
}

太屌了,让我看的眼花缭乱。这一番骚操作你怎么看?

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值