0x00 信息内容安全实验报告

【实验目的】

了解格式化文件信息隐藏的特点,掌握如何利用HTML语言的特征来隐藏秘密信息,实现基于HTML语言的信息隐藏。

【实验环境】

(1) WindowsXP或 Vista 操作系统;

(2) Ultra Edit编辑工具;

(3) IE浏览器。

【原理简介】

HTML即超文本标记语言,是设计网页的基本语言。HTML语言由普通文本文件加上各种标记组成,没有图像、音频文件等所拥有的感觉冗余和多媒体数据冗余,在HTML语言中隐藏信息,要保持不可见性和抗攻击能力都很困难。目前商品化的HTML隐藏技术都是通过在HTML文件的回车换行符之前加入一些不可显示标记符号来实现。本实验中提出的HTML隐藏的方法主要是通过HTML语法特点来隐藏信息,常见方法有以下五种。

(1) 利用浏览器在解析HTML程序时会忽略掉行尾或HTML结束标记后的空白符号,不会影响浏览器的显示结果的特点来隐藏信息。在网页结束标记</HTML>后每行的行尾插入空格或Tab键隐藏信息,例如插入一个空格代表隐藏0,插入一个Tab代表隐藏1。

(2) 修改标记名称字符的大小写来隐藏信息。如用大写标记名称代表隐藏1,用小写标记名称代表隐藏0。这样,一个标记名称可隐藏1bit信息。

(3) 修改属性值字符串的大小写来隐藏信息。属性值字符串对大小写不敏感,如用属性字母的大写代表隐藏1,小写代表隐藏0。

(4) 用属性值用单引号、双引号或者不使用引号都可以表达相同含义的特点隐藏信息,如用双引号代表隐藏1,单引号代表隐藏0。

(5) 用单标记具有两种等价格式的特点来隐藏信息。如标记<BR>等价于<BR/>,可用<BR>代表隐藏1,<BR/>代表隐藏0。类似的标记还有<HR>=<HR/>,<IMG>=<IMG/>等。这样的一个标记可隐藏1bit信息。


本次实验笔者采用的是第一种方法,即在每行的行尾插入空格或Tab键隐藏信息。代码逻辑和结构与前面的实验 LSB 图像隐写基本一致。

0x01 Hide

如果用 ASCII 表示一个字母,隐写一个字母需要 7 或 8 个比特位。而用 1-26 表示一个字母,隐写一个字母仅需要 5 个比特位。鉴于 HTML 文件的行数一般不会太多,而该方法一行仅能隐写一个比特,所以笔者在这里摒弃了传统的 ASCII 表示方式,采用 1-26 的表示方式完成了对于大写字母的隐写。

def write_hide(i):obj = open("hide.txt","a+",encoding="UTF-8")obj.write(i + "\n")obj.close()def str2int(message):string = ""for i in message:string = string + bin(ord(i) - 64).replace('0b','').zfill(5)return stringdef hide():count = flag = 0message = input('Please in put the message:')string = str2int(message)#print(string)with open("html.txt","r",encoding="UTF-8") as f:for i in f.readlines():i = i.strip()if count == len(string):write_hide(i)else:if int(string[flag]) == 0:i = i + " "count = count + 1flag = flag + 1elif int(string[flag]) == 1:i = i + "\t"count = count + 1flag = flag + 1write_hide(i)

首先从网上随便copy一份html代码,自行填充或缩减代码至所需行数后保存为html.txt:

将脚本与html.txt置于同一目录下运行:

成功生成hide.txt:

0x02 Extract

def write_extract(i):obj = open("extract.txt","a+",encoding="UTF-8")obj.write(i)obj.close()def extract():string = ""count = 0with open("hide.txt","r",encoding="UTF-8") as f:for i in f.readlines():if count == 5:count  = 0string = chr(int(string,2) + 64)write_extract(string)string = ""i = i.strip("\n")if i[-1] == " ":string = string + "0"count = count + 1if i[-1] == "\t":string = string + "1"count = count + 1

将脚本与hide.txt置于同一目录下运行:

成功生成extract.txt:

0X03 The_fu11_scr1pt

def write_hide(i):obj = open("hide.txt","a+",encoding="UTF-8")obj.write(i + "\n")obj.close()def write_extract(i):obj = open("extract.txt","a+",encoding="UTF-8")obj.write(i)obj.close()def str2int(message):string = ""for i in message:string = string + bin(ord(i) - 64).replace('0b','').zfill(5)return stringdef hide():count = flag = 0message = input('Please in put the message:')string = str2int(message)#print(string)with open("html.txt","r",encoding="UTF-8") as f:for i in f.readlines():i = i.strip()if count == len(string):write_hide(i)else:if int(string[flag]) == 0:i = i + " "count = count + 1flag = flag + 1elif int(string[flag]) == 1:i = i + "\t"count = count + 1flag = flag + 1write_hide(i)def extract():string = ""count = 0with open("hide.txt","r",encoding="UTF-8") as f:for i in f.readlines():if count == 5:count  = 0string = chr(int(string,2) + 64)write_extract(string)string = ""i = i.strip("\n")if i[-1] == " ":string = string + "0"count = count + 1if i[-1] == "\t":string = string + "1"count = count + 1def main():mode = input("Please input the mode:")if mode == 'hide':hide()if mode == 'extract':extract()if __name__ == '__main__':main()

0x04 Summary

将html.txt改为html.html,将hide.txt改为html.html,open两者进行比较:

证实该隐写方法不会影响浏览器的显示结果。

如果不对文件进行utf-8编码,则会导致html乱码:

HTML 信息隐藏与提取相关推荐

  1. matlab信息隐藏和提取,使用matlab进行图像信息隐藏和提取

    基于格式的信息隐藏方法通常在文件头与图像数据之间,或图像数据末尾添加秘密信息,具有实现简单,透明性高,隐藏容量大等多个优点:LSB图像信息隐藏算法是将秘密信息隐藏在图像像素数据的低位上来隐藏信息的方法 ...

  2. LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

    实验二LSB信息隐藏实验.doc 实验二LSB信息隐藏实验 综合评分: [实验目的]: 掌握MATLAB基木操作 实现LSB信息隐藏和提取 [实验内容]:(请将你实验完成的项11涂"■&qu ...

  3. matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法

    <实验四--基于DCT域的信息隐藏算法>由会员分享,可在线阅读,更多相关<实验四--基于DCT域的信息隐藏算法(6页珍藏版)>请在人人文库网上搜索. 1.实验四 基于DCT域的 ...

  4. 信息隐藏技术与应用期末复习

    第一章 什么是信息隐藏? 信息隐藏是将秘密信息隐藏到一般的非秘密的数字媒体文件中,从而不让对手发觉的一种方法. 信息隐藏的应用领域: 数据保密 数据的不可抵赖性 数字作品的版权保护 防伪 数据的完整性 ...

  5. JSteg信息隐藏算法

    目录 实验环境 系统设计 JSteg信息隐藏算法 JSteg信息隐藏算法替换规则 嵌入算法 提取算法 JSteg信息隐藏算法缺陷分析 系统实现 嵌入算法 JSTEG_simulation.m steg ...

  6. Matlab-LSB信息隐藏实验

    一.实验内容 实验完成形式:  用MATLAB函数实现LSB信息隐藏和提取 实验选择载体:  512×512灰度图像 实验效果和分析:  1.完成基本的LSB信息隐藏及提取 2.能随机选择嵌入位进行信 ...

  7. 数字水印实验2 基于LSB和EMD的信息隐藏实验

    [实验名称]基于LSB和EMD的信息隐藏实验 [实验目的] 1.学习并掌握图像信息隐藏的基本原理和方法 2.学习并实现基于LSB的信息隐藏和提取算法 3.学习并实现基于EMD的信息隐藏和提取算法 [实 ...

  8. [数据加密]GIS空间数据水印信息隐藏与加密技术方法[转]

    到目前为止,国内外数字水印技术的研究主要集中在图像.视频和声音等多媒体信息的版权保护上,在GIS空间数据中,通过隐藏水印信息并对其加密.压缩以实现其安全保护的研究还很少,这是数字水印技术应用的一个新领 ...

  9. 信息隐藏将txt文件合并到jpg文件中_使用Kali Linux在图像内隐藏机密消息—可在任何Linux发行版使用

    欢迎回到"Esn技术社区"!今天,我们将演示如何使用Steghide(一种可在Kali Linux上使用的流行隐写工具)在图像内隐藏消息. 在计算机科学中,将信息隐藏在文件内(例如 ...

最新文章

  1. php简单创建多级目录
  2. 前端入门:快速开发基于 HTML5 网络拓扑图应用
  3. 生日祝福(HTML+CSS+JavaScript+jQuery)
  4. HDU 3549 Flow Problem
  5. 二阶传递函数的推导及几种求解方法的比较
  6. C语言中要改变循环语句的流程可以使用的语句有哪些
  7. DHCP服务器的设计
  8. JS - JSON对象与JSON字符串相互转换的几种方法
  9. 计算机降序符号,rank函数降序排名
  10. Oracle数据库分页查询的几种实现方法
  11. 索引深入浅出(6/10):选择正确并合适的聚集索引键
  12. MAX5内存盒给至强松绑 IBM X5架构继往开来
  13. html js获取本地ip,在js获取本地IP地址
  14. php图片幻灯片代码,解决phpcms更换javascript的幻灯片代码调用图片问题
  15. 版本号后面的字母含义
  16. 滤波器原理及其作用计算机网络,滤波器的原理与作用
  17. HDU 4372 Count the Buildings [第一类斯特林数]
  18. 百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统...
  19. 有关于进程,线程and协程
  20. oracle表数据导出成unl文件,oracle的文本导入、导出技巧

热门文章

  1. PHP学习案例9 双色球
  2. 4、Shiro之IniRealm以及用户登录认证,角色认证,权限认证
  3. 如何把SQL表格发给别人直接使用
  4. 用MATLAB画nyquist图时,怎样只花出一半的图?
  5. qt qml 界面程序 适配4K屏幕 简单方法
  6. 程序员进阶!阿里P7级别面试经验总结,深度好文
  7. 蚂蚁借“链”上位,BAT谁将成数字经济领跑者?
  8. 改变网changeself.com,记录着改变生活、改变态度、改变思维方式、改变特质、改变行为方式,一切从改变自己身上的特质开启
  9. c语言错误L104,KEILC51编译问题ERROR L104
  10. 用树莓派学Linux(三)--------SSH端口转发,跳出局域网的树莓派控制