记一次破解射频开关经历

射频开关是通过射频信号控制电源开关的一种东东,433MHz的开关有效遥控距离约为30米,假设一个场景,一间别墅,楼下的电风扇正插着射频插座在工作,楼上的老王想关掉楼下的电风扇,可是他又不想跑下楼,如果射频遥控器在他旁边,他就可以通过射频遥控器关掉射频开关的电源,从而关掉电风扇。

通常来说,一个433MHz的射频接收模块可以接收所有433MHz射频发射器发出来的信号,也就是说,如果你家在用射频开关,那么我如果知道你遥控器发出来的编码后,我可以用发射模块发射出一串同样的编码去控制你家的电源。是不是有种防火防盗防邻居的感觉。

我手里头进手了一套射频开关,一个遥控器和4个射频插座。我的目标就是在Raspberry Pi里编写一段程序,然后通过控制射频发射模块去控制4个射频插座的电源。It took me 4 days.

控制射频需要用到RCSwitch这个库,这个库可以控制GPIO接口上的发射模块发射信号编码。最开始用RCSwitch官方的Demo时,连上Ardudio发现以下代码只能控制电源的关闭,并不能控制打开。哦,对了,忘了说遥控器有4行2列,每行都有个开关键,电源插座需要进行初始化学习才能进行控制,也就是长按插座按钮,在红色灯闪时按住遥控器的某个键,那么接下来就可以用遥控器上那一行的开关键进行控制。

用Ardudio控制射频的代码如下,引脚接10:

#include<RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

Serial.begin(9600);

mySwitch.enableTransmit(10);

}

void loop() {

mySwitch.switchOn("11111",4);

delay(1000);

mySwitch.switchOff("11111",4);

delay(1000);

mySwitch.send(5393,24);

delay(1000);

mySwitch.send(5396,24);

delay(1000);

mySwitch.send("000000000001010100010001");

delay(1000);

mySwitch.send("000000000001010100010100");

delay(1000);

mySwitch.sendTriState("00000FFF0F0F");

delay(1000);

mySwitch.sendTriState("00000FFF0FF0");

delay(1000);

}

上面代码运行并且射频开关学习后发现只能控制关,并不能控制开,后面研究发现,发射模块发射出一串编码,不管编码如何,插座都会接收并且学习,但是学习后只能控制关,也就是说,上面的代码并不是射频遥控器8个控制按钮中的任何一个。后面发现,插座只学习了mySwitch.send(5393,24);这个发射的编码,其他编码都被忽略了。后来参考了国外一篇文档(果然技术内的东西都要找英文~~),发现编码的规律是,举个例子:

101010101010101000001000

前20位为地址位,后四位为数据位,也就是说后4位的编码直接控制是开还是关,于是最没有技术含量的行为出现了,我在猜测后四位数据,哈哈哈。很严肃的说一件事!!!破解靠的是技术加运气,运气也是很重要的。在尝试了许多数据之后,发现1100可以控制射频开,但是关的编码又是什么呢?之前可以控制关不能控制开,现在可以控制开了,又不能控制关。那么后四位是控制开关的,我们既然在电源开着的情况下,是否可以穷举关的编码呢,俗称暴力破解。我们构造一串编码,后四位for(int i=0;i<=1111;i++);然后前面的余位补0,发现1000是关的编码(我不会告诉你其实1000也是我猜出来的,只是后来发现暴力破解可以实现,所以可以技术实现的东西就不写猜了)。1100是开,1000是关,这是一组开关的编码,但是还有剩下3个插座。脑洞大开的地方就在这里了,1100的十进制是12,1000的十进制是8,我在想,12减去两位,变成1010(10),是否可以控制开呢?实验发现可以,12、10、8,这三个数是不是很有规律,等差数列,于是10、12、14都是可以控制开的,但是,控制关的编码只有一个1000,遥控器的每个按钮都可以控制指定的电源的,并不是一按关闭按钮之后就全部关闭,而且这里只有3个控制开的编码,但是插座有4个。前面说过前20位是地址位,解决方法在地址位上,前20位,我每在一个0位上补1,对应一个开编码,如下:

地址位:1110101010对应1110、1000

地址位:1111101010对应1100、1000

地址位:1111111010对应1010、1000

地址位:1110101010对应1100、1000

这样每个开关就对应了唯一一套编码开和关了。经过实验发现,确实是这样的。于是,不用遥控器,我们就可以直接通过程序去控制发射模块来控制电源开关。代码就不贴了,好简单,主要是思想问题,你如果知道如何控制开关,代码的编写也就是几分钟的事情!

(微信公众号申请了一年都有了,但是这是公众好的处女作,以后有空也会在公众号里贴点心得以及发表些文章,欢迎关注:iamprogramyuan )

时间: 2025-01-02 17:29:47

记一次破解射频开关经历的相关文章

谨记一次问题排查经历

一个客户那儿: 1接收报文->2系统转码->3发送给处理程序->4处理程序调用数据库存储过程 现在系统数据库库内记录出现问题了:某个关键字段的值扩大了10倍:自某个时间4-19日开始发现该问题:上游厂商确定没有变动过接口. 经过:根据分析和经验,认定问题出现在2上,初步推断是上游接口发生变化而未告知(上游有前科).重新依据生产环境部署程序.重新测试.问题仍在.期间发现过和汇率可能有关系.当时没有程序源代码. 接下来..... 找上游争吵 ..... 最后:冷静下来,向公司原来负责该客户的

记一次php webshell破解的经历

由于学习需要最近注册了一个国外的php空间 鉴于自带php管理系统体验太差 想找一个靠谱的webshell来代替 经过几分钟的搜索 终于在网上找到了一个界面和功能都很不错的php webshell 如图: 当我想再加上自己diy的几个功能时 打开代码一看: 竟然是乱码! 于是..心中闪过了一些邪恶的想法..破解它! 首先 我注意到了base64_encode这个函数,于是 写了一个<?php echo base64_decode($str)?>来讲代码显示出来 结果出现了下面的一幕: 我尼玛

【1】记一次破解wifi

当然,使用的依旧是aircrack套件,这次依旧是跑字典,今天,捉到了另一个实验室icephone的wpa握手包,我猜测实验室的wifi一般都跟自己的名字有关,icephone刚好是8位字母,于是我就大小写组合icephone写到一个字典中,然后调用命令 aircrack-ng -w /path/字典 /path/握手包 (path为你的路径)来进行破解,哎,遗憾的是并没有自己想要的密码 我有趣猜测,他可能不是8位,但很大的可能是前面是icephone,于是我利用crunch密码生成工具来生成专

Java Web架构知识整理——记一次阿里面试经历

惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里的面试机会,于是就试了试. 首先是电话面试,当时正在上班,人多口杂,好不容易找了个没人的地方开始面试.面试的方向是Java Web,面试官很nice,跟朋友一样,一开始问了些比较基础的东西,比如hashmap/hashtable的区别和优缺点,我答得还行,而且对于原理的东西还算讲的比较透彻. Jav

记一次性能优化实战经历@告别2016

过了今天就2017了,做点什么呢,写点年终总结.个人小目标.或者?!今天窗外阳光十分的好,又恰逢周末,算了,还是用2016底的一次SQL Server数据库性能调优经历来做了结,告别2016! 不废话,上菜! 内容摘要: 一.性能问题描述 二.监测分析 三.等待类型分析 四.优化方案 五.优化效果 一.性能问题描述 应用端反应系统查询缓慢,长时间出不来结果.SQLServer数据库服务器吞吐量不足,CPU资源不足,经常飙到100%....... 二.监测分析 收集性能数据采用二种方式:连续一段时

菜鸟成长记1,软件工程大一经历

菜鸟成长记1 -----大一总结及反思 大一即将结束,突然间想总结一下我的大一生活,最重要的还是好好反思一下. 回首整个大一感觉自己学了好多的东西,但最终的感觉还是一无所成,大一上学期学习c语言,一直处于一个总是一个没有入门的感觉,虽然简单的c经长期磨练已经差不多搞懂,不过稍微复杂点的抑或着说稍微麻烦点的都没有真正学会,仅仅是学过c而已,在学c的同时一直想练ACM可能真的是天赋不够也可能是自己不是这块料,在几经折磨下,做了uva上不超过30道题的情况下放弃了,除想练ACM这中间还接触了java和

ftp被暴力破解小小经历!

总是有那么一群人,闲的没事乱搞服务器!也不知道谁在暴力破解公司的ftp. 日志服务器不停报警,不停的用户密码尝试登陆ftp,倒不是担心你登陆,密码复杂性也够一段时间破解的.漏洞的话就要看攻击者的 道行了.关键是我担心的是我的日志服务器啊,要不停的记录这些东西.看着不舒服影响心情. 动态查看日志: 查看ip,阿里云.逗我呢.也不知道谁躺枪了.估计连接vpn或者其它方式搞得! 先写个acl禁止再说.平静了... 反思:防火墙只允许公司连接ftp,这是什么鬼?公司也没有搭建vpn之类的东西. 难道局域

记一次优化数据库的经历

一个文章表,大小有1.6G,表结构是 id(主键递增)   nid(小说书id)  vid(小说章节id)  content(小说内容)  time(时间) 业务要求:搜索出每本小说的前12个最新章节 sql: Select id,name,content From table where nid=1024 order by time desc limit 12 优化经历: 原本表中对nid这个字段加个索引,时间快了一点,但是只要使用order by就顿时慢了,所以就要想办法优化order by

记一次种牙经历

在写下整个种牙经历之前,先把 小马的情况阐明一下. 早在儿时换牙之际,也不知道什么原因,或许是因为喜欢啃骨头啥的,小马的恒牙尽然没有顶掉乳牙(侧切牙),从乳牙的后面长了出来.当时小也没有太在意,知道高中时候,发现这颗肆意乱长的恒牙经常会咬到自己舌头(奇怪小时候为什么没有咬到)在经历了一阵犹豫后,决定去拔牙,恢复满口好牙的状态.那会儿在农村老家,没有对拔牙形成正确的认知,也没有去关注该去啥地方拔牙比较合适,听了老父亲的话,找到农村老家的一处非正规牙医小诊所处,把牙拔了.谁知那个庸医,在没有问清楚的