C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4911|回复: 69

[高级篇-逆向还原通讯协议] 玄机论坛高级篇 简易协议逆向还原算法

  [复制链接]
  • TA的每日心情
    慵懒
    2017-12-22 10:34
  • 签到天数: 82 天

    [LV.6]【武林翘楚】

    君临 发表于 2015-4-13 17:27:33 | 显示全部楼层 |阅读模式

    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    如有疑问,请加入官方群询问

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x


    常用地方:
    Socket做数据传输(硬件/软件)
    蓝牙,红外..
    起因就是老段去面试,然后遇见一个这样的面试题,
    这个关于socket的自定义协议与数据解析,会在高级篇的Socket为大家详细讲解.
    如果你明白其中的道理那很简单,第一次接触的话可能就看不懂了.
    今天用到的知识是  位移

    最简单的去杂波的算法:
    大家都知道空气中传播数据的时候都是有波段的
    来个波段图
    傅里叶变换  是个数学公式.在应用的领域很多的.
    刚才那种只是个很简单的图,但是实现起来确非常不简单.下面讲下老段这个.
    老段的面试题
    原图.png

                                  
    这种有固定格式,很好分析.
    首先,记下来他们的二进制值
    计算器,点击查看,选择程序员计算器.也可以快捷键.Alt+3.

    计算器配置1.png
    这一排标示字(bit)
    这里可以控制显示
    计算器配置2.png
    图1.png
    图2.png

    图3.png
    0001 0000
    0001 0001
    记下10和11的2进制信息.咱们来猜一下感觉怎么样才能变成22
    0001 0000     10
    0010 0010     11    是不是11 向左 – 0 然后尾巴上补一个0就行了.
    0010 0010     22
       根据10(0001 0000)  11(0001 0001) -> 22(0010 0010)
    10 10 这个不用推了吧.就是10
    推导公式
    常数110  常数211
    常数141
    那么将常数2向左移动1得出结果22
    从右向左.0开始计数和.net一样吧
        43210
    0001 0000
    Int I = 10; int x = 11;
    Res =X<<8(bit)
    计算器上怎么用呢
    LSH 左移, RSH右移
    第一组公式推出来了.下面是代码判断某个位数上的是0还是1
    //2进制
    [C#] 纯文本查看 复制代码
    Convert.ToString(x, 2)
    写个方法判断位数上的0还是1
    /// <summary>
            /// 返回字节中指定bit位的值:1 或 0
            /// </summary>
            /// <param name="pStatus">判断的参数</param>
            /// <param name="pPos">第几位</param>
            /// <returns></returns>
            public static byte GetPositionBit(UInt32 pStatus, int pPos)
            {
                                //转换高低字节
                UInt32 a = (UInt32)(1 << (pPos + 1));
                UInt32 b = (UInt32)(1 << pPos);
                if (pStatus % a >= b)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
    下面推第二个
    还是一样.记下他们的二进制表示
    0100 0000
    0100 1000
    0000 0100
    X = 10(0001 0000) y =12(0001 0010) Z=4(0000 0100)
    算了都被看见了我直接说吧.
    对于这种,常数1 和常数2在高位相同,低位少许不同的时候,
    0010 高 0000 低
    而结果值只在低位显示的时候
    那么一般会让他们同时向左移动1位.
    然后两个常数相减.显然是y-x
    千万不能这么算.直接去操作加减了.一定要记得还得位移.
    代码可以写成
    Res=((y<<8)-(x<<8)) 也可以是(y-x)<<8

    推导这个公式的时候不能单纯的用位移了.
    先将y左移1,然后减去x左移一位
    Y<<8 = 24  x<<1=20
    Res=((y<<8)-(x<<8))
    结果就是0x4

    这就是推导公式.如何带入到图里.
    1位等于8bit

    计算的时候得这么算
    先去除 20 23
    剩余 01 10 12 10 10 14 23 10 12 22
    开始做比较
    01 10 没有算法那就保留数据
    10 12 ->04
    12 10 ->也保留,也可以不保留.如果解密的函数很严格,就是 一个10 然后一个12 才解4 那么久不能转换 先用?代替
    10 10
    10 14
    14 23
    10 12
    01 10 04 10 14 14 23 04 12 22
    看它解密的数据
    01 04 10 14 23 04 22
    咱们多了个10 ,14 12 都是多出来的.那么说明不是这样判断的.先假定他判断的方法再算一遍
    然后
    01 10 12 10 10 14 23 10 12 22
    01 10  01
    10 12  04
    12 10  ? 10
    10 10  10
    10 14  14
    14 23  23
    23 10
    10 12  04
    12 22
    01 04 10 14 23 04 22
    得出的结果现在就推算完了.至于后续的演算部分就是参照给出的解密过程来忽略比如23 10 为啥得到了一个23
    10 14 为啥得到了一个14
    不给你们答案,自己按照思路去推算,你会发现有一样的东西,然后自己还可以推出来一条计算公式
    Xx oo => xx
    Have Fun ..
    再见
    2015-4-13 15:52:08
    配套视频地址:

    游客,如果您要查看本帖隐藏内容请回复


    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复

    使用道具 举报

    该用户从未签到

    lilina 发表于 2015-4-13 19:34:16 | 显示全部楼层
    嘿嘿,这个帖子要回复看看!!...
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    mmgx2015 发表于 2015-4-13 20:04:26 | 显示全部楼层
    下载学习,多谢大R
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-3-7 10:46
  • 签到天数: 4 天

    [LV.2]【绿林好汉】

    inghot 发表于 2015-4-13 23:29:41 | 显示全部楼层
    下午看那个WORD文档压根就看不懂。
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    shteach001 发表于 2015-4-13 23:29:55 | 显示全部楼层
    哇咔咔,感谢分享,老大
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-12-22 10:34
  • 签到天数: 82 天

    [LV.6]【武林翘楚】

     楼主| 君临 发表于 2015-4-13 23:33:23 | 显示全部楼层
    不能回复吗?
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-8 15:14
  • 签到天数: 1 天

    [LV.1]【初入江湖】

    root 发表于 2015-4-13 23:44:03 | 显示全部楼层
    开始玩socket了。。
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-2-4 12:54
  • 签到天数: 26 天

    [LV.4]【醉卧红尘】

    暗鹰 发表于 2015-4-14 17:28:08 | 显示全部楼层
    好高级。。。。
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复

    使用道具 举报

    该用户从未签到

    loveisbug 发表于 2015-4-16 00:16:46 | 显示全部楼层
    这个不错唉
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    呵呵 发表于 2015-4-28 22:15:43 | 显示全部楼层
    这么深奥、、、、、、、、、、、、、
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复 支持 反对

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    QQ|Archiver|手机版|小黑屋|玄机论坛   

    GMT+8, 2018-5-25 07:24 , Processed in 0.807962 second(s), 29 queries .

    Powered by Msdn5.com

    © 2014-2015 Msdn5 Inc.

    快速回复 返回顶部 返回列表