gpt4 book ai didi

javascript - Rsaencrypt 和奇怪的 Javascript 函数(e,t,r,n,c,a,l)

转载 作者:行者123 更新时间:2023-11-28 17:45:51 26 4
gpt4 key购买 nike

我在代码中发现了一个奇怪的脚本:

<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,'&quot;')+'"></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。

Test environment

<小时/>

所以我可以得出结论:这个脚本是一个无害的电子邮件链接加密,如果您没有任何使用此加密的链接或文本,它可能是早期版本留下的一些代码。

我没有发现任何迹象表明两个变量 n 和 e 会改变任何东西......

关于javascript - Rsaencrypt 和奇怪的 Javascript 函数(e,t,r,n,c,a,l),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com