Développement de BriXen: épisode 5 – Mode démo

Quand j’étais petit, j’adorais le mode démo dans les jeux. Cela permettait d’avoir une musique et une animation qui tourne en fond. 

Pour BriXen, il en fallait donc un.

Niveau développement, c’est assez simple. En gros, on joue à un niveau, chaque modification de touche est sauvée avec un compteur de frame et dans le mode démo, le programme utilise la séquence pour simuler le joueur qui joue.

J’ai donc deux fonctions à faire:

  • une qui enregistre (que je pourrais supprimer dans la version finale)
  • une qui joue.

Pour cela, j’ai crée une scène SC_DEMO qui est appelé après 30 secondes (soit 1500 frames).

Un chaine de replay se ressemble à ça (pour le level 1)

const u8 seq_level0[] = {22, 2, 18, 0, 14, 2, 10, 0, 17, 2, 9, 0, 14, 2, 9, 0, 10, 2, 11, 0, 14, 2, 17, 0, 21, 2, 8, 0, 78, 2, 11, 0, 36, 2, 8, 0, 51, 1, 84, 0, 15, 1, 5, 0, 16, 2, 16, 0, 21, 2, 19, 0, 23, 1, 7, 0, 11, 2, 24, 0, 10, 2, 17, 0, 19, 2, 21, 0, 37, 2};

Cela se traduit par:

  • 1er octet: nombre de frame avant d’executer la commande
  • 2éme octet: commande à executer (1: gauche, 2: droite, 0: on relache)

Arrivé à la fin de la chaine, j’aurai pu crée une commande 3… Mais vu que je ne fais que de la lecture et que cela n’influence qu’une simulation d’appui de touche, je laisse aller le pointeur au-delà de la chaine. De toute façon, il ne lira que quelques octets avant de compléter le niveau…

Développement de BriXen: épisode 4 – La compression

Un des choses qui nous fait le plus vite défaut sur l’Amstrad, c’est le peu de mémoire dont nous disposons.

Actuellement, je préfère n’utiliser que les 64k de disponible afin de rendre nos jeux compatibles avec le plus de machine possible (c’est même une des conditions de la CPC Retrodev)

De nombreuses méthodes de compression existent pour notre Z80. La plus connues des demomakers est Shrinkler de par son haut taux de compression. Malheureusement, son temps de décompression est plus de 25 fois la vitesse de la commande assembleur LDIR (copie d’octets).

Pour un jeu, ce n’est pas acceptable. Il m’a donc fallu trouver un compromis vitesse/taux de compression.

Mon choix s’est porté sur LZSA de Emmanuel Marty.

Il nous donne un taux de compression de 2 pour une vitesse de LDIR x2. C’est plus qu’acceptable. Le meilleur, c’est que la fonction de décompression ne prend que 220 octets ! Il n’y a donc presque pas de raisons de ne pas l’utiliser.

La fonction est disponible dans le template Crazy Piri.

A suivre pour un prochain épisode…

(c) Pexels – Anna Shvets

Retour en Polytech

Suite des aventures Polytechnicienne en 1995.

Je vous avais déjà dit précédemment que je possédais une disquette de boot pour se connecter aux PCs de la salle informatique (qui ne possédaient pas de disque dur).

Étant présent plus que je ne le devrais dans cette salle, beaucoup me demandaient ma disquette pour pouvoir travailler sur leurs rapports (rapports qu’ils enregistraient sur un disque partagé).

Malheureusement pour eux, la salle ne contenait pas que des PCs récents et les jeux Doom, Descent ou le tout premier Warcraft venaient d’arriver. Parmi la trentaine de PCs présent dans la salle, moins d’une dizaine seulement possédait un écran couleur (et un processeur digne de ce nom).

Lorsqu’ils étaient tous occupés, cela posait un problème pour le joueur qui venait d’arriver dans la salle.

J’avais donc réalisé sur mon disque de boot un petit programme résident (c’est comme ça que cela s’appelait les daemons en DOS), qui attendait un paquet IPX magique. Je pouvais envoyer ce paquet de n’importe quel autre PC pour redémarrer le PC à distance. Après 2 ou 3 fois, l’utilisateur changeait de PC de lui-même, quitte à en prendre un plus lent, mais plus stable. Sale gosse, vous dites ?

Certains ont sans doute du retaper une partie de leur rapport, mais ils auront appris, grâce à moi, à sauvegarder plus souvent. Et en fin de compte, beaucoup d’entre eux ont réussi leur année…. à la différence de votre hôte.

Si j’ai encore la disquette de boot, je n’ai malheureusement plus les sources de ce résident ipx. Par contre, j’en ai un autre qui fut tout aussi amusant à développer… mais ceci est une autre histoire, qui sera contée une autre fois.

Un Rubber Ducky à 3€

⚠ AVERTISSEMENT : Toutes les informations fournies dans cette publication le sont à des fins éducatives uniquement. Le site n'est en aucun cas responsable de toute utilisation abusive de ces informations. Vous êtes seul responsable de vos actes devant la loi.

Je vous ai déja parler du Rubber Ducky, un clef usb qui permet d’injecter du code via la prise usb en se faisant passer pour un clavier.

Un de ses défauts, en plus de son manque de connectivité Bluetooth et Wifi, est son prix de 50€. Que diriez-vous d’avoir presque l’équivalent pour seulement 3€ ?

L’objet qui répond à nos besoins se nomme le Digispark. Il s’agit d’une carte basée sur un Arduino ATtiny85 avec un port usb tout petit et pas cher donc. L’avantage d’une clef pas cher, c’est que vous n’aurez pas peur de la perdre.

Niveau specs, malgré son prix, le Digispark n’a pas à rougir par rapport à d’autres cartes Arduino:

  • Support de l’environnement de developpement Arduino,
  • Alimentation via USB ou une source éléctrique de 5v ou 7-35v,
  • Un régulateur 500ma 5V,
  • Un USB intégré,
  • 6 pins I/O (2 pour l’USB qui peut être désactivé),
  • 8k de mémoire flash (6k disponible après le boot),
  • I2C & SPI,
  • PWM sur 3 pins,
  • ADC sur 4 pins,
  • Une LED d’alimenation, et une être de statut.

Par contre, contrairement au Rubber Ducky, il n’y a pas de slot micro SD sur le Digispark: il faut donc developper vos séquences claviers en C et injecter l’application via l’environnement de developpement Arduino.

Néanmoins, si vous voulez bénéficier des payloads du Ruber Ducky (, ou encore ), Marcus Mengs nous a developpé un convertisseur DuckyScript vers Digispark. Tout cela est disponible sur GitHub.

Avec un tel prix, le Digispark pourra encore nous servir dans de futurs projets, mais ceci est une autre histoire, qui sera contée une autre fois.

Hacking social

⚠ AVERTISSEMENT : Toutes les informations fournies dans cette publication le sont à des fins éducatives uniquement. Le site n'est en aucun cas responsable de toute utilisation abusive de ces informations. Vous êtes seul responsable de vos actes devant la loi.

Décrypter le mot de passe d’un wifi en WPA2 en 5 minutes, c’est possible.

Est-ce que hacking social vous dit quelque chose ?

Personnellement, j’ai découvert ce terme dans le film Cybertraque en 2000. Ce film retrace une partie de la vie de Kevin Mitnick, pirate réputé des années 80-90 et idole de beaucoup de nerds de l’époque.

J’ai toujours adoré les films sur les pirates informatiques (sur les gladiateurs aussi, mais c’est une autre histoire).

Wargames est l’un de mes films préférés. Qui n’a pas rêvé de changer les notes d’une de ses camarades de classe pour la draguer ?

Plus tard, j’ai aussi apprécié Hackers (et pas juste pour Angelina Jolie). A défaut d’être réaliste, l’ambiance du film reflète assez bien le monde dont j’aurais aimé faire partie.

Pour revenir à Mitnick, une de ses grandes forces était justement le hacking social. Grâce à son culot et son charisme, il arrivait à pénétrer n’importe quel système.

Mais comment ? C’est simple (enfin, ça dépend pour qui). Si, au lieu de cracker un mot de passe, il suffisait de le demander à l’utilisateur directement ?

En hacking, il faut toujours se demander où est le maillon faible et souvent le maillon faible, c’est vous (l’utilisateur).

Si le charisme vous fait défaut, observez juste autour de vous.

Fin de l’année passée, je suis allé dans un magasin d’électroménager que je ne citerai pas. Comment font leurs employés pour se souvenir du mot de passe Wifi ? Ils l’affichent sur leur comptoir à la vue de tous les clients. C’est bien beau de mettre de la sécurité partout…

Quiz Retro

Petit quiz rétro fait sur ma chaine Twitch le 21 avril 2021. Quel aurait été votre score ?

  1. De quel jeu Peter Liepa peut-il se vanter ?
    • Boulderdash
    • Bomb jack
    • Bubble Bobble
  2. Le 6-pak bien connu de Elite, comme son nom l’indique contenait 7 jeux. Parmi ceux-ci, il y avait: 1942, Fighting Warrior, Jet Set Willy 2 – The Final Frontier, Scooby Doo In The Castle Mystery, Split Personalities, The Sacred Armour Of Antiriad. Mais quel est le 7eme ?
    • Bomb jack
    • Into The Eagle’s Nest
    • Duet
  3. Parmi ces metal heroes, qui a eu droit à un jeu Amstrad CPC ?
    • X-OR
    • Bioman
    • Spielvan
  4. Encore à propos de Duet, de qui est inspirée la musique ?
    • Mike Oldfield.
    • Vangelis
    • Jean-Michel Jarre
  5. Quel est la résolution standard du mode 1 sur l’Amstrad CPC
    • 640×240
    • 320×200
    • 256×192
  6. Qui possède les plus belles couleurs ?
    • Le Commodore
    • Le ZX Spectrum
    • L’Amstrad
  7. Au 21 avril 2021 à 18:00, combien de ‘programmes’ sont archivés sur CPC-POWER ?
    • 17906
    • 25123
    • 12701
  8. De quel couleur est la touche Enter du clavier de l’Amstrad CPC 472 ?
    • rouge
    • verte
    • bleue
  9. A du Speed Write 1, combien de kilo-octets pouvait-on mettre sur une cassette C60 ?
    • 130
    • 310
    • 900
  10. En 2021, quel programme est principalement utilisé pour composé de la musique sur Amstrad ?
    • Fast Tracker II
    • Arkos Tracker 2
    • Stream Tracker 2

Les réponses:

(c) Pexels – Pixabay

Souvenir de labo

⚠ AVERTISSEMENT : Toutes les informations fournies dans cette publication le sont à des fins éducatives uniquement. Le site n'est en aucun cas responsable de toute utilisation abusive de ces informations. Vous êtes seul responsable de vos actes devant la loi.

Retour en… 1996. Je suis en 2ème année de graduat en informatique.

Nous disposons d’une salle infomatique avec des terminaux connectés à un serveur Unix (HP-UX de mémoire). Ils nous servent principalement au labo Fortran, Cobol et C. Il va sans dire que je préfère le dernier.

J’y découvre vi qui me suit toujours. Comme quoi, je n’ai pas fais que perdre mon temps pendant ces trois années d’études.

Et dans vi, il y a la fonction :sh.

Les profs vérifiant que nous ne trichions pas en allant voir notre historique. Après chaque cours, ils rassemblaient les fichiers .bash-history de notre répértoire utilisateur. Par un heureux hasard, j’avais trouvé que lancer un shell dans vi ne sauvegardait pas l’historique des commandes lancées dans ce shell. Nous pouvions donc discuter grâce aux commandes who et write.

htmiva@ubuntu-mate:~$ who
 htmiva   tty1         2022-02-15 19:11
 htmiva   pts/0        2022-02-15 19:14 (192.168.1.44)
 htmiva   pts/1        2022-02-15 22:49 (192.168.1.44)
 htmiva@ubuntu-mate:~$ write htmiva pts/1
 coucou
 Message from htmiva@127.0.0.1 on pts/0 at 22:49 ...
 coucou

Etudiant: 1, professeur: 0

Cette faille me rappelle celle trouvée chez un de mes fournisseurs des années plus tard.

Il nous fournissait un serveur Linux sur lequel nous n’avions pas un accès root. Mais le fichier sudoers contenait la ligne suivante

user ALL=NOPASSWD: /usr/bin/perl

Pas malin, cela nous permettait d’avoir un acces root juste en lançant

sudo /usr/bin/perl -e 'system("bash")' 

Cela aurait pû etre la même chose si il avait mis vi en NOPASSWD. Toujours se méfier du fichier sudo (surtout avec NOPASSWD)

Sixel

Vous voulez afficher des images sur votre terminal ? Sixel est fait pour vous.

Le Sixel ? Kesako ?

Wikipedia nous dit ceci:

Un Sixel (mot-valise de « six pixels ») est un format graphique bitmap supporté à l’origine par les terminaux et les imprimantes de DEC. Il est constitué d’un motif de six pixels de haut et d’1 en largeur, permettant ainsi d’obtenir 64 motifs différents. Chaque motif est assigné à un caractère ASCII, rendant les sixels faciles à transmettre sur les liaisons séries 7-bit.

Sixel a d’abord été créé comme un moyen de transmettre des images bitmap aux imprimantes matricielles de DEC, telles que la LA50. Après avoir été converties en « mode sixel » les données résultantes sont interprétées directement pour contrôler 6 des 9 broches de la tête d’impression. Une chaîne de caractères sixels encode une simple colonne de 6 pixels de haut de l’image.

Voila, le format Sixel vous permet donc d’afficher des graphismes dans votre terminal.

Tous les terminaux ne le supportent pas encore. Sur macOS, le bien connu (et open source) iTerm2 le permet. Pour les autres OS, voitre choix peux vous porter vers wezterm, open-source également.

Pour afficher une image, installer juste le package libsixel-bin

sudo apt-get install libsixel-bin

La commande img2sixel vous permet alors d’afficher l’image dans votre terminal (la plupart des formats d’images connus).

Si vous utilisez le navigateur web texte w3m, celui si possède une option pour afficher les images aussi.

 w3m -sixel deadketchup.kyuran.be

Il n’y a pas énormément d’applications supportant le format sixel mais il existe une librarie permettant de remplacer la libsdl par sixel. Si l’envie de recompiler votre applications préféres, allez faire un tour du coté de SDL1.2-SIXEL

D’autres formats existent pour afficher des images. iTerm, par exemple possède son propre format. Kitty aussi. Ils ont tous leurs avangates et inconvénients.

J’approfondirais le sujet à l’avenir, il a sans doute plus à en dire… mais ceci est une autre histoire, qui sera contée une autre fois.

InputStick, Rubber Ducky et P4wnP1

⚠ AVERTISSEMENT : Toutes les informations fournies dans cette publication le sont à des fins éducatives uniquement. Le site n'est en aucun cas responsable de toute utilisation abusive de ces informations. Vous êtes seul responsable de vos actes devant la loi.

Est-ce que cela vous est déjà arrivé de devoir taper des lignes de commandes sur un serveur (ou un simple PC) sans disposer d’un clavier ?

Ou alors, pour jouer à l’apprenti pirate, de vouloir executer un script sur un ordinateur qui ne vous appartient pas ?

L’InputStick

Pour ma première proposition, je possède une clef InputStick de Jakub Zawadzki.

Il se présente sous la forme du clef usb que vous inserez dans n’importe quel PC/mac…

A partir d’une application sur votre smartphone, vous controlez alors cette machine via le bluetooth 4.

L’application permet d’executer des macros simples. Le principal défault que je lui trouve est de ne pas avoir d’application desktop (pour l’utiliser via mon GPD Pocket 3). J’ai commencé une application open-source qui permettrait de le faire mais qui est loin d’être operationnelle.

Une API est disponible afin de permettre aux développeurs tiers d’intégrer ces fonctionnalités dans leurs applications. Je l’ai utilisé dans KyPass afin de faciliter l’envoi de mot de passe complexe sur votre ordinateur.

Le Rubber Ducky

Pour la deuxième proposition, la solution la plus connue est le Rubber Ducky de Hak5. Comme l’inputStick, il se présente sous la forme du clef usb sur laquelle vous avez copié votre script (en Ducky Script) tel que celui-là:

GUI r
DELAY 100
STRING notepad.exe
ENTER
DELAY 100
STRING Bonjour

Une fois le Rubber Ducky inseré dans le PC, il ouvrira l’application notepad et ecrira « Bonjour » dans l’éditeur de texte.

Cette solution est moins cher et le nombre de scripts existants est impressionnant.

Son principal defaut est de ne pas être connecté.

Le P4wnP1 A.L.O.A.

Après de longues recherches (au moins 5 minutes), je suis tombé sur le projet P4wnP1 A.L.O.A. de MaMe82 (A.L.O.A. pour “A Little Offensive Appliance”, c’est à dire « Un petit appareil offensif », successeur de P4wnP1)

Ce projet utilise un raspberry pi Zero (que l’on trouve à 10€) et simule un periphérique USB lorsqu’il est connecté à un ordinateur.

Dans sa configuration par défaut, le rpi fait office d’accès point que vous pouvez accèder à partir d’un autre pc. Vous pouvez alors vous connecter à l’adresse http://172.24.0.1:8000 pour configurer (et envoyer des scripts) votre P4wnP1.

Là où cela devient très puissant, c’est qu’il vous est aussi possible d’accèder au P4wnP1 en ssh.

# connection sur le rpi (mot de passe par defaut: toor)
ssh root@172.24.0.1
P4wnP1_cli hid run -c 'press("gui enter")'
P4wnP1_cli hid run -c 'layout("us"); type("ls -latrn")'

Vous pouvez aller faire un tour dans les dossiers /usr/local/P4wnP1/legacy/ et /usr/local/P4wnP1/scripts/ pour voir des exemples de scripts.

Le P4wnP1 permet beaucoup plus que cela:

  • Il est possible aussi de se connecter en bluetooth sur le rpi
  • Elle peut se faire passer pour une carte réseau usb, pour un port série, …
  • Son HIDScript est plus puissant que le Ducky Script
  • Le module Wifi a été modifié pour gérer l’attaque KARMA (j’en parlerai dans une autre post)
  • La distribution installée est KALI Linux, très connue des pentesters.
BadUSB USB-A Addon Board…

Il ne vous reste plus que usberisé (clerifié ?) votre rpi via une carte BadUSB USB-A Addon.

eDEX-UI

Vous voulez vous la jouer hacker pendant vos heures de bureau ?

Gabriel Saillard a pensé à vous.

Il a developpé eDEX-UI qui s’inspire des effets du film Tron : L’Héritage pour créer un terminal futuriste.

En plus du terminal, il affiche des informations sur le système tel que l’occupation CPU, la mémoire disponible, les process consommateurs de CPU, l’adresse IP, …

Ca bouge de partout et c’est de toute beauté ©

eDEX-UI a été dévéloppé à l’aide de l’environnement Electron. Cela la rend plus lourd qu’une application traditionnelle, mais aura au moins l’avantage de tourner sur tous les OS majeurs (linux, macOS et Windows).

eDEX-UI n’est plus maintenu depuis octobre 2021, mais de par sa nature open-source, il y a des chances qu’il soit un jour repris.

Tout est téléchargeable sur son GitHub