Break The Shell, hackez des terminaux avec votre console !

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
111545_23878_128_xconsole_console_terminal_command%20line_icon.png
Le Java, un langage que je commence à apprendre, et à découvrir ses subtilités. Je m'entraîne donc en faisant des programmes (Comme MineIp, organisez vos Ip de serveurs). Et depuis un petit temps, je suis sur un projet de jeu de simulation de hacking virtuelle via la console. Le jeu utilise donc des commandes Unix (cd, ls, which, pwd, ...) pour le gameplay. Si vous découvrez Linux, vous pourrez "apprendre" en vous amusant en somme (Je ne garantis pas que les commandes ont exactement les mêmes résultat, mais elles se rapprochent au maximum du résultat habituelle (ls affiche les fichiers & dossiers du répertoire courant, which affiche la position du fichier de la commande, pwd affiche votre position, ...). Je me suis inspiré du jeu Intrusion, un jeu auquel j'ai beaucoup joué, qui avait un gros potentiel mais dont le développement s'est arrête (Quoi que, à l'heure actuelle, le jeu est en Mise à jour. :p)). Vous pourrez donc retrouvez le principe du déplacement dans les terminaux du réseau (cd pour se déplacer).

Le jeu est, disons, en bêta ! :)p))
Je cherche des avis, des suggestions, des gens qui pourraient suivre les releases et les versions du jeu. Bref, je cherche du monde. :)
Voici le manuel que j'ai crée, vous pouvez télécharger le jeu et essayer le premier niveau (Il y a un tutoriel concernant ce premier niveau pour faciliter votre entrée dans le jeu. :))

Break The Shell, ressortez votre console !
En effet, le jeu se joue entièrement en console, et utilise les mêmes commandes utilisées sur des terminaux Linux (ou autre Os se basant sur Unix). Vous pourrez donc retrouver la commande ls (Qui permettra d'afficher les dossiers & fichiers de votre position) ou encore which (Qui permet de trouver le fichier .sh recherché), tout ceci regroupé dans un labyrinthe informatique. Le jeu s'adresse à tous connaisseurs de Linux (Qui auront peut-être plus facile à assimiler le principe du jeu) où à toutes personnes voulant tâtonner des commandes Unix (Presque toutes les commandes ont le même résultat que dans un vrai terminal, les autres ayant un résultat similaire ou proche), ou encore à toutes personnes voulant ce prendre pour The hackeur of the universe. :D

Un autre point dont je suis totalement attaché, c'est de créer un éditeur de niveau très facile d'utilisation. Objectif réussi pourrais-je dire, car l’Éditeur de Niveau actuel utilise tout simplement les fichiers & dossiers que vous créerez sur votre PC. Au lancement du jeu, le programme scan les différentes dossier & fichiers contenu dans le dossier network/. Tout les fichiers sont donc dans le jeu ! Par exemple, voici un screen d'une partie d'un niveau. Ici, chaque dossier représentera un terminal dans le jeu.
Le fichier network.properties contient quelques directives général. Si la création de niveau vous tente, un guide est disponible en fin de post pour expliquer comment insérez chaque élément du jeu dans un niveau.

310265.png

Le Gameplay
Le genre du jeu est assez flou. Vous pouvez retrouver des phases de jeu plus casse-tête (Labyrinthe informatique), et parfois des phases d'actions (Les Anti-virus sont des fichiers qui vous infligeront des dégats lors de certaines actions). Pour reprendre les bases du jeu, voici un petit résumé du gampelay :
Vous commencez avec 100 points d'armure et 100 points de discrétion.
Les anti-virus vous feront perdre des points d'armure lors de certaines actions. Par exemple, si un anti-virus pick se trouve dans le même dossier que vous alors que lancez un Virus, vous perdrez 5 points d'armure. Si ils tombent à zéro, vous êtes directement déconnecté du réseau.
Les points de discrétion représentent votre capacité à vous faire discret dans le réseau :
Les administrateurs sont toujours à l’affût de la moindre trace sur les fichiers .log, et pour ceci, vous devrez essayer de faire le moins d'action possible.
Par exemple, lancez un virus vous fera perdre des points de Discretion (Toutes les actions ne coûtent pas des Pd, vous déplacez dans un terminal avec la commande cd ne vous coûtera rien). Si, par malheur, ils tombaient à zéro, vous ne pourriez plus envoyer de virus.

Vous devez donc vous faufiler entre les anti-virus (Ou alors les détruire) pour pouvoir accéder à ce que vous cherchez. (Un petit tutoriel sera disponible en fin du post, ça doit être assez confues en ce moment :p)

Le Cookbook, RTFM
Installation
Ohlala, vous avez envie de tester BreakTheShell ? Voici la marche à suivre :
Tout d'abord, téléchargez l'archive ci-dessous :
Break The Shell 1.3
Si vous êtes sur Windows, lancez tout simplement le fichier BreakTheShell_ForWindow.bat
Si vous êtes sur Linux, vous devez faire Clic-Droit sur BreakTheShell_ForLinux.sh, allez dans l'onglet Permission et cocher "Autoriser ce fichier à se lancer comme un programme". Ensuite, double-cliquez sur le fichier .sh et selectionnez "Lancer dans un terminal" !

Le manuel du jeu sortira surement sous la forme d'une documentation ou d'un Wiki. Mais voici un descriptif des commandes disponibles en jeu, des anti-virus que vous pourrez retrouver et des fichiers qui pourront être utiles lors de vos hacks. Et en prime, je vous donne un niveau ainsi que la marche à suivre pour le réussir, comme un tutorial en somme !

Les commandes
Il y a 3 types de commandes : Les virus, les commandes basiques et les commandes critiques.
Les commandes basiques :
Elles permettent, entre-autre, de se déplacer dans un terminal, de s'y connecter. Leurs particularités étant qu'elle ne coûte aucun Pd. Néanmoins, certains Anti-virus peuvent détecter des mouvements et contre-attaquer.
  • ls :
    Si vous n'êtes pas connecté à un terminal, il affichera la liste des terminaux présents.
    Si vous êtes connecté à un terminal, il affichera la liste des fichiers & dossiers présents.
  • login [Terminal] [Mot de passe] :
    Vous connecte dans un terminal. Si le terminal était [Open], indiquez un mot de passe est faculfatif.
  • cd [Chemin relatif] :
    Permet de se déplacer dans un terminal. Par exemple :
    cd images
    Cette commandes vous faite entrer dans le dossier images.
    cd ../images/porno
    Cette commande remonte d'un dossier puis entre dans images et puis dans porno.
  • exit :
    Permet de se déconnecter d'un terminal. Il faut être à la racine du terminal pour l'utiliser.
  • target [Nom du fichier] :
    Permet d'avoir plusieurs informations sur le fichier. A utiliser sur les fichiers .txt pour regarder leur contenu.
  • pwd :
    Vous affiche votre position actuelle ainsi que le terminal dans lequel vous vous trouvez.
  • uname :
    Permet de connaître son points d'armure et de Point de Discretion (Pd).
  • extract [Nom du fichier] :
    Permet d'extraire des fichiers .zip ou des fichiers .sh
    Quand vous extrayez un fichier .sh, vous gagnez la possibilité d'utiliser une commande critique.
    Par exemple, si vous extrayiez le fichier iptables.sh, vous pourrez utiliser la commande iptables dans le terminal.
  • ifconfig :
    Affiche toutes les connections entre ce PC et le réseau. Si vous voyez un bloc de 4 ligne s'afficher, cela veut dire qu'il y a un terminal derrière celui-ci. Pour accéder à ce terminal, vous devrez monter un pont réseau depuis ce PC (Se réferer à la commande iptables).
Les virus :
Ils vous coûtent des points de discrétion à chaque utilisation.
  • dl [Nom du fichier] :
    Coût: 5 points de discrétion
    Inflige 4 points de dégâts au fichier ciblé. Un exemple d'utilisation :
    dl top_secret.txt
  • which [Nom d'une commande critique] :
    Coût: 15 points de discrétion
    Dois être utilisé dans un terminal. Il permet de connaître la position d'un fichier [Commande].sh
    which iptables

Les commandes critiques :
Pour pouvoir utiliser ces commandes dans un terminal, vous devez d'abord extraire le fichier [Nom de la commande].sh du terminal. Donc, si vous voulez utiliser la commande iptables dans un terminal, vous devrez d'abord extraire le fichier iptables.sh !
  • iptables [Nom du terminal] :
    Permet de monter un pont réseau entre vous et un terminal. Imaginez que le terminal Database soit derrière le terminal Saturne. Allez dans le terminal Saturne et tapez "iptables database". Ainsi, le terminal database apparaîtra dans la liste affiché par la commande ls.

Les Anti-virus
Les Anti-virus sont des fichiers comme les autres, vous pouvez les détruire en utilisant un virus approprié (dl par exemple). Seulement, les Anti-virus peuvent vous infliger lors de certaines actions. Tous les anti-virus ont 15 points de vies.
  • Pick :
    Il vous infligera 5 points de dégâts lorsque vous utilisez un virus dans le même dossier que lui.
  • Hunter :
    Vous infligera 5 points de dégâts à chaque déplacement dans le terminal. (Il n'est pas forcément dans le même dossier que vous, il peut vous attaquer tant qu'il est dans le même terminal que vous)
  • Scotch :
    Vous empêche de vous déplacer lorsque vous êtes dans le même dossier que lui. (Il ne vous fait pas de dégats)
Tutoriel pour le premier niveau
Si vous téléchargez le jeu, vous aurez directement un niveau dans le dossier network/.
C'est le niveau d'essai qui vous permet de tâtonner le jeu. Lancez le jeu puis voici la marche à suivre pour le réaliser :
0. Faites ls pour voir la liste des terminaux présents.
1. Entrer dans le terminal ouvert Pluton en entrant login pluton
1'. Faites ls pour voir le contenu du dossier dans lequel vous êtes. <couleur nom="orange">(Il faudra utiliser cette commande presqu'à chaque opérations pour voir les fichiers & dossiers)</couleur>
2. Trouver un fichier .txt qui pourrait contenir le mot de passe de saturne (Ici, c'est dans documents/saturne.txt). On peut entrer cd documents
3. Un anti-virus scotch nous coince, il faudrait le détruire. Tapez dl [Nom de l'anti-virus].
4. On regarde le mot de passe contenu dans le fichier .txt en tapant target saturne.txt
5. On retourne a la racine du termina pour se deconnecter du terminal. On tape cd .. et puis exit
6. On entre dans Saturne en tapant login saturne [Mot de passe trouvé dans saturne.txt].
8. Il faut dabord savoir si Database se trouve bien derrière Saturne. Pour cela on tape ifconfig, on regarde les résultats et on vérifie si un bloc comprend bien "Database" quelque part (Sur la 2ème ligne de mémoire). On va devoir donc monter un pont réseau entre nous et Database.
7. Il faut extraire le fichier iptables.sh pour pouvoir utiliser la commande iptables (Qui permet de monter un pont réseau). Il se trouve dans program/iptables.sh ! Là aussi, quelques anti-virus jonchent le parcours.
8. Une fois le fichier extrait, on peut utiliser la commande iptables database. Si un message confirme notre action, on peut quitter le terminal (cd .. et exit). Et là ! Surprise, on peut voir que le terminal database apparaît dans la liste !
9. On rentre dedans en faisant login database et on détruit le fichier top_secret.txt en faisant dl top_secret.txt et en répétant cette action jusqu'à le fichier soit détruit.

Création de niveau
Beaucoup de choses à dire, je vais essayer d'être claire et concis. :)
Matérialiser des fichiers dans le jeu
Tout d'abord, pour trouver le "code source" d'un niveau, il vous faut aller dans le dossier network/. Tout le niveau se trouve là !
A la racine (Donc network/), chaque dossier représente un terminal. L'intérieur de chaque dossier correspond à l'arborescence du terminal. Si vous voulez rajouter un élément dans un terminal, vous devez ajouter un fichier vide dans l'arborescence du terminal que vous voulez.
L'extension du fichier permettra de savoir quel fichier, anti-virus il s'agit. Par exemple, si vous voulez qu'un anti-virus pick apparaîsse dans le terminal, vous devrez crée un fichier [Nom du fichier].fant !
Pour certains fichier, l'intérieur du fichier sera important. Par exemple, pour que le fichier texte (Faites un [fichier].txt) ait du contenu, il faudra mettre sur la première ligne le texte que vous voulez appraître. :)
Voici la liste des fichiers possibles sur Break The Shell :
  • [Fichier].txt : Créera un petit fichier texte qui pourra contenir du texte (Il faut mettre le texte dans le fichier)
  • [Fichier].sh : Si il est extrait, il permettra aux joueurs d'utiliser la commande qui correspond au nom du fichier. Extraire un fichier iptables.sh permettra d'utiliser la commande iptables
  • [Fichier].fant : Crée un anti-virus Pick (Voir la doc en haut pour savoir l'effet du virus)
  • [Fichier].hunt : Crée un anti-virus Hunter
  • [Fichier].scotch : Crée un anti-virus Scotch
Propriétés réseau
Vous pouvez préciser quelques propriétés concernant le réseau. Tout d'abord, créer un fichier network/network.properties ! Il contiendra une commande par ligne. Une ligne est divisée en morceaux, séparée par le sigle /-/

Par exemple, pour attribuer un mot de passe à un terminal, vous devez entrer cette ligne de commande :
password/-/[Nom du terminal]
Le premier morceaux indique le type de commande (password => Attribuer un mot de passe), et le 2ème morceaux indique quel terminal doit recevoir un mot de passe.
Voici la liste des commandes disponibles :
  • goal/-/[Type d'objectif]/-/[Arguments relatifs au type]/-/... :
    Cette commande permet d'indiquer un objectif au jeu. Le 2ème argument ([Type]) indique quel type d'objectif il faudra remplir, il se complète par un numéro : Voici la liste des objectifs disponibles
    1 correspond à "Détruire un fichier", et le 3ème argument sera le fichier à détruire.
    C'est le seul dispo pour le moment.
    Par exemple :
    goal/-/1/-/top_secret.txt
    Indiquera qu'il faut détruire le fichier top_secret
  • password/-/[Nom du terminal] :
    Attribue un mot de passe généré aléatoirement au terminal ciblé.
  • connection/-/[Nom du terminal à cacher]/-/[Nom du terminal qui le couvrira] :
    Place un terminal derrière un autre. Pour accéder à celui qui est caché, le joueur devra utiliser la commande iptables dans le terminal qui couvre.

A venir
Outch, outch, au niveau du jeu, je peux dire que je rajouterais du contenu. Par contenu, j'entends de nouveaux Virus, nouvelles commandes et principalement de nouveaux moyens de hacker des PC. J'ai d'autres idées (La commande top, qui permet de manipuler les processus en cours), mais dont je dois encore réfléchir avant de les implanter en jeu.

Au niveau globale, je vais surement créer un site Internet dans lequel on pourra s'inscrire. Ces identifiants permettront de se connecter via le client du jeu et permettra d'identifier le joueur. Depuis le jeu, je pourrais enregistrer des infos, comme les niveaux joués, le temps pris. En gros, un partage de bases de données entre le site et le client. Peut-être aussi la possibilité de télécharger des niveaux directement via le client, histoire de moins encombrer le joueur lambda. :p
Une tonne de possibilité, que je concrétiserais selon les avis des joueurs.

Et pour vous montrer à quel point la console, c'est beau, un screen en direct du jeu !
310389.png