Remover extensão dupla recursivamente adicionada por "estúpido" Crypt0L0cker ransomware

2

Estou tentando recuperar algum arquivo de um arquivo do Windows afetado por um ransomware Crypt0L0cker "estúpido". Na verdade, depois de uma verificação rápida de mover arquivos para o meu próprio sistema, parece que o malware acabou de adicionar uma segunda extensão - aleatória - aos arquivos (sim, eu sei que "extensão" não significa nada). Renomear os arquivos manualmente só funciona.

"Lista para 2016.doc.irolox" - > renomear manualmente em - > "Lista para 2016.doc"

Gostaria de ter algumas dicas para executar este fluxo de trabalho:

  • loop recursivamente em todos os subdiretórios de uma determinada pasta
  • arquivos contém espaços no nome (mas eles não contêm pontos no nome real)
  • alguns arquivos parecem não ser afetados. Regra: não os considere se eles tiverem apenas uma "extensão" (se dois pontos forem detectados - o arquivo > será afetado)
  • renomeie os arquivos removendo a última "extensão".

Alguma dica para alcançar este resultado?

    
por mattewre 13.12.2016 / 10:43

3 respostas

2

Primeiro, vá para o arquivo de pastas e execute-o:

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

isto irá procurar por todos os arquivos na pasta e em subpastas e se achar que o arquivo tem extensão de extensão, ele irá renomeá-lo apenas com a primeira extensão

por exemplo, a pasta antes do comando:

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

a pasta após o comamnd:

.
./lolo.doc
./kokooiko.doc
./jojo.doc
./soso
./soso/jojo.doc
    
por 13.12.2016 / 12:03
0

Você pode usar a substituição de variáveis como:

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

O texto acima remove a menor correspondência .* do backend do valor da variável.

Dessa forma, você pode renomear o arquivo usando:

mv "${MYVAR}" "${MYVAR%.*}"
    
por 13.12.2016 / 11:52
0

Solução

Crie um script que receberá um número arbitrário de argumentos e renomeie os arquivos removendo as extensões arbitrárias. Por exemplo,

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

O comando find a seguir transmitirá um ou mais arquivos afetados como argumentos para o rename_script.sh ( -execdir executará rename_script.sh do diretório de trabalho dos arquivos afetados). O seguinte é um exemplo.

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

NOTE: I recommend you operating on a small sample size of files to initially test. Back up the old "ransomware files" before executing this solution on all of the files.

Testado com find (GNU findutils) 4.4.2 no Debian 8 / Jessie.

Leitura adicional

  • man bash e procure Special Parameters , Parameter Expansion e Compound Commands .
  • man find e procure a opção -execdir .
por 13.12.2016 / 11:51