Pourquoi on ne devrait pas coller directement dans son terminal du code copié sur un site Internet
Via SebSauvage, un article (en anglais) expliquant ce qu'il peut se passer lorsqu'on copie des lignes de codes récupérées sur un site Internet : https://www.bleepingcomputer.com/news/security/dont-copy-paste-commands-from-webpages-you-can-get-hacked/. Qui ne l'a pas déjà fait, confiant⋅e que nous sommes en la nature humaine 😉 ?
C'est très bien fait, subtil et assez simple à mettre en œuvre (avec un retour à la ligne inclus qui fait que lorsqu'on colle la ligne, elle s'exécute automatiquement et qu'il ne reste plus qu'à pleurer). Ça passe par du code JavaScript s'exécutant sur la page web qui détecte la ligne copiée et la remplace dans le presse papier par une ligne malicieuse.
Page sur laquelle on peut tester l'entourloupe expliquée par Gabriel Friedlander (on colle pas dans son terminal ! 😁) : https://www.wizer-training.com/blog/copy-paste.
Du coup, avant de copier/coller du code :
- on désactive le JS dans son navigateur avec une extension comme NoScript Security Suite,
- ou on copie d'abord dans un éditeur de texte au lieu de le faire directement dans son terminal,
- ou on ajoute dans le terminal, le signe de commentaire "#" avant de coller le code,
- ou on configure son terminal (si c'est possible) afin de ne pas exécuter automatiquement la ligne lorsqu'on colle "\n" (instruction de retour à la ligne).
À bon⋅ne entendeur⋅euse, ...
Rajout : le problème n'arrive pas uniquement avec JavaScript car on pourrait avoir le même type "d'attaque" en copiant/collant du texte rendu invisible par formatage Html / CSS (même si c'est plus grossier et plus facilement détectable)...
[Home Assistant] Installation sur Raspberry Pi 4
Jusqu'à présent j'utilisais Home Assistant à partir d'une installation sur mon NAS Synology DS 713+ mais suite aux dernières évolutions (disparition de Hassio et du "superviseur", utilisation uniquement possible via Docker et non pas avec une VMM car mon NAS ne le supporte pas) et de profiter d'une version la plus complète possible avec l'ajout facilité d'extensions, j'ai décidé de tenter le coup sur un Raspberry Pi 4 avec 4 Go avec un disque SSD de récupération dans un boîtier pour contourner les possibles problèmes avec une carte microSD.
La version utilisée sera donc Home Assistant Operating System (anciennement HassOS) : https://github.com/home-assistant/operating-system.
I- Préparation du Raspberry Pi 4
Tout d'abord, il faut veiller à mettre à jour le firmware du Raspberry Pi 4 car si on a un appareil de première génération, le boot en dehors de la carte SD n'était pas implémenté. J'ai donc décidé de réaliser une installation de Home Assistant sur une carte SD afin de pouvoir faire tous les réglages du firmware et du boot à partir du même système et ensuite de le dupliquer sur le disque SSD.
En fait, Home Assistant sur Raspberry Pi 4 n'est pas basé sur Raspberry Pi OS et il n'est donc pas possible de mettre à jour le firmware à partir de Home Assistant Operating System. Il faut donc utiliser une distribution Raspberry Pi OS (ex Raspbian) pour régler un boot sur USB.
Sources :
[Linux] Commandes utiles
Site source où j'ai repris ces infos afin d'avoir un accès direct depuis n'importe quelle machine sans avoir à chercher : https://www.citizenz.info/note-obtenir-les-details-systeme-et-materiel-linux-par-ligne-commande (merci à Citizenz pour son partage).
Affichage des informations système de base sur Linux Shell
$ uname
$ uname -s (kernel name)
$ uname -r (kernel release)
$ uname -v (kernel linux version)
$ uname -n (hostname - Network Node Hostname)
$ uname -m (Machine Hardware Architecture: i386, x86_64, etc.)
$ uname -p (processor type)
$ uname -i (hardware plateforme)
$ uname -o (operating system informations)
$ uname -a (display all info)
Affichage d'informations détaillées sur le matériel
$ sudo lshw (Hardware Information)
$ sudo lshw -short (Résumé des infos)
$ sudo lshw -html > hardwareinfo.html (créer une page HTML des résultats)
Affichage des informations sur le CPU
$ lscpu
Affichage des infos sur les périphériques type disques, lecteurs
$ lsblk
$ lsblk -a (informations encore plus détaillées - loop devices)
Affichage des informations sur les périphériques USB
$ lsusb
$ lsusb -v (informations encore plus détaillées : "verbose")
Affichage des informations sur les périphériques PCI
$ lspci (lspci --help pour voir toutes les options)
Affichage des informations sur les périphériques SCSI
$ lsscsi (vous devrez peut-être installer : sudo apt install lsscsi)
Affichage des informations sur les périphériques SATA
$ sudo hdparm [devicelocation] ==> exemple : $ sudo hdparm /dev/sda1
Résumé de la configuration matérielle
$ sudo inxi -Fxz
Exemple de règles REGEX
Je recense ici des règles REGEX pouvant être utiles pour valider des données dans des formulaires.
Site où l'on peut tester ses règles : https://regex101.com/
- Pour n'accepter que des courriels (avec ou sans tirets - _) en @ac-montpellier.fr :
^[^\W][a-zA-Z0-9\-\._]+[^\W]@ac\-montpellier\.fr$ - Pour n'accepter que des courriels (source https://openclassrooms.com/forum/sujet/amelioration-de-regex-verification-adresse-mail) :
^[^\W][a-zA-Z0-9\-\._]+[^\W]@[^\W][a-zA-Z0-9\-\._]+[^\W]\.[a-zA-Z]{2,6}$
Liens vers des sites intéressants
- Mesure de la fluence en français (met en forme un texte avec le nombre de mots lu à chaque ligne) : https://micetf.fr/fluence/
- Moodle / M@gistère (tableau synthétique des différents outils et leurs usages): https://moodletoolguide.net/fr/
[Inkscape] Partager une image en 4 pour créer des grands pochoirs
J'ai eu besoin d'agrandir un pochoir initialement prévu pour être découpé à la CNC. Ce pochoir avait une taille initiale de 50 x 45 cm et j'avais besoin d'une image finale d'environ 1 m x 1 m.
Vu la taille finale et la capacité de découpe de ma CNC, ce grand pochoir de près d'1 mètre peut être la résultante de 4 morceaux de pochoirs obtenus avec la CNC.
- J'agrandis d'abord la page à 104 x 100 cm.
- Puis j'agrandis le pochoir initial pour lui donner la taille finale plus petite que la page de manière à avoir des pourtours blancs (pour maintenir les parties découpées entre-elles) : passage de 50 x 45 cm -> 98 x 90 cm.
- On centre l'image verticalement et horizontalement.
- Pour s'aider et obtenir 4 morceaux de taille équivalente, on peut utiliser une grille de 52 cm en X et 50 en Y.
- On trace un premier rectangle en s'aidant de l'aimantation sur la grille de 52 cm x 50 cm et on va utiliser la fonction "Division" du menu "Chemin".
- On sélectionne les parties des différents chemins qui se trouvent dans le rectangle 52 x 50 cm pour les isoler et on les rassemble avec la fonction "Union" du menu "Chemin".
- On met ce 1er pochoir sur un nouveau calque.
- On procède de même pour les 3 autres morceaux que l'on met aussi sur 3 calques différents.
- On génère ensuite les 4 fichiers GCode comme habituellement à partir de chacun des 4 calques (voir cette page explicative).
- Il peut être intéressant de visualiser le GCode produit pour voir le chemin du laser ici : https://ncviewer.com/. Ça m'a permis de me rendre compte que le laser parcourait plusieurs fois le même chemin à cause d'informations redondantes dans Inkscape dans la partie "Objets" : il faut nettoyer et ne laisser que 3 morceaux : 2 groupes correspondant aux outils et à l'échelle de l'extension GcodeTools + le chemin "path" représentant le parcours.
Remarque : il peut arriver que des morceaux ne se séparent pas complètement lors de la division. Pour contourner ce problème, on sélectionnera les morceaux en cause et on appliquera la fonction "Séparer" du menu "Chemin".
[Firefox] Porter une extension Chrome vers Firefox
J'ai eu envie/besoin de porter une extension fonctionnant sous Chrome/Chromium vers Firefox. Il s'agissait de l'extension "EdScratch en Français" que l'on trouve ici : https://chrome.google.com/webstore/detail/edscratch-en-fran%C3%A7ais/aeiklncejanjjjannoindchdblikjhkb/related?hl=fr
Il a fallu tout d'abord ajouter cette extension sous Chromium : CRX Extractor/Downloader qui permet de récupérer l'extension dans un fichier au format .crx.
Ensuite, il faut tester si cette extension est utilisable sous Firefox en utilisant le site : https://www.extensiontest.com/. On peut aussi bien tester les fichiers .crx que .zip. Le rapport obtenu nous permet de voir quels sont les éventuels problèmes à corriger. Attention la correction recommandée peut parfois entraîner des bugs d'affichage (j'ai eu le cas pour quelques .innerHTML qu'il ne fallait pas remplacer par .textContent).
Le problème est qu'en l'état, l'extension non signée (validée) par Firefox ne peut pas s'installer directement. Pour le faire, il faut se placer sur la page "about:debugging" et cliquer dans la colonne de gauche sur "Ce Firefox". Le problème est que lorsque l'on redémarrera Firefox, l'extension aura disparu.
Pour installer de façon pérenne une extension non signée (ça n'a pas marché dans mon cas...) : https://wiringbits.net/browser-extensions/2020/11/27/installing-unsigned-extensions-permanently-to-firefox.html -> Depuis la version 48 de Firefox, ceci n'est plus possible sur les versions classiques de Firefox. Si on veut faire cela, il faut utiliser une version Développeur ou ESR de Firefox. Dans ce cas, il faudra dans "about:config" mettre l'option "xpinstall.signatures.required" à "false" et ne pas l'enlever (sinon ça désactivera l'extension).
Remarque : j'ai voulu déposer "mon" extension pourtant pleinement fonctionnelle pour Firefox (notamment pour qu'elle soit signée) mais celle-ci a été refusée car il y avait du code "minifié". N'étant pas l'auteur de l'extension initiale (ce dont je serais complètement incapable) et ne disposant pas du code source, je ne pouvais pas répondre aux injonctions de Mozilla... Dommage...
Page 19 sur 38