TL; DR Não, você não é 100% seguro. Ou com outras palavras, pense duas vezes. ;)
Não execute trechos de código sem entender o básico. Use man
para saber mais sobre um comando ou um programa. Use o Google ou outro portal de pesquisa se você não entender. E se você ainda duvida, simplesmente não execute o código.
Você confia em mim? Então corra:
man man
Ok, não é perigoso, você vê a página de manual de man
Mas e o código abaixo, você confia em mim?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
Não? Boa ideia. Vamos detalhar o código:
-
perl
O intérprete de linguagem Perl
-
-MMIME::Base64
Codificação e decodificação de strings base64
-
-0777ne
-0777
- Altera o separador de linha para undef, permitindo que nós façamos "slurp" no arquivo, alimentando todas as linhas para Perl de uma só vez.-e
- (execute) é o que nos permite especificar o código Perl que queremos executar na linha de comando.-n
- Alimente a entrada para Perl linha por linha. -
'print decode_base64($_)'
- Decodifica uma string, a string é salva em$_
. -
"ZWNobyAnQk9PSCEnCg=="
- E isso? O que é isso?
Vamos começar um teste.
Nós sabemos, é algo como base64 e parece codificado. Portanto, decodifique a string com:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
E a saída é ... ok, não é realmente perigosa:
echo 'BOOH!'
Agora, podemos fazer o mesmo com perl
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
E a saída é, que surpresa:
echo 'BOOH!'
Mas isso era perigoso? Isso é perigoso:
$(…)
Esta construção executa a saída dos comandos nos parênteses redondos.
Vamos tentar, você confia em mim?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
'BOOH!'
E o que acontece com
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
Experimente ... Você confia em mim?