哈夫曼编码的shellcode

哈夫曼编码的shellcode

ID:17386167

大小:120.28 KB

页数:20页

时间:2018-08-30

哈夫曼编码的shellcode_第1页
哈夫曼编码的shellcode_第2页
哈夫曼编码的shellcode_第3页
哈夫曼编码的shellcode_第4页
哈夫曼编码的shellcode_第5页
资源描述:

《哈夫曼编码的shellcode》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、哈夫曼编码的shellcode初次见到“shellcode”的时候,感觉非常高大上,其实接触久了之后你会发现它实际上只是一段代码(也可以是填充数据),是一种用来发送到服务器利用特定漏洞的针对性代码,一般可以利用它获取一定的权限。今天我们将共同学习一种新的shellcode编码方式——Huffy,即基于哈夫曼编码的shellcode,这种方式利用哈夫曼树压缩数据的特性来对shellcode进行数据压缩,以达到“短小精悍”的目的。哈夫曼树因为这种方法叫做Huffy,并且最近我刚刚解决了一个有关哈夫曼树的问题,所以首先我想到的就是哈夫曼树。如果你还不知

2、道什么是哈夫曼树,那我就在这里简单提一下。哈夫曼树是一种相当简单的数据结构,它可以用来进行数据压缩。哈夫曼树的建立是通过读取输入的内容,然后创建一棵树,出现频率最高的字符靠近树的顶部,而频率最低的字符靠近树的底部。为了压缩数据,它会遍历整个树以生成编码位(左边的编码为0,右边的编码为1)。一个字符越靠近树的顶部,那么该字符编码之后所用的位数越少,这也被称为“前缀码”,这是一种非常简洁的属性,该属性意味着没有编码的位串会作为另一个位串的前缀(换句话说,当你阅读二进制位流的时候,你就能立刻知道解码该字符何时结束)。例如下面的哈夫曼树:通过该哈夫曼树,

3、我们就能知道它来自一个包含9个字符的文本,其中有5个字符是字母“o”,3个字符是字母“d”,1个字符是字母“g”。所以,当你用该树压缩数据时,你可以将单词“dog”作如下处理:d=00(左左)o=1(右)g=01(左右)所以,“dog”将会编码成位流“00101”。如果你看到以位流“01100”表示的字符串,你就可以按照上面哈夫曼树来解码:左右(g)、右(o)、左左(d),所以解码得到该字符串内容为“god”。如果在一个字符串中所有字符的数目都相同,并且不同字符的种类数是2的整数幂(例如:“aabbccdd”中,不同字符的种类数为4,即2的平方)

4、,你就需要通过一个平衡的哈夫曼树来表示。例如,字符串“aaabbbcccddd”的表示将会是如下形式的哈夫曼树:通过查找上图中的哈夫曼树可知,字符串“abcd”将会编码成“00011011”。哈夫曼树的这种特性非常重要。程序分析当你运行程序时,它将提示你输入,在你输入相应内容之后,它将输出一堆毫无意义的东西(尽管输出使我们理解变得简单多了)。可以看下这个例子:$ echo 'this is a test string' 

5、 ./huffyCWD: /home/ron/gits2015/huffyNibble  Frequency------  -

6、--------0       0.1136361       0.0227272       0.1136363       0.0909094       0.0909095       0.0227276       0.1818187       0.2272738       0.0227279       0.068182a       0.022727b       0.000000c       0.000000d       0.000000e       0.022727f       0.000000Read 22 byte

7、sTwo lowest frequencies: 0.000000 and 0.000000Two lowest frequencies: 0.000000 and 0.000000Two lowest frequencies: 0.000000 and 0.000000Two lowest frequencies: 0.000000 and 0.022727Two lowest frequencies: 0.022727 and 0.022727Two lowest frequencies: 0.022727 and 0.022727Two l

8、owest frequencies: 0.022727 and 0.045455Two lowest frequencies: 0.045455 and 0.068182Two lowest frequencies: 0.068182 and 0.090909Two lowest frequencies: 0.090909 and 0.113636Two lowest frequencies: 0.113636 and 0.113636Two lowest frequencies: 0.159091 and 0.181818Two lowest 

9、frequencies: 0.204545 and 0.227273Two lowest frequencies: 0.227273 a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。