Présentation du script

Un script bash obfusqué a été découvert sur un t-shirt Uniqlo, conçu par Akamai dans le cadre de leur campagne Peace for All. Le script est un easter egg qui affiche un message de paix sous forme d'une sinusoïde heureuse.

Fonctionnement du script

Le script utilise la commande base64 --decode pour décoder le texte obfusqué, puis il utilise la commande tput pour obtenir les dimensions du terminal et afficher le message de paix de manière animée. Le script utilise également la commande bc pour effectuer des calculs mathématiques et la commande echo pour afficher les caractères avec une couleur spécifique.

Analyse technique du script

Le script est écrit en bash et utilise des commandes spécifiques à ce langage, telles que tput et bc. Le script utilise également des techniques de programmation telles que les boucles infinies et les calculs mathématiques pour créer l'effet de sinusoïde. Le choix de la police de caractères, Consolas, est également intéressant, car il s'agit d'une police de caractères principalement utilisée sous Windows.

Implications et limites

Le script obfusqué sur le t-shirt Uniqlo est un exemple intéressant de l'utilisation de la technologie pour créer des expériences interactives et engageantes. Cependant, il est important de noter que le script nécessite une certaine connaissance de la programmation et des commandes bash pour être compris et modifié. De plus, le script est limité par les capacités du terminal et de la police de caractères utilisée, ce qui peut affecter son apparence et son fonctionnement.

#!/bin/bash
   # Congratulations! You found the easter egg!
   text="♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥"
   # Get terminal dimensions
   cols=$(tput cols)
   lines=$(tput lines)
   # Calculate the length of the text
   text_length=${#text}
   # Hide the cursor
   tput civis
   # Trap CTRL+C to show the cursor before exiting
   trap "tput cnorm; exit" SIGINT
   # Set frequency scaling factor
   freq=0.2
   # Infinite loop for continuous animation
   for (( t=0; ; t+=1 )); do
       # Extract one character at a time
       char="${text:t % text_length:1}"
       # Calculate the angle in radians
       angle=$(echo "($t) * $freq" | bc -l)
       # Calculate the sine of the angle
       sine_value=$(echo "s($angle)" | bc -l)
       # Calculate x position using the sine value
       x=$(echo "($cols / 2) + ($cols / 4) * $sine_value" | bc -l)
       x=$(printf "%.0f" "$x")
       # Ensure x is within terminal bounds
       if (( x  0 )); then x=0; fi
       if (( x = cols )); then x=$((cols - 1)); fi
       # Calculate color gradient between 12 (cyan) and 208 (orange)
       color_start=12
       color_end=208
       color_range=$((color_end - color_start))
       color=$((color_start + (color_range * t / lines) % color_range))
       # Print the character with 256-color support
       echo -ne "033[38;5;${color}m"$(tput cup $t $x)"$char033[0m"
       # Line feed to move downward
       echo ""
   done