Je vous avais déjà parlé de radio logicielle dans un précedent post.
J’utilisais le Cinergy TStick RC Rev3 jusqu’à maintenant mais il était un peu gros pour toujours l’avoir avec soi. Mon choix s’est porté sur le NooElec NESDR Nano 2+ qui est vraiment très petit.
Niveau technologie, on est presque sur le même produit.
Toujours le demodulateur RTL2832U mais le tuner est maintenante un R820T2 au lieu du E4000. Niveau fréquence, cela donne ceci:
Tuner
Fréq min
Fréq max
Remarques
R820T2
24 MHz
1766 MHz
E4000
52 MHz
2200 MHz
gap entre 1100 MHz to 1250 MHz
D’après certains tests, le R820T2 aurait aussi un signal plus propre que le E4000.
J’ai testé les outils que j’utilisais avec le Cinergy et tout fonctionne très bien pour l’instant. Le NESDR est juste beaucoup plus chaud que mon ancien, mais je le savais avant de l’acheter.
Je suis maintenant près pour les futurs posts SDR et vous aurez sans aucun doute des retours plus poussés sur ce petit stick.
Je ne vous ferais pas l’affront de vous rappeler ce qu’est le wifi. L’utiliser sous Linux est plus intéressant.
Tout d’abord, le package indispensable:
sudo apt-get install network-manager
C’est lui qui gérera vos connections réseaux (donc aussi le wifi pour ceux qui suivent)
A travers le serveur X’ cela se présente sous la forme d’un icône dans votre barre d’icône: vous êtes en chemin connu.
Utilisation de nmcli
En ligne de commande, comme d’habitude, c’est plus complet.
Pour rechercher les wifi aux alentours:
nmcli d w # ou 'nmcli device wifi' list dans sa forme longue
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY >
90:9A:4A:B2:99:1A Proximus-Home-BF90 Infra 8 270 Mbit/s 37 ▂▄__ WPA2 >
22:B0:01:EC:7C:29 WiFi-2.4-7130 Infra 1 130 Mbit/s 30 ▂___ WPA2 >
84:A1:D1:4A:8E:76 WiFi-2.4-8E70 Infra 1 130 Mbit/s 22 ▂___ WPA2 >
9C:97:26:7D:A6:44 WiFi-2.4-A644 Infra 8 130 Mbit/s 22 ▂___ WPA2 >
* 9E:97:26:7D:A6:47 Proximus Public Wi-Fi Infra 8 130 Mbit/s 22 ▂___ WPA1 WPA2 >
96:9A:4A:B2:99:1B -- Infra 36 270 Mbit/s 15 ▂___ WPA2 >
A8:6A:BB:90:85:7E Proximus-Home-8578 Infra 6 130 Mbit/s 12 ▂___ WPA2 >
90:9A:4A:B2:99:1B Proximus-Home-BF90 Infra 36 270 Mbit/s 12 ▂___ WPA2 >
Pour se connecter sur un des réseau
nmcli d w c <SSID> --ask # ou 'nmcli device wifi connect SSID-Name --ask' dans sa forme longue
nmcli d w c <SSID> ifname <ifname> --ask # pour selection l'interface réseau spécifique
Pour obtenir les informations sur votre reseau:
nmcli d # ou 'nmcli device status' dans sa forme longue
DEVICE TYPE STATE CONNECTION
wlan0 wifi connected DeadKetchup
wlan1 wifi disconnected --
lo loopback unmanaged --
Et si vous préférez une interface ncurse, il existe nmtui et nmtui-connect.
Petits suppléments
Vous en voulez plus ?
Renommage des noms d’interface
Quand vous faites un ifconfig, vous ne voyez plus wlan0 mais quelque chose comme wlp1s0 ou wlx3283af8ca3ac (un nom de device avec la mac-adress) ?
Ketchup Killers, notre groupe de démo est invité par la rédaction de Pain, un diskmag suisse, à raconter notre vision de la demoscène belge.
Darkangel et moi nous nous en donnons à coeur joie.
Je me rappelle de la rédaction de cette article dans le café de la gare de Mons, maintenant disparue (le café, pas la gare). Une Blanche pour moi, un Coca pour Dark. Nous y avions mis tout l’humour dont nous disposions.
Qu’en pensez vous ? (idéalement, c’est à écouter avec un bon module, ou encore mieux, via le diskmag directement, sous DosBox ou sur 486 avec une GUS)
Pour mon GPD Pocket 3, vu la taille de l’écran, je voulais un window manager très léger et qui pouvait s’utiliser le plus possible via des raccourcis claviers (sans souris donc). Un peu dans l’esprit de Tmux mais dans un environnement graphique.
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
⚠ 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.
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.
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.
⚠ 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 ?
Description
Fré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.
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.
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.
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.
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)
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)
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.