首页
社区
课程
招聘
[求助]水卡的数据分析
2018-9-12 01:49 8767

[求助]水卡的数据分析

2018-9-12 01:49
8767
//23.95
23 23 3D 05 00 00 39 05 12 09 0C 9D 8B 9B 3B 6C
8E 5D 00 00 00 00 00 00 00 00 00 00 30 00 77 08

//23.92
23 23 3D 05 00 00 3A 05 12 09 0C 9D 8B 9B 3B 99 
70 5D 00 00 00 00 00 00 00 00 00 00 31 00 78 F1

//23.89
23 23 3D 05 00 00 3B 05 12 09 0C 9D 8B 9B 3B 3D
52 5D 00 00 00 00 00 00 00 00 00 00 32 00 79 DB

//23.86
23 23 3D 05 00 00 3C 05 12 09 0C 9D 8B 9B 3B 6A
34 5D 00 00 00 00 00 00 00 00 00 00 33 00 7A 3B

//26.83
23 23 3D 05 00 00 3D 05 12 09 0C 9D 8B 9B 3B CE
16 5D 00 00 00 00 00 00 00 00 00 00 34 00 7B 8F

//23.80
23 23 3D 05 00 00 3E 05 12 09 0C 9D 8B 9B 3B 3B
F8 5C 00 00 00 00 00 00 00 00 00 00 35 00 7C 50

只知道第第一段的前四组是设备号,九到十一组是消费日期
第二段的前两组是金额,然后其他就没分析出是什么,金额取反的也找半天没算出
数据貌似都是倒序排放

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2018-9-12 01:51 被哦。。。。。。编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lizhirui 2018-9-12 12:35
2
0
23 23 3D 05 设备ID
00 00 39 05 刷卡次数?取水容量mL?
12 09 0C 9D 12-年份后两位 09-月份 0C-日 9D-157 = 01:57 凌晨一点五十七分
8B 9B 3B 6C
8E 5D 00 00 金额 单位 厘
00 00 00 00 
00 00 00 00 
30 00 77 08

确定内容中不存在简单的xor校验,已经用程序遍历了所有可能性
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lizhirui 2018-9-12 12:35
3
0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 校验测试
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x39,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0x6C,0x8E,0x5D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x77,0x08};
            var data2 = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x3A,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0x99,0x70,0x5D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x78,0xF1};
            var data3 = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x3B,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0x3D,0x52,0x5D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x79,0xDB};
            var data4 = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x3C,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0x6A,0x34,0x5D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x7A,0x3B};
            var data5 = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x3D,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0xCE,0x16,0x5D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x7B,0x8F};
            var data6 = new byte[]{0x23,0x23,0x3D,0x05,0x00,0x00,0x3E,0x05,0x12,0x09,0x0C,0x9D,0x8B,0x9B,0x3B,0x3B,0xF8,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x35,0x00,0x7C,0x50};
            var list = new List<byte[]>();

            list.Add(data);
            list.Add(data2);
            list.Add(data3);
            list.Add(data4);
            list.Add(data5);
            list.Add(data6);

            //校验位遍历
            for(var i = 0;i < list[0].Count();i++)
            {
                //起点
                for(var j = 0;j < list[0].Count();j++)
                {
                    if(i != j)
                    {
                        byte r = 0;

                        for(var k = j;k < list[0].Count();k++)
                        {
                            if(i != k)
                            {
                                r ^= list[0][k];

                                //若校验成功
                                if(r == list[0][i])
                                {
                                    //检查其它数据

                                    byte rt = 0;
                                    bool flag = true;

                                    //遍历数据列表
                                    for(var m = 1;m < list.Count();m++)
                                    {
                                        //遍历待校验字节
                                        for(var p = j;p <= k;p++)
                                        {
                                            if(p != i)
                                            {
                                                rt ^= list[m][p];
                                            }
                                        }

                                        if(rt != list[m][i])
                                        {
                                            flag = false;
                                            break;
                                        }
                                    }

                                    //多次校验成功
                                    if(flag && (k > j))
                                    {
                                        Console.WriteLine("发现一处校验位:" + i + ",校验区域:" + j + " - " + k);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Console.ReadLine();
        }
    }
}
雪    币: 192
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哦。。。。。。 2018-9-12 13:23
4
0
lizhirui 23 23 3D 05 设备ID 00 00 39 05 刷卡次数?取水容量mL? 12 09 0C 9D 12-年份后两位 09-月份 0C-日 9D-157 = 01:57 凌晨一点五十七分 ...
那应该是更深层次的了
雪    币: 237
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
孤星轨迹 2019-1-21 19:03
5
0
回贴是一种美德
雪    币: 239
活跃值: (650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
只是来打酱油 2019-1-22 11:18
6
0
算出来了么
游客
登录 | 注册 方可回帖
返回