Catégorie : Non classé

TPMS

⚠ 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.

Suite des aventures SDR. Voulant montrer le NooElec NESDR à un collègue, j’ai lancé l’application rtl_433 qui, contrairement à son nom, scanne donc les gammes 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz et 915 MHz ISM.

Ces fréquences sont utilisées par beaucoup de sondes tel que les thermomètres Orégon sans fil.

L’application rtl_433 décode ces transmissions et connait 213 protocoles.

Quand je l’ai montré à mon collègue, nous étions près du parking de la boite et avons obtenu ce résultat:

Quelques marques de constructeurs automotobiles et le type TPMS.

TPMS ? Kesako ? Wikipedia me dit qu’il s’agit de Tire Pressure Monitoring System ou contrôle automatique de la pression des pneus en français. Ok, c’est plus clair. Il s’agit donc de ce que renvoient les valves des pneus.

Le système TPMS date de la fin des années 1980 et est obligatoire en Europe pour tous les véhicules neufs de moins de 3,5 tonnes depuis novembre 2014.

Il est soit indirect et utilise alors le système ABS du véhicule pour détecter si une roue tourne moins vite qu’une autre et est donc dégonflée; ou direct si il utilise des capteurs de pressions sur les valves.

Chaque valve ayant un identifiant unique, les vehicules peuvent être facilement traqués si ils passent près d’un récepteur 433.92 Mhz. Ce n’est pas en soit un trou de sécurité, chaque voiture étant déjà identifié par un numéro de plaque. Mais cela peut donner des idées pour un application d’automatisation d’ouverture de barrière, par exemple.

Pour certains constructeurs (Citroën, Fiat, Lancia, Nissan, …), l’association valves – véhicules peut se faire via l’ODB. Je possède un module ODB Bluetooth que je n’ai pas encore utilisé. Celui-ci pourra nous offrir un nouveau terrain de jeu … mais ceci est une autre histoire, qui sera contée une autre fois.

En continuant mes recherches sur ce système, j’ai pu voir qu’il n’est pas exempt de vulnérabilités. Imaginez que vous ayez un appareil qui puisse envoyer des trames identiques à celles qu’envoyent les sondes mais en modifiant la pression. Cela pourrait provoquer une alarme dans le vehicule et le mettre à l’arrêt… ou pire, si le véhicule dispose d’un système de gonflage automatique (système que possèdent certains tracteurs), surgonfler les pneus jusqu’à les endommager

Décidément, j’adore ces découvertes en radio logicielle.

Spotify

Je suis ce qu’on peut appeler un Apple fanboy…

Néanmoins, même si j’utilise Apple Music via l’abonnement familial, j’ai aussi un compte Spotify premium.

Spotify propose deux avantages par rapport à Apple Music:

Ses suggestions qui sont souvent judicieuses,
Spotify Connect qui permet de reprendre et de télécommander le stream n’importe où.

C’est sur cette fonctionnalité que je vais m’attarder.

Si on veut juste écouter le stream, le client lourd est, comme son nom l’indique, trop lourd. J’aimerais bien avoir un client léger et de préférence en ligne de commande.

C’est là qu’intervient librespot

Il peut s’installer via cargo sous linux (le gestionnaire de paquets de Rust), ou brew sous macOS.

Pour le lancer,

librespot -n "Deadketchup" -b 320 -c ./cache --enable-volume-normalisation --initial-volume 75 --device-type avr

Maintenant, à partir du client Spotify de votre smartphone (ou du client web disponible sur https://open.spotify.com), vous aurez un périphérique de sortie nommé Deadketchup où vous pouvez jouer votre stream préféré.

Est-ce que l’on irait pas un peu plus loin ? Pouvoir contrôler notre Spotify à partir d’une session ssh, est-ce que cela ne serait pas encore mieux ?

L’outil magique existe évidemment et a aussi été développé en Rust (il va falloir que je m’intéresse à ce langage un de ces jours).

spotify-tui, puisqu’il s’agit de lui, s’installe donc aussi via cargo (ou brew sous macOS).

Dès qu’il est installé, il se lance via la commande spt

Quelques raccourcis: Touche / pour rechercher une chanson, touche espace pour play/stop, touche d pour changer le periphérique de sortie et touche q pour sortir. Rien d’autres à savoir pour se faire plaisir.

Radio logicielle

⚠ 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.

Radio logicielle ? C’est quoi donc ?

Un peu d’histoire…

En 2012, Antti Palosaari (aidé par Eric Fry et Osmocom) se sont aperçus que certains dongles DVB-T (qui permettent de capter la TNT) pouvait être « dévié » grâce au chipset RTL2832U dont ils étaient composés. De leurs découvertes est né le projet rtl-sdr.

Le signal I/Q pouvait être directement écouté sur la gamme de fréquence de 22 Mhz à 2200 Mhz et être utilisé par des applications.

Et que trouve-t-on entre 22Mhz et 2200Mhz ?

DescriptionFréquences
Radio FM 87,5 à 108 MHz
Radio DAB 174 à 240 MHz
Les bandes ISM 433 et 866 Mhz

Il y a quelques années donc, j’avais acheté un Cinergy TStick RC Rev3 qui, manque d’outils, ne m’a pas beaucoup servit.

Je l’ai ressorti il y a quelques semaines et fait un tour sur la distribution linux (ubuntu mate) de mon GPD Pocket 3 pour voir ce qu’ils proposaient pour le RTL2832U…

Installons les packages kivonbien:

sudo apt-get install rtl-sdr alsa-utils sox

Et nous commencerons simplement par la radio en FM.

rtl_fm -f 103.6M -M fm -s 170k -A fast -r 32k -l 0 -E deemp | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

Cette commande permet d’écouter la fréquence 103.6 Mhz (Bel-RTL en Belgique) en 32kbits et l’envoie sur la sortie son.

Nous continuerons la découverte du SDR bientôt avec, par exemple, l’espionnage de thermomètre sans-fil… Même pas peur.

Mais ceci est une autre histoire, qui sera contée une autre fois.

(c) Pexels – David McBee

Récupération de Bitcoin

Lors de mes recherches de documentation pour la création de l’article sur les chaines de blocs, je me suis rappelé que j’avais crée un wallet Bitcoin il y a quelques années. Ce wallet était toujours dans ma Dropbox (ce qui n’est vraiment pas à faire !).

Et si ce wallet contenait des bitcoins et que j’étais devenu millionnaire ?

tl;dr: Non

 √ bitcoin % ls -latr
 total 144
 -rw-r--r--@  1 miguelvanhove  staff  73728 30 nov  2013 Untitled.dat

Après un examen rapide, il semblerait que les fichiers wallet du client officiel étaient sauvés dans un format BerkleyDB.

Pour notre facilité, Jim Zhou a réalisé une application (disponible via docker pour plus de facilité) qui permet d’extraire les clefs de ce wallet. Les commandes suivantes générent un fichier wallet_output.txt que nous pouvons utiliser ensuite.

docker pull jimzhou/walletlib:latest
docker run -v "$(pwd):/app" jimzhou/walletlib:latest Untitled.dat -o wallet_output.txt --keys

Le fichier wallet_output.txt résultant contient des lignes telles que

1Kd4srBoYo8AncnbJJZts6xoJDbzPy1RGW:Kwtk6bFMbnU8gkDuHno4ot2RqZSh8Dcy98RMqKdN3ps4htEDoeRt
15W4WWX2YzagGAMEkj8Y1wsta35FpC6Ys6:L36x7eB8LJPFBkxgUt6CJYaqc8A5fmUYL3crnHbi4zTyYbSTVqav

Dans un premier lieu, nous n’aurons besoin que des adresses avant le :.

cat wallet_output.txt|cut -d ':' -f 1|tr 'n' ' '

Il ne reste plus qu’à copier le résultat vers un site de Bitcoin Addresse Lookup tel que blockonomics.co.

Résultat

Comme vous pouvez le voir, ce n’est pas encore cette fois que je serai millionaire. Mais j’imagine tout ces wallets qui doivent trainer sur d’autres disques dur et que leur propriétaire ont oublié…

Dans le cas contraire, il aurait été nécessaire d’extraire également les private_key… mais ceci est une autre histoire, qui sera contée une autre fois.

CrocoDS

Fin 2006, je m’achète une Nintendo DS et nostalgique de mon Amstrad CPC, j’aimerai pouvoir emporter mes vieux jeux sur cette petite console.

Je me met donc à chercher un émulateur Amstrad qui serait assez propre que pour être porté sur la Nintendo DS.

Je tombe assez rapidement sur WinCPC dont le code est très propre et bien structuré et contacte Demoniak, son auteur, pour avoir l’autorisation de porter son code sur la DS. Permission reçue, je sors vite une version qui tourne à 70% de la vitesse réelle du CPC.

Mais je ne suis pas seul, un concurrent arrive. Une compétition saine a lieu entre Alekmaul qui fera AmeDS et moi pour faire la version la plus jouable. Après de nombreuses optimisations, ma version atteint la première une vitesse de 100% mais je serai vite rejoint par Alekmaul.

Pendant cette période, j’enverrai quelques bug report à Demoniak qui en tiendra compte et améliorera WinCPC suite à mes retours (désolé – et merci – Ludo).

AmeDS utilisant le core de Caprice, sa version émule mieux l’Amstrad que CrocoDS (et possède une base de donnée en ligne – profitant du Wifi intégré de la DS).

Ma version à l’avantage d’avoir quelques options tel que le redimensionnement automatique et profite de meilleurs graphismes (icônes et clavier) grâce à Kukulcan.

Si vous possédez une Nintendo DS et êtes fans d’Amstrad, les deux versions sont absolument à avoir.

Le code source est disponible sur GitHub mais je n’arrive plus à le recompiler. Le devkit sur lequel il était basé a trop évolué et il y aurait beaucoup à modifier pour rendre cette version encore compilable. Avis à celui qui est tenté par le challenge.

Quelques années plus tard, je sortirai CrocoDS sur d’autres devices (dont la version OpenDingux – ma préférée), une version retroArch, une version iPad, iPhone, macOS et une version Web disponible sur crocods.org/web.

Du coeur d’origine de WinCPC, il ne reste presque plus rien. CrocoDS est devenu un Gloubi-boulga de Arnold, Caprice et de quelques restes de WinCPC.

Ayant fait en sorte que le code soit le plus portable possible, développer pour de nouveaux matériels est assez rapide.

J’ai un peu abandonné le développement de cet émulateur (d’autres en font de bien meilleur que moi) et j’ai rediriger mes envies Amstrad sur le développement de jeux pour Crazy Piri… mais ceci est une autre histoire, qui sera contée une autre fois.

Boulder dash

Introduction

J’ai eu mon premier ordinateur en 1987. Après avoir goûté à la programmation par le Logo sur le Thomson TO7 de l’école, il me fallait ma propre machine.

Mes parents ne voulant pas que j’utilise la télévision familiale pour cet usage, je devais donc m’orienter vers un ensemble clavier-écran (ou bien acheter un écran supplémentaire qui aurait dépassé mon budget). Cela m’arrangeait vu qu’il prendrait ainsi place dans ma chambre et me serait attribuer à temps plein.

Mon choix (ou plutôt celui de mes parents) s’est donc porté vers le Schneider CPC464 version monochrome (la version belge de l’Amstrad). Heureux choix avec le recul.

Mon premier jeu acheté avec le CPC fût Jumpman , un jeu « budget » basé sur le jeu d’arcade Q*Bert.

Quelques mois plus tard, mon meilleur ami a reçu un CPC6128 avec lecteur de disquette. Lecteur de disquette auquel je n’aurais accès que quelques années plus tard avec le Schneider EuroPC… Mais ceci est une autre histoire, qui sera contée une autre fois..

Vu que nous étions quelques un à avoir un CPC464 à l’école, mon meilleur ami pris donc un lecteur de cassette à connecter sur son 6128. Cela me permit d’avoir le jeu auxquels j’ai le plus joué sur le CPC: Boulder Dash !

Boulder Dash

Boulder Dash est un open-world.. Si, si… N’ayons pas peur des mots. C’est juste un petit vu que la cave n’est composées que de 40 blocs horizontaux sur 22 verticaux.

C’est en partie pour ça que j’adore ce jeu. Le joueur dispose d’une grande liberté de mouvement et chaque cave (les différents niveaux) peut être refaite plusieurs fois sans lassitude.

Aimant tellement ce jeu, j’ai voulu faire ma version sur mes devices Apple (à voir si je la sors un jour… comme beaucoup de mes développements).

Construction des niveaux

Boulder Dash comptant 64 (16 x 4) caves, si il fallait décrire chaque cave, il faudrait 70400 (16 x 5 x 40 x 22) octets. Il y aurait moyen d’optimiser cela étant donné qu’un octet est trop large pour la description d’un bloc mais cela resterait beaucoup trop pour un pauvre Amstrad avec ses 64ko (donc 16ko utilisé pour la gestion de l’écran).

En 2005, Arno Weber interviewa Peter Liepa à propos de son jeu:

[…] L’éditeur m’a mis en contact avec Chris Gray, qui avait soumis un jeu en Basic, mais qui à l’époque n’avait pas les compétences nécessaires pour le convertir en langage machine. Donc, cela semblait être un bon projet pour acquérir de l’experience et je me suis assis et j’ai commencé. Le jeu ressemblait à un jeu d’arcade appelé The Pit, mais après l’avoir examiné de plus près, je ne pensais pas que le jeu avait du potentiel – trop de choses étaient prédéterminées. Mais j’ai commencé à jouer avec des éléments de base tels que la terre, les rochers et les diamants et, en quelques jours, j’ai construit le « moteur physique » de base de ce qui allait devenir Boulder Dash. Je me suis rendu compte qu’en utilisant un générateur de nombres aléatoires, vous pouviez générer des grottes aléatoires, et qu’en contrôlant la densité de rochers et de diamants, vous pouviez jouer à des jeux intéressants. Le jeu était non seulement intéressant du point de vue des casse-tête, mais il faisait également appel à diverses motivations émotionnelles – non seulement psychotiques évidentes telles que la cupidité (collectionner des diamants), la destruction (déloger des rochers et tuer des lucioles) – mais aussi des névrotiques comme le nettoyage de toute les saletés de la grotte. Et je pense que le jeu avait un sens de l’humour – si vous trouvez quelqu’un qui s’ecrase par inadvertance sous un rocher délogé drôle. […] Peter Liepa (via boulder-dash.nl)

Les caves sont donc décrites via des primitives (remplissage de rectangles aléatoires, placement de lignes et de points, …), l’occupation mémoire est ainsi grandement réduite.

La cave I du premier Boulder Dash, par exemple, est décrite de cette façon en format BDCFF (Boulder Dash Construction Kit File Format)

[cave]
DiamondValue=5 10
DiamondsRequired=75 75 80 85 90
CaveTime=150 150 130 130 120
Colors=Orange Purple White
RandSeed=100 137 140 251 51
RandomFill=BOULDER 240 DIAMOND 120

[objects]
FillRect=5 8 17 20 WALL SPACE
Point=12 8 DIRT
FillRect=25 8 37 20 WALL SPACE
Point=31 8 DIRT
Line=17 16 25 16 WALL
Line=17 17 25 17 SPACE
Point=7 10 INBOX
Point=8 10 OUTBOX
[/objects]

[/cave]

Cela donne la cave suivante:

Attachment.png
Cave I

Le gain de mémoire est donc évident et en utilisant une routine de génération de nombres aléatoires avec une graine prédéfinie (RandSeed), les niveaux seront toujours les mêmes (et même sur des plateformes différentes telles que le C64 ou le PC)

La description du format BDCFF est disponible sur ce site: http://www.gratissaugen.de/erbsen/bdcff.html

Génération de nombres aléatoires

Pour ceux qui sont interressé par la génération des nombres aléatoires pour la création des niveaux, cela se passe comme cela:

void boulderdashRandom(int *RandSeed1, int *RandSeed2) // Random generator used on C64
    {
    short TempRand1;
    short TempRand2;
    short carry;
    short result;

    TempRand1 = (*RandSeed1 & 0x01) * 0x80;
    TempRand2 = (*RandSeed2 >> 1) & 0x7F;
    result = (*RandSeed2) + (*RandSeed2 & 0x01) * 0x80;
    carry = (result > 0xFF);
    result = result & 0xFF;
    result = result + carry + 0x13;
    carry = (result > 0xFF);
    *RandSeed2 = result & 0xFF;
    result = *RandSeed1 + carry + TempRand1;
    carry = (result > 0xFF);
    result = result & 0xFF;
    result = result + carry + TempRand2;
    *RandSeed1 = result & 0xFF;
    }

Heritage

Si vous voulez rejouez à cet excellent jeu, je vous conseille d’essayer Rocks’n’Diamonds qui contient tous les niveaux originaux de Boulder Dash, mais aussi ceux de Emerald Mine ou de Sokoban.

Source:

Module

Est-ce que les noms de Jugi, Scorpik, Captain, Lizardking ou Jogeir Liljedahl ? Si vous êtes au courant de la scène démo des années 1990, la réponse est forcément oui !

Ces personnes (et bien d’autres) nous ont fourni des modules (les .mod, .s3m ou .xm) qui ont enchantées nos oreilles.

Mes principales sources étaient le CD du magazine PC Team, les partages lors de demoparty et les BBS (saviez-vous qu’il en existe encore ? cela fera l’object d’un futur article)

Mon player préféré était (et reste) Cubic Player du groupe Cubic Team & $eeN (regardez leur intro 64k Lasse Reinbøng quand vous aurez le temps). Je l’ai encore beaucoup utilisé lors de l’arrivée du mp3 jusqu’à mon passage à Windows 95 et son Winamp… Fan de la ligne de commande, il m’a fallu très longtemps pour passer à Windows et abandonner mon cher MS-DOS.

J’ai été agréablement surpris lorsque j’ai vu que Cubic Player continuait à vivre sous Linux (et sur d’autres OS aussi) sous la forme de Open Cubic Player et qu’il est encore bien suivi.

apt-get install opencubicplayer
ocp -dcurses  # pour le lancer en ligne de commande dans la fenêtre active

Mon top 5 (pas facile de choisir)

  • Space Debris – Markus « Captain » Kaarlonen (SPACEDEBRIS.mod). Captain nous raconté de la genèse sur son site. A lire absolument !
  • Onward Ride – Jukka Jugi Kaartinen (onward.xm). Extrait de la demo Dope du groupe Complex
  • Fountain of Sighs – Adam « Scorpik » Skorupa (FOUNTAIN.mod). Gagnant de la 4channel music à la The Party 1995
  • Lasse Reinbøng – Dirk « Doj » Jagdmann (INTRO15C). Musique de l’intro Lasse Reinbøng
  • Dance of the goblins – Maarten « Crystal Score » van Strien (DANCE.IT). Souvenir de la Wired 1997.

Et si vous vous allez plus loin, sachez que FastTracker II a été refait en SDL2 aussi !

AC 2021

Le virus est là depuis 1 an et demi. Le monde se meurt. Nous avons besoin de sortir de chez nous !

J’ai fais beaucoup de démoparty auparavant, mais n’avais jamais fait de conventions. M’étant remis sur Amstrad depuis peu, l’AC 2021 ne pouvait que m’attirer.

C’est donc le weekend du 27 et 28 novembre 2021 que je suis parti, seul loin de ma famille, à cette convention dans le petit village de Congis pas loin de Paris.

C’est l’occasion de rencontrer IRL tout des gens avec qui je parle sur les forums, groupe facebook et autres Discord.

L’occasion aussi de présenter la dernière version de notre remake de Puzzle Bobble.

L’association RGC organise, depuis 2006, deux conventions retrogaming. La plus grande, la RGC, est dédié principalement aux consoles. Celle-ci, l’AC, est plus dédiée aux ordinateurs (Amiga/Commodore, Atari, Amstrad, MSX, Thomson, Oric, etc).

Je ne me souvenais plus avoir vu autant d’Amstrad CPC. Même aux démoparty il y a 25 ans, il n’y en avait pas autant. Quand on voit les productions qui sortent sur cette machine actuellement, ce n’est pas étonnant. Le CPC est plus en forme que jamais.

Les époques ont changé, Covid oblige, nous ne pouvons plus dormir sous les tables. De toute façon, avec mon grand age, je n’en avais pas l’intention. Une nuit d’hôtel (même spartiate) m’était nécessaire. Les pizzas ont disparu aussi, nous nous faisons un beau restaurant en fin de journée. L’embourgeoisement nous a rattrapés.

Beaucoup de belles rencontres. Je ne citerai personne de peur d’oublier quelqu’un, mais ils se reconnaitront.

Je n’avais qu’une envie à la fin de cette convention: d’assister à la prochaine !

Flipper Zero

J’adore Kickstarter même si les délais pour recevoir la récompense sont souvent très longs. (J’attend toujours mon Spectrum Next commandé en octobre 2020).

Fin juillet 2020, j’ai commandé le Flipper Zero. Le couteau suisse pour les hackers (dixit les créateurs) et il est enfin arrivé !

Cet petit accessoire, de la grandeur d’une grosse clef usb (oui, une bien grosse de 98 x 39 x 24 mm et 140 grammes) est bourré de fonctionnalités :

  • un lecteur et émulateur RFID et NFC
  • un lecteur et émulateur de iButton Reader & Emulator (Dallas)
  • un émetteur-récepteur infrarouge (800-950 nm)
  • un émetteur-récepteur Gigahertz (300-928 Mhz)
  • un module Bluetooth LE
  • des GPIO
  • un port USB
  • un slot MicroSD
  • un écran monochrome de 128×64 pixels
  • un buzzer
  • une batterie de 2000 mAh
  • un processeur STM32 ARM Cortex-M4
  • un firmware totalement open source et totalement scriptable

Tellement de trucs que cela en est abusé.

Je ne pourrais évidemment pas faire le tour du module avec un seul article mais vous pouvez déjà imaginer tout ce qu’il permet.

Nous commencerons par la copie de code infrarouge. Histoire d’en faire un télécommande d’arrêt d’urgence de TV par exemple 😉

Mais ceci est une autre histoire, qui sera contée une autre fois.

Edito – Septembre 2022

Plus de 3 mois sans rien poster.. alors que j’ai plein de textes déjà écrits… J’abuse vraiment !

Beaucoup de raisons à tout cela. Des bonnes mais aussi des mauvaises (Qui a dit procrastination ?)

Le secteur technologique souffre. Rupture de stock partout, inflation galopante. Une impression que l’innovation n’est plus la priorité pour beaucoup.

Mais sinon, de mon côté, que c’est-il passé ces 3 derniers mois ?

J’ai enfin eu mon Flipper Zero, je vous en parle plus en détail rapidement.
J’ai aussi eu une nouvelle console portable qui mérite que l’on s’attarde sur elle (la Miyoo Mini)
Le GPD Pocket 3 a remplacé mon GPD Pocket 2. Et j’ai remplacé tous mes claviers Azerty par des Qwerty.
J’ai découvert avec plaisir (oui, oui) Windows 11

De quoi vous gaver jusqu’au bout de l’année sans problème.