해결책

해결책

"멍청한" Crypt0L0cker 랜섬웨어의 영향을 받은 Windows 아카이브에서 일부 파일을 복구하려고 합니다. 실제로 파일을 내 시스템으로 이동한 것을 빠르게 확인한 후 악성 코드가 파일에 두 번째 무작위 확장자를 추가한 것으로 나타났습니다(예, "확장자"는 아무 의미도 없다는 것을 알고 있습니다). 수동으로 파일 이름을 바꾸면 문제가 해결됩니다.

"2016.doc.irolox 목록" -> 수동 이름 바꾸기 -> "2016.doc 목록"

이 워크플로 실행에 대한 몇 가지 팁을 알고 싶습니다.

  • 특정 폴더의 모든 하위 디렉터리를 반복적으로 반복합니다.
  • 파일 이름에 공백이 포함되어 있습니다(실제 이름에 점이 포함되어 있지 않음).
  • 일부 파일은 영향을 받지 않은 것으로 보입니다. 규칙: "확장자"가 하나만 있는 경우에는 고려하지 마세요(따라서 점이 2개 감지되면 -> 파일이 영향을 받습니다).
  • 마지막 "확장자"를 제거하여 파일 이름을 바꿉니다.

이런 결과를 얻을 수 있었던 비결이 ​​있나요?

답변1

먼저 폴더 아카이브로 이동하여 다음 명령을 실행하십시오.

find | awk -F'.' '{if ($3 != "" && $4 != "" ){system("mv "$0" ./"$2"."$3)}}'

이렇게 하면 폴더와 하위 폴더에 있는 모든 파일을 찾고, 두 개의 확장자가 발견되면 첫 번째 확장자만 사용하여 이름을 바꿉니다.

예를 들어, 명령 앞의 폴더는 다음과 같습니다.

.
./lolo.doc
./soso
./soso/jojo.doc.koko.momo
./kokooiko.doc.soso
./jojo.doc.koko

명령 뒤의 폴더:

.
./lolo.doc
./kokooiko.doc
./jojo.doc
./soso
./soso/jojo.doc

답변2

예를 들어 다음과 같이 변수 대체를 사용할 수 있습니다.

MYVAR="List for 2016.doc.irolox"
echo ${MYVAR%.*}

위의 내용은 .*변수 값의 백엔드에서 가장 짧은 일치 항목을 제거합니다.

이렇게 하면 다음을 사용하여 파일 이름을 바꿀 수 있습니다.

mv "${MYVAR}" "${MYVAR%.*}"

답변3

해결책

원하는 수의 인수를 사용하고 파일 이름을 바꾸고 확장자를 제거하는 스크립트를 만듭니다. 예를 들어,

cat > /tmp/rename_script.sh <<'EOF'
#!/bin/bash
while [ $# -gt 0 ]; do
  mv "$1" "${1%.*}"
  #alternatively to strip multiple extensions
  #mv "$1" "${1%.doc.*}.doc"
  shift
done
EOF
#enable execute perms
chmod 755 /tmp/rename_script.sh

다음 find명령은 영향을 받는 하나 이상의 파일을 인수로 전달합니다 rename_script.sh(영향을 받는 파일의 작업 디렉터리에서 실행됩니다 -execdir). rename_script.sh아래는 예시입니다.

find /path/to/affected/dir -type f -name '*.doc.*' -execdir /tmp/rename_script.sh {} +

노트:예비 테스트를 위해 작은 샘플 파일로 작업하는 것이 좋습니다. 모든 파일에 대해 이 솔루션을 수행하기 전에 이전 "랜섬웨어 파일"을 백업하십시오.

find (GNU findutils) 4.4.2Debian 8/Jessie에서 테스트되었습니다.

추가 독서

  • man bashSpecial Parameters, Parameter Expansion, 및 를 찾습니다 Compound Commands.
  • man find그리고 옵션을 찾아보세요 -execdir.

관련 정보