零宽度字符水印隐藏技术
零宽度字符是隐藏不显示的,也是不可打印的,也就是说这种字符用大多数程序或编辑器是看不到的。最常见的是零宽度空格,它是 Unicode 字符空格,就像如果在两个字母间加一个零宽度空格,该空格是不可见的,表面上两个字母还是挨在一起的。就比如说,我在这句话中插入了 10 个零宽度空格,你能看到吗?(For example, I've inserted 10 zero-width spaces into this sentence, can you tell?)
介绍
在 fb 上看到了一个很有意思的文章
大意是,可以通过零宽度字符来隐藏一些信息,达到一些目的,比如隐写,或者水印。某种程度上来说,我们这里所说的零宽度字符可作为识别某些用户身份的“指纹”数据,也可非常方便地追溯到某些秘密数据的泄露源。
我的实现是把要隐藏的信息转为 bin,然后 1
替换为 e2808b
,0
替换为 e2808c
然后分别插到载体消息中的每一个字符后面。若载体消息短于隐藏信息的二进制,那就把多余的都塞到载体消息的最后一个字符前面,这样在复制的时候不至于掉少一些隐藏字符
还原的代码很简单,一看就知
代码
- By:tr0y.wang
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论