IC 卡“四位日期”算法分析
互联网的终点是美团。
忆往昔
先辈诚不欺我,经历了互联网的野蛮生长,“降本增笑”后,像我这样的初级程序员走到了互联网红利的终点。
混迹互联网的时候,总是能听到一句流传甚广的话“互联网的终点是美团。”
“初闻不知句中意,再闻已是句中人”,情真意切,认识 IC 卡很早,但“深入交往”是在送外卖的时候。
世界是善良的,但总有“恶意”充斥于某些角落,小区、楼宇的门禁总是影响“追风少年”的脚步,阻碍“发家致富”的道路。
有人的地方就有江湖,不经意间总会在某些“禁地”发现一些熟悉的身影,不同的是,他们骑着车风驰电掣,我走着路满头大汗,在“圈子”里混熟后终于知道了其中的奥秘,他们掌握着通往“财富”的钥匙IC 卡
。
或是曾经租住在某个小区,或是路边 10 元解君愁,他们手上有大量的方便之门,效率提高的同时,财富也水涨船高,他们有着统一的称呼“大神”。
经过长时间的推杯换盏、抽烟、喝酒、烫头后,终于我也可以“横行”于各个“禁地”,效率大幅提升,财富“水涨船高”的同时不禁感叹“科技改变(我的)世界”。
作为曾经的“互联网人”,总不能知其然不知其所以然,遂在闲暇之余总会翻看一些相关书籍和视频,增长见识的同时开阔一下视野,但才疏学浅,终不得入其门。
起因
迫于生活的压力,回到了这个 N 线的小县城。
万事轮回,兜兜转转,现在依然没能逃过美团的“制裁”,“嘿,老板你也在这”(王宝强表情),你说巧不巧吧。
某天下班回家,发现小区的门打不开了,只能“尾随”他人进入,奇怪的是单元门却能刷开,到家翻看了缴费凭证后发现是物业费到期了。
这不是撞枪口上了嘛,尘封已久的兴趣又被勾了起来,在学习网站上学了一些皮毛之后就开始了尝试。
未完待续。。。
发现图片全挂了,搜了一下是微博图床防盗链,修复先。。。
经过
接上,学习中阿婆主提到了“四位日期”这个加密(解密)方法:
把 16 进制的四位日期转换成 2 进制,从后往前以
5
4
7
的方法分隔(前面不够 7 位了?补 0 呗,不用考虑正负),就得到了三组 2 进制,然后把三组 2 进制转换为 10 进制,就得到了三组数字,分别对应日
月
年
,bingo!
好,讲完了,结束。
开玩笑,我“x”子都脱了你给我看这个?
随着深入了解,夏天、锤子、客栈出现在视线中,他们提供了基础的分析、查询等免费服务。
在一番尝试后,发现锤子中有项日期计算
的功能很有意思
打开看看
功能很多,包含了常用日期处理的方式,其他几个算法都很好理解,看懂明码,其他的暗码、倒置就都明白了;
明码就是 10 进制的数字直接使用;
暗码就是 10 进制的数字转为 16 进制然后使用;
年份倒置最后看,看懂明/暗码 8 位就明白了;
最一头雾水的就是四位日期,它是今天的主角;
看了眼日期,好家伙,从四月初开始写,到现在已经五月中了,给 xx 打工太累了,每天就是睡觉上班,上班睡觉,好在经过取舍,果断解脱出来了。
既然看不懂,那就笨办法,一个一个的尝试,总能找出点规律;
本来打算从 2024 年 1 月 1 日开始尝试,但日期选择器总是重置到当天的日期,选起来甚是麻烦,那就从本月 1 号开始:
2024.5.1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|
30A1 | 30A2 | 30A3 | 30A4 | 30A5 | 30A6 | 30A7 | 30A8 | 30A9 | 30AA |
2024.5.11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
---|---|---|---|---|---|---|---|---|---|
30AB | 30AC | 30AD | 30AE | 30AF | 30B0 | 30B1 | 30B2 | 30B3 | 30B4 |
2024.5.21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
---|---|---|---|---|---|---|---|---|---|
30B5 | 30B6 | 30B7 | 30B8 | 30B9 | 30BA | 30BB | 30BC | 30BD | 30BE |
2024.5.31 | |||||||||
---|---|---|---|---|---|---|---|---|---|
30BF |
看出规律了吧,就是正常的 1~9、A~F,这两个区间刚好是 16 进制的数字范围;
F 表示 15,从 16 号开始,又从 0 开始了,不同的是,前面的 30A 变成了 30B,这是什么意思呢?A+1=B
?往前进了一位吗?
看不懂没关系,再来切换月,看看月的规律:
2024.1.16 | 2024.2.16 | 2024.3.16 | 2024.4.16 | 2024.5.16 | 2024.6.16 |
---|---|---|---|---|---|
30 | 3050 | 3070 | 3090 | 30B0 | 30D0 |
2024.7.16 | 2024.8.16 | 2024.9.16 | 2024.10.16 | 2024.11.16 | 2024.12.16 |
---|---|---|---|---|---|
30F0 | 3110 | 3130 | 3150 | 3170 | 3190 |
看着很简单嘛,都是奇数;
跟日的规律差不多,奇数用完就往前进一位,然后从头开始;
不对,1 月怎么就两位数?
嘿嘿,如果真的认为规律就是这样,那 1 月 16 只有两位数怎么解释?
回过头再看看日的规律,用 16 进制表示日期,如果日期大于 15,就从 0 重新开始,而且前面的数字➕1;
好巧不巧,今天刚好是 16 号,所以前面的数字是➕1 后的数字,如果假设它是月的话,实际的月是不是要➖1 呢?
不用假设,把日期调到小于 15 的日期试试就知道了:
2024.1.15 | 2024.2.15 | 2024.3.15 | 2024.4.15 | 2024.5.15 | 2024.6.15 |
---|---|---|---|---|---|
302F | 304F | 306F | 308F | 30AF | 30CF |
2024.7.15 | 2024.8.15 | 2024.9.15 | 2024.10.15 | 2024.11.15 | 2024.12.15 |
---|---|---|---|---|---|
30EF | 310F | 312F | 314F | 316F | 318F |
至于为啥选的 15 号,跟 16 挨得近呗,好切换;
接下来到年了~~