Je lisais l'avertissement du forum Ubuntu sur les commandes malveillantes et j'ai trouvé ce joyau intéressant:
:(){ :|:& };:
AVERTISSEMENT: Le code ci - dessus va planter votre machine si vous avez des limites strictes de proc en place (que vous ne probablement pas) incitant un disque redémarrage.
Considérez ce code similaire à l'exécution
sudo rm -rf /
.
Mais qu'est ce que ça veut dire? Même avec mon expérience de programmation, je n'ai jamais vu de commande aussi cryptique que ce n'est pas un langage d'assemblage.
sudo rm -rf /
. Cette commande supprime tous vos fichiers; celui-ci obstrue simplement les ressources de votre machine jusqu'à ce qu'elle devienne inutilisable et que vous deviez redémarrer.sudo rm -rf /
c'est plus dangereux, mais j'ai vu des gens exécuter cela sur des serveurs distants "je voulais juste voir ce qu'il faisait" où vous avez du mal à redémarrer sans avoir accès à un panneau de contrôle.arbitrary_name(){ arbitrary_name|arbitrary_name& };arbitrary_name
. Le nom:
rend non seulement cette commande courte et cryptique, mais transforme également une fonction:
intégrée qui ne fait rien en une fonction qui en fait beaucoup . Si vous glissez sa définition:(){ :|:& }
dans l'environnement de quelqu'un d'autre et la laissez y rester, elle frappera lorsque la victime l'attendra le moins .Réponses:
C'est, comme vous l'avez dit, une fourchette. Ce qu'il fait, c'est définir une fonction, puis l'appeler. La fonction est appelée
:
.Appelons-le
forkbomb
pour mieux voir ce qui se passe:Comme vous pouvez le voir et probablement deviner à partir de votre expérience de programmation, la première partie est la définition de la fonction (
forkbomb(){ ... }
), et la toute dernière:
est l'endroit où la fonction est appelée (les;
instructions juste séparent dans Bash).Maintenant, que fait cette fonction? Si vous connaissez Bash, vous saurez que le
|
personnage dirige la sortie standard d'une commande / d'un programme vers l'entrée standard d'une autre. Donc, fondamentalement,:|:
démarre deux instances de la fonction (c'est là qu'elle "bifurque").Et puis la magie: le
&
met ces commandes en arrière-plan, permettant à la fonction d'origine de revenir, tandis que chaque instance bifurque jusqu'à ce que les vaches rentrent à la maison en arrière-plan, utilisant ainsi toutes vos ressources et supprimant le système (sauf s'il a des limites imposée).la source
:
, qui exécute en fait la fonction!Tiré de l'article Wikipedia Forkbomb :
la source
En panne:
Changez
:
pourbomb
et vous avez:bomb(){ bomb|bomb& };bomb
C'est vraiment assez élégant.
la source