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

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

查看: 11447|回复: 72

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

  [复制链接]
君临 发表于 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进制
[mw_shl_code=csharp,true]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;
            }
        }[/mw_shl_code]
下面推第二个
还是一样.记下他们的二进制表示
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/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

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

QQ|玄机论坛

GMT+8, 2020-10-22 00:42 , Processed in 0.175903 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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