TL; DR Non, vous n'êtes pas sûr à 100%. Ou avec d'autres mots, réfléchissez-y à deux fois. ;)
N'exécutez pas d'extraits de code sans comprendre les bases. Utilisez man
pour en savoir plus sur une commande ou un programme. Utilisez Google ou un autre portail de recherche si vous ne comprenez pas. Et si vous doutez encore, n'exécutez tout simplement pas le code.
Me fais-tu confiance? Exécutez ensuite:
man man
Ok, pas dangereux, vous voyez la page de manuel de man
Mais qu'en est-il du code ci-dessous, me faites-vous confiance?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
Ne pas? Bonne idée. Décomposons le code:
perl
L'interprète de langue Perl
-MMIME::Base64
Encodage et décodage de chaînes base64
-0777ne
-0777
- Change le séparateur de ligne en undef, nous permettant de slurper le fichier, en alimentant toutes les lignes en Perl en une seule fois.
-e
- (Exécuter) est ce qui nous permet de spécifier le code Perl que nous voulons exécuter directement sur la ligne de commande.
-n
- Alimentez l'entrée Perl ligne par ligne.
'print decode_base64($_)'
- Décode une chaîne, la chaîne est enregistrée dans $_
.
"ZWNobyAnQk9PSCEnCg=="
- Et ça? Qu'est-ce que c'est?
Commençons un test.
Nous savons, c'est quelque chose comme base64 et il semble codé. Décodez donc la chaîne avec:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
Et la sortie est… ok, pas vraiment dangereuse:
echo 'BOOH!'
Maintenant, nous pouvons faire de même avec perl
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
Et la sortie est, quelle surprise:
echo 'BOOH!'
Mais était-ce dangereux? C'est dangereux:
$(…)
Cette construction exécute la sortie des commandes entre crochets.
Essayons, vous me faites confiance?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
"BOOH!"
Et de quoi s'agit-il
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
Essayez-le… Vous me faites confiance?