• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

JavaScript隐写术-掩盖隐形的斗篷

JavaScript rin, seun 1年前 (2020-06-15) 390次浏览 0个评论

隐写术。在鼻子下藏东西的艺术。只要人类还活着,我们就一直试图隐藏事物-无论是我们的最后一块披萨还是埋藏的宝藏。您还记得酷炫的隐形柠檬墨水技巧吗?我们会在其中写上柠檬的秘密信息,然后加热纸张以揭示重要秘密?简而言之,隐秘术就是这样,它使我们可以通过隐藏消息的存在来轻松隐藏消息。

1900年代初期,德国间谍以贸易的名义渗透了法国公民。但是,他们的目的是观察法国国防系统的细节,并帮助德国人入侵法国。精心设计的法国国防系统甚至在每个地区都保持最高的机密性,使一个间谍很难收集所有信息。这需要多个间谍来收集每个区域的信息并共同设计他们的游戏计划。为了安全起见,必须在当天才与会场进行交流,但是会议如何在一天之内到达所有区域?他们选择了报纸,但速度很快,但公共渠道却很不安全!但是德国人已经想到了这一点,他们在当天的天气报告中发布了秘密聚会地点。

JavaScript隐写术-掩盖隐形的斗篷

拿每个单词的第一个字母以及我们能得到什么-会议地点

“ New Rue des Thermopyles Heil Hitler” !。

那时是不可见墨水,现在是不可见字符。

在信息时代,最重要的交流场所是互联网。诸如Messenger,Whatsapp,iMessage之类的消息传递应用程序,以及Twitter,Facebook,Instagram等社交媒体。我们如何在这里应用相同的问题并立即解决?好吧,我们可以从零宽度的‌字符开始。

“复制我‌‌‌‌‌”-将引号粘贴到  https://www.textmagic.com/free-tools/unicode-detector中,  以查看ZWC始终隐藏在您面前。

零宽度字符是非打印字符,是Unicode表的一部分。顾名思义,他们甚至不展示自己的存在。它们用于启用长行换行,连接表情符号,将两个字符组合成连字,阻止它们联接等。

JavaScript隐写术-掩盖隐形的斗篷

字符  zwj 加入了表情符号,但不可见

这些角色越来越多地在文本隐藏中找到了自己的方式,它们的完全隐形性是一个了不起的卖点。由于它们在多种语言和表情符号中不可或缺,因此无法阻止它们。而且,事实证明,ZWC并不是唯一不可见的字符,例如。看不见的分隔符— U + 2063。

JavaScript隐写术-掩盖隐形的斗篷

包含最常用的不可见字符的表。

这个桌子有一个小问题 Gmail会阻止U + 200B(零宽度空格)。更不用说,Twitter以将不必要的不​​可见字符列入黑名单而闻名,除U + 200C,U + 200D和U + 180e之外,表中的所有字符均不起作用。现在我们有了三个字符!

JavaScript隐写术-掩盖隐形的斗篷

哦,等等,U + 180e不是不可见的,并且在iOS设备上呈现异常。现在我们只有2个字符。

拆开Unicode表,测试每个可能的不可见字符的跨平台/网络不可见性,我们可以向我们的军械库中再添加4个字符,总共6个不可见字符,我们现在可以使用它们来隐藏字符串中的秘密。

常量 ZWC =  [ ''  ''  '⁠'  '⁢'  '⁣'  '⁤' ]  // 200C,200D,2060,2062,2063,2064数字等效隐形墨水
JavaScript隐写术-掩盖隐形的斗篷

现在要使用不可见的墨水,我们需要做的是一个秘密的“ hi”,我们需要用二进制表示它,即01101000011010001。然后取4ZWC并将它们映射到两位真值表,即00-200c ,01-200d,10-2060,2062-11。使用真值表将二进制文件转换为不可见的流,并将其嵌入任何地方的任何封面消息中。

加密隐藏内容

如果入侵者以某种方式检测到隐藏字符的存在并试图强行迫使真相表破解秘密,该怎么办?

这是  Kerckhoff的原理  所在:

理想的密码系统应该是安全的,即使有关系统的所有内容(除了密钥之外)都向公众公开。

因此,我们需要某种密钥来锁定我们的秘密。为此,可以使用基于密码的密钥生成功能来生成一个强大的密钥,该密钥又可以用来加密我们的消息。具有随机IV和盐值的AES-CTR流密码可用于加密隐藏的秘密,因为它具有不像块密码那样不需要填充的附加优点,因为它增加了消息的长度。

JavaScript隐写术-掩盖隐形的斗篷

压缩

既然我们在加密方面做了大量工作,我们肯定需要最大的压缩率。

JavaScript隐写术-掩盖隐形的斗篷
JavaScript隐写术-掩盖隐形的斗篷

如您所见,即使我们有六个ZWC字符,也仅使用了4个字符,因为6不是2的幂。另外两个字符(U + 2063,U + 2064)可以用来做一层额外的抽象霍夫曼压缩减少冗余。将机密转换为ZWC后,将确定流中两个重复最多的ZWC,例如U + 200D和U + 2060。现在,每两个连续出现的U + 200D和U + 2060可以替换为一个U + 2063或U + 2064。由于经常观察到冗余,因此可以节省很多。

现在,我们有两个压缩层,可以充分利用6个不可见字符!太棒了!

因此,结合所有这些,我的两个朋友和我构建了StegCloak,这是一个纯JavaScript隐写模块,以功能编程风格设计,以实现上述目的。

喜欢 (1)

您必须 登录 才能发表评论!