(我是小学生)有懂这个算法的吗?数值。小白表示不太会
0749orz (一头人,牵着一头牛!) | 2014-02-19 03:46
本来卡上面有2块!
2块数据:C8000000 37FFFFFF C80000000 8F708F7
充了10块:E8030000 17FD0000 E80300000 8F708F7
12块-去了3块, 买了两个荼叶蛋。(盛9块)
刷过之后,9块:84030000 7BFCFFFF 840300000 8F708F7
之后大牛给了一个算法,结果去试刷了成功显示的是100块
充了100块:10270000 EFD8FFFF 102700000 8F708F7
1027 把下面的那个位换位了一下对不对呢?我是这样想的、求大牛
2710 这个数值是16进制的2710 之后十进制是10000(这个2710怎么得出来的){10000也就是100.00元}
10270000 这个是十六进制的之后NOt一下就变成了EFD8FFFF
10270000+ EFD8FFFF+ 10270000 +不变的一个值:08F708F7
100块的结果就是:
10270000EFD8FFFF1027000008F708F7
100块的:
刚刚用十进制算过
等于讲就是把
1027
倒过来等于
2710 他是十六进制,转换成十进制就是10000 也就相当于是100.00一百块
那么2块:
数据的C800
可以转换成00C8
00C8 转换成了十进制是200 200也就是2.00两块钱
求2710怎么得出来的:
十进制的10000转为十六进制是2710
2710
1027
1027+四个0000再加十六进制的10270000NOt一下结果就是EFD8FFFF
10270000+EFD8FFFF+10270000+08F708F7
求祥细的算法,谢谢
假如200块 应该怎么算呢?
假如200是十进制的20000(200.00)
转为十六进制是:4E20
4E20
倒一下
204E
204E+0000=204E0000
204E0000+DFB1FFFF ) (DFB1FFFF是由204E0000十六进制Not出来的
结果是204E0000+NOT出来的DFB1FFFF+204E0000+不变的值是08F708F7
200块的结果也就是成了:204E0000DFB1FFFF204E000008F708F7
求我算出来的200块有误吗?
给出一个结论:你想要的钱比如100块的十进制就是100+00=10000=100.00也就是100块钱
十进制的:10000转为十六进制是2710再倒过来一下就等于了
1027再加上四个0就等于了10270000再加上(十六进制)10270000 Not 一下结果就是 EFD8FFFF
10270000+EFD8FFFF+10270000+不变的值08F708F7
100块钱的数值是下面:
10270000+EFD8FFFF+1027000008F708F7
这个是正确的100块钱数值
结论二:200块钱的十进制是20000也就是200.00
十六进制的值是:4E20再倒过来一下204E
204E+0000=204E0000
204E0000+十六进制的204E0000 not得出来的DFB1FFFF
204E0000+DFB1FFFF+204E0000+不变的08F708F7
204E0000DFB1FFFF204E000008F708F7 这个不知道对不对是不是200块钱
这个值永远不会变的:08F708F7
你想要的钱十进制是xx块钱=xx.00
再把这个十进制十六进制一下就是XXoo再倒过来一下就是ooXX
ooXX+四个0+十六进制的ooXX0000 not 一下就有了一个8位的xxxxxxxx
ooxx0000+xxxxxxxx+ooxx0000+不变的08F708F7
结果就成了你想要的算法和钱喽。
反汇编一下:
E803000017FD0000E803000008F708F7 10块
这个取前四位E803
倒过来一下,就得到了03E8
03E8 是十六进制 之后转为十进制就是:1000 1000 也就是10.00是十块钱
这样后面的就有得算出来了。
840300007BFCFFFF8403000008F708F7 9块 原卡1
还是取前四位:8403倒一下得到了0384
0384是十六进制。。之后转一下到十进制就得到了900 900也就是9.00也就是9块钱
10270000EFD8FFFF1027000008F708F7 100块
还是取前四位:1027 倒2710
十六进制的2710 转为十进制得到了:10000 10000 也就是100.00也是100块钱
10270000EFD8FFFF1027000008F708F7 自己得出来的100块
204E0000DFB1FFFF204E000008F708F7 自己算出来的200没验证过的
204E倒过来一下,就是4E20 4E20的十进制就是:20000 20000 也就是200.00
204E+四个0+上DFB1FFFF由 204E0000Not一下得出来的
204E0000+DFB1FFFF+204E0000加最后的一个不变的值08F708F7
200块钱的结果就是了下面的:
204E0000DFB1FFFF204E000008F708F7
DC05000023FAFFFFDC05000008F708F7 15块
15块也照样转换一下前四位:DC05 05DC
十六进制的05DC就是1500 1500 15.00
E803000017FD0000E803000008F708F7 10块
E803 03E8 1000 10.00
C800000037FFFFFFC800000008F708F7
C800 00C8 200 2.00
就是这样了吗?大牛们,写好了。求对不对
再算一个600块钱的
十进制的6百转成十六进制是EA60
EA60倒一下就是60EA
60EA+四个0=60EA0000
十六进制的60EA0000 NOt 一下就是 9F15FFFF
60EA0000+9F15FFFF+60EA0000+不变的08F708F7
结果就明了了
60EA00009F15FFFF60EA000008F708F7
60EA00009F15FFFF60EA000008F708F7 就是600块钱吗?
求大牛来帮助我。谢了、
刚刚看误了:不变的值是08F708F7
是不是这样推算的呢?大牛们!
各种讨论:
1#
0749orz (一头人,牵着一头牛!) | 2014-02-19 03:59
这个是群里的大牛发的,上面看懂了下面还是不懂了。
2#
伟大娃娃 (=======================) | 2014-02-19 04:33
为了那点钱被开除犯不上的.
3#
0749orz (一头人,牵着一头牛!) | 2014-02-19 04:49
@伟大娃娃 怎么能这么讲呢?做技术上的研究不可以吗?
4#
yangff | 2014-02-19 07:36
1)10进制的充值金额这个没问题吧。
2)转成16进制在前面补充0
3)把每个byte拆分开
4)把byte的顺序反过来连接得到dump,这个的意义在于 http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html
5)你框出来的东西使用FFFFFFFF减去dump值得到的,右边那个是16进制,左边的是10进制。
5#
核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2014-02-19 09:33
good jd~
每次少改点,细水长流……
6#
生生不息 | 2014-02-19 09:41
相机型号
ZTE ZTE-C N880S
拍摄日期
2014:02:16 20:25:18
......................................................
留言评论(旧系统):