- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在代码中发现了一个奇怪的脚本:
<script type="text/javascript">
n = 'D70ED106DEF035D7DB732C7C0B91F403B6C4A7F2FD5581483A700202482EF829302ED828F68AAAAC093AEFEB64B51882FD3AF350394182AD3E09D3C4FCA1D326A28F4D21759755130B8BB529F5A395DE829B13B070FCCCD507EDA5623EC22B91E080F35AC48E8A4EFD1BB64A1B79BEEF9A325598C430F5D8475297705B727BDD8E5CE1CDFF3BBE8D860B673CDB37681F82D9CF9DDE9E40E638B24E47DBBA9775410B1C0717B3B45F021AB4B633E2CE314DEA93576F318F671AB36509C0936FB7C5108324617D6EFD83B8369C75B7F7743A78E8CC98872C4FF1D83BFC0B7892F20BB869AC9185D82AA6D601F2036F18698661994EE02FDE7EDF6850C09EF05A445A965B4DC5B59CCCF3EB04F8B9AF5895DB7246F24546E34382A4CC221D3C680465906AB38DA8C13CAB72217B2145391E9A446A18116AF05F4DA10632E5C1F1A65DCE313E7DD081C2D374254CE2FD717B0EB346B2B8DD58487C3553398F6EABB816A6A4F1FA94BAE116EEEEC1EAABF4067A2D9B9C02275B61BC3FFB9F324BC0788E941120E772FACE5B16C46B4830DB0E842D1495385AA299D682E2981DF0B952A3B41CCA3DE2FEDD3C70AF63B57303B24F731F1C422D59701C25FEFE47D67CBC72EADD82D23B0374EEE5787D66DC15D68F873FE0BC49347274DF40B047D00BCB7E4068FDAAB74497F5A606AA1E67ED13A30C851AFF014A4F1C7DB9AB629BB693';
e = '010001';
</script>
<script>!function(e,t,r,n,c,a,l){function i(t,r){return r=e.createElement('div'),r.innerHTML='<a href="'+t.replace(/"/g,'"')+'"></a>',r.childNodes[0].getAttribute('href')}function o(e,t,r,n){for(r='',n='0x'+e.substr(t,2)|0,t+=2;t<e.length;t+=2)r+=String.fromCharCode('0x'+e.substr(t,2)^n);return i(r)}try{for(c=e.getElementsByTagName('a'),l='/cdn-cgi/l/email-protection#',n=0;n<c.length;n++)try{(t=(a=c[n]).href.indexOf(l))>-1&&(a.href='mailto:'+o(a.href,t+l.length))}catch(e){}for(c=e.querySelectorAll('.__cf_email__'),n=0;n<c.length;n++)try{(a=c[n]).parentNode.replaceChild(e.createTextNode(o(a.getAttribute('data-cfemail'),0)),a)}catch(e){}}catch(e){}}(document);</script></script>
n 值会随着每次页面重新加载而变化。
我从自由职业者那里得到了我的网页模板,首先想在发布之前检查它,这对我来说很奇怪,因为我无法在 data-cfemail
或 .__cf_email__< 等代码中找到属性
也没有类似 /cdn-cgi/l/email-protection#
请告诉我它有什么作用?它可能是恶意的吗?必须测试它的作用吗?
最佳答案
代码开头为
e /*document*/ .getElementsByTagName('a')
因此它获取页面上的所有链接,迭代它们以及链接是否包含
/cdn-cgi/l/email-protection#
然后就可以了:
a.href='mailto:'+o(a.href,t /*the position of the upper inside the link*/+l.length /*the length of the upper*/)
代码中还有另一个循环进行迭代
e.querySelectorAll('.__cf_email__')
并将这些元素文本替换为:
o(
a /* one of the upper elems*/ .getAttribute('data-cfemail'),
0
)
所以有趣的其实是神秘的o函数。它迭代传递的字符串并转换 2 字节对:
String.fromCharCode( '0x'+e.substr(t,2) /*the pair*/^n );
而 n 是:
n='0x'+e.substr(t,2)|0
所以基本上它根据前两个字节进行异或运算。所以这个:
A1 B2 C3 D4
将导致
B2 ^ A1
C3 ^ A1
D4 ^ A1
然后使用一个小技巧将该结果缩短为动态 url,然后返回。所以基本上这是某种电子邮件保护,它使用非常基本的异或加密来加密内容。就是这样。
<小时/>要测试该行为,只需将链接放入您的内容中,链接到:
//the start link we need:
/cdn-cgi/l/email-protection#
//the xor encryption disabler as ( a ^ 0 = a)
00
//test@example.com in hex
74657374406578616d706c652e636f6d
您将看到它链接到 test@example.com。
<小时/>所以我可以得出结论:这个脚本是一个无害的电子邮件链接加密,如果您没有任何使用此加密的链接或文本,它可能是早期版本留下的一些代码。
我没有发现任何迹象表明两个变量 n 和 e 会改变任何东西......
关于javascript - Rsaencrypt 和奇怪的 Javascript 函数(e,t,r,n,c,a,l),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744009/
我在代码中发现了一个奇怪的脚本: n = 'D70ED106DEF035D7DB732C7C0B91F403B6C4A7F2FD5581483A700202482EF829302ED828F68AA
我一直在将 .NET 用于加密目的。到目前为止,我将 3DES (Oid 1.2.840.113549.3.7) 与 rsaEncryption (Oid 1.2.840.113549.1.1.1,
我是一名优秀的程序员,十分优秀!