chimrod a écrit 1095 commentaires

  • # buildroot

    Posté par  (site web personnel) . En réponse au journal NixOS ou comment j'ai rendu mes machines interchangeables et ennuyeuses. Évalué à 4.

    C’est amusant, j’ai en tête un journal un peu similaire sur buildroot. La version 2022-11 est en RC-1, je comptais me laisser un peu le temps avant la sortie pour préparer ce que j’avais à y mettre :)

  • [^] # Re: Force brute

    Posté par  (site web personnel) . En réponse au lien Mots de passe : une nouvelle recommandation pour maîtriser sa sécurité. Évalué à 6.

    Peut être que l’attaque par force brute n’est plus réalisée en tentant successivement les mots de passes sur le formulaire de connexion, mais à froid contre un hash qui aurait fuité lors d’une compromission de données ?

  • [^] # Re: Ça me fait penser

    Posté par  (site web personnel) . En réponse au journal [ HS ] haïku (essai). Évalué à 4.

    Souffle de la lune
    Souvenir d’une insomnie
    Lucrèce en bépo

  • [^] # Re: Nitrokey

    Posté par  (site web personnel) . En réponse au journal Clés de sécurité, pas assez utilisées. Évalué à 6.

    J’ai une nitrokey start, et j’en suis très content ( le journal devrait citer la dépeche de gouttegd à ce sujet, car on est en plein dedans). Par contre, son périmètre est réduit car il s’agit exclusivement d’une clef gpg, et ne gère pas les aspects U2F ou FIDO2.

    Je pense que la solution des jetons de sécurité est une bonne solution (si l’on compare avec ce qui est en train de se mettre en place : Passkeys : Venez centraliser vos mots de passe !) : un jeton qui prend en charge NFC et GPG, pouvant etre utilisé sur le pc ou le smartphone, la possibilité de déposer sa clef publique sur franceconnect ou sur le site de sa banque et c’en est fini des problème de compte piratés (du moins pour le 0,001% de la population qui savait déjà comment se protéger…)

  • # Si je comprends

    Posté par  (site web personnel) . En réponse au lien Cosmopolitan : la libc pour faire des exécutables multi OS (et même sans OS). Évalué à 4.

    Le code généré est interprété comme un script shell côté linux dont la première ligne MZqFpD=' correspond également à du code machine valide chez Windows.

    Sous windows, les premières instructions (en langage machine) consistent à sauter à l’emplacement du code exécutable alors que sous Linux, le programme est lu comme un script shell, qui va s’auto décompresser pour lancer le code binaire qu’il contient.

    J’imagine que le système trouve ses limites dès qu’il doit faire appel à des librairies tierces ?

  • [^] # Re: CSV

    Posté par  (site web personnel) . En réponse au lien Unix legend, who owes us nothing, keeps fixing foundational AWK code. Évalué à 4.

    C’est super le format CSV, c’est simple facile, à construire, facile à lire, sauf que

    Le format CSV n’est pas un format texte mais un format binaire.

    Le format CSV n’est pas un format texte mais un format binaire.

    Le format CSV n’est pas un format texte mais un format binaire.

    mais quand on s’en rend compte, c’est trop tard. On est piégé. Fini. Foutu.

    Ça fonctionne bien tant qu’on travaille sur ses propres fichiers de son coté, mais dès qu’on s’ouvre au monde on découvre à quel point l’univers est cruel :

    Niveau 0 :

    • les européens qui utilisent le point virgule à la place de la virgule
    • les caractères d’échappements avant les séparateurs de champs (\,)
    • les caractères d’échappements qui sont échappé eux meme (\\,)

    Niveau 1 :

    • les séparateurs de champ qui sont contenus dans un bloc texte (",")
    • les caractères de bloc textes qui n’en sont pas vraiment car précédé par un caractère d’échappement (\")

    Niveau 2 :

    • toutes les combinaisons possibles des niveau 0 et 1
    • le texte contenant des retours chariots
    • les formules excels stockées directement le CSV (="Du texte")

    Et la découverte de cette année : Excel enregistre le "CSV au format UTF-8" en ajoutant un Indicateur d'ordre des octets — ou BOM pour les intimes. Il te faut donc commencer à lire les premiers octets du fichier voir s’il s’agit d’un BOM, et si c’est le cas ne commencer à parser le fichier qu’après. (un exemple de cas posant problème dans un ticket de bug ouvert que j’ai ouvert suite à ça)

    Allez on le répète une dernière fois pour la route

    Le format CSV n’est pas un format texte mais un format binaire.

    Pfff ça va mieux.

  • # Déjà vu ?

    Posté par  (site web personnel) . En réponse au message Google Chrome court circuite la configuration DNS du système (?). Évalué à 6.

    Ça n’est pas la première fois que Chrome joue avec les DNS. C’est d’ailleurs intéressant d’en connaître la cause pour voir à quel point le web à divergé d’internet…

  • # pelican

    Posté par  (site web personnel) . En réponse au journal Static Site Generator. Évalué à 7.

    Je suis convaincu par le format RST et son expressivité, et je suis sur Pelican depuis… longtemps maintenant. J’utilise le theme Flex que j’ai customisé à ma sauce en surchargeant les éléments qui m’intéressaient. Tu peux donc y trouver un exemple pour voir comment modifier un thème par défaut pour l’enrichir de ton côté.

    L’idée pour ça est de construire le thème en y insérant des include qui correspondent à des sous-éléments que tu peux surcharger par ailleurs. Bien sûr, il est possible que le thème que tu utilises ais mis en place ces points de surcharge. (je suis pas allé voir sur le thème par défaut). La plupart des thèmes que j’ai vu correspondent à un thème que les gens ont pu construire peur eux, mais sans chercher à le rendre réutilisable par d’autres.

    L’avantage de pelican est que tu peux facilement cloner un blog existant pour le modifier à ta guise hors ligne :)

  • [^] # Re: Bastion ssh pi0

    Posté par  (site web personnel) . En réponse au journal Serveur perso basse consommation. Évalué à 6.

    J’ai pris un modèle basé sur le controleur 8152B. En recherchant "8152B Micro USB 2.0" sur le site de ton vendeur tu devrais trouver assez de références :)

  • # Bastion ssh pi0

    Posté par  (site web personnel) . En réponse au journal Serveur perso basse consommation. Évalué à 10.

    J’utilise un raspberry pi zero, qui est allumé 24h/24, avec un adapteur ethernet par usb (c’est le modèle sans wifi). Il fourni un serveur ssh, et j’ai des scripts wake-on-lan tout prêts qui me permettent de démarrer mon NAS a distance si nécessaire.

    Quand je suis à distance, j’utilise les tunnels de ssh pour accéder aux fichiers présents sur le nas et ça marche plutôt bien, le pi0 tient bien la charge du chiffrement ssh. J’ai testé une lecture de vidéo depuis chez mes parents (connectés via la fibre) et il n’y a eu aucun soucis. Je pensais que le pi-zero serait un goulet, mais tout s’est passé sans problème.

    Dans le futur je pense me construire un système buildroot dédié pour ça, mais je n’ai pas encore eu le temps de me pencher dessus, ça me permettrai d’avoir une image du système dispo à installer sur la carte SD qui me permettrait de restaurer le système.

  • [^] # Re: Pendant ce temps dans l'équipe de dev du backoffice paiement

    Posté par  (site web personnel) . En réponse au journal CISSP, sécurité, il faut que je vous raconte un truc.... Évalué à 10.

    Je ne devrai peut-etre pas poster ça ici, mais sslh génère des trames http qui sont vraiment identifiables pour qui prends la peine de regarder ce qui transite par le réseau.

    La solution "sure" que j’ai trouvé est d’ouvrir un proxy en https sur un serveur web, qui redirige le flux vers la machine désirée. (j’ai suivi ce bug report avec intéret à l’époque où j’en avais besoin)

    ProxyRequests On
    AllowConnect 22
    <Proxy *>
        Order deny,allow
        Deny from all
    </Proxy>
    <Proxy chez-moi>
        Order deny,allow
        Allow from all
    </Proxy>
    

    Puis d’utiliser une requete ssh qui simule complètement une connexion http (le user-agent est important car certain pare-feu d’entreprise se basent dessus pour filtrer les connexions)

    Host destination
        ProxyCommand  proxytunnel --cacert=/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt -E -T -p relai:443 -d destination:22 -H 'Host: mon.domaine-public.test:443' -H 'User-Agent: <le user-agent kivabien>'
    

    (non, je ne détaillerai pas davantage)

  • # Felicitations

    Posté par  (site web personnel) . En réponse au journal CISSP, sécurité, il faut que je vous raconte un truc.... Évalué à 10.

    Merci pour ton témoignage, et bravo pour ton concours ! J’ai ressenti à la lecture du journal a quel point tu as du en baver ! Je ne connais pas le domaine de la sécurité, je ne vais donc pas broder dessus, mais ton retour est intéressant sur l’énergie nécessaire pour sortir de sa zone de confort. Tu as vraiment eu de la chance que l’employeur t’ai donné les moyens de mener ta formation.

    Te serais-tu lancé dedans si tu avais imaginé la charge que ça représentait ?

  • # OCaml (avec cohttp)

    Posté par  (site web personnel) . En réponse au journal Le taptempo du web. Évalué à 2.

    Et voici une version en OCaml, j’ai utilisé cohttp qui est une librairie bas-niveau pour construire des requêtes client/serveur.

    open Cohttp
    open Cohttp_lwt_unix
    
    let server imgCount =
      let callback _conn req body =
        ignore body;
    
        let headers =
          Header.add (Request.headers req) "Location"
            (String.concat ""
               [
                 "https://avatar.spacefox.fr/Renard-";
                 string_of_int @@ (1 + Random.int imgCount);
                 ".png";
               ])
        in
        Server.respond ~headers ~status:`Temporary_redirect ~body:`Empty ()
      in
      Server.create ~mode:(`TCP (`Port 8000)) (Server.make ~callback ())
    
    let () = Lwt_main.run (server 5)

    La sortie ps :

    $ ps aux | grep tempo
    sebasti+ 23319 0.8 0.4 119996 16464 pts/2 Sl+ 13:49 0:03 _build/default/tempo.exe

    et le résultat du bench :

    $ ab -n 100000 -c 10 http://localhost:8000/
    This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    …
    Finished 100000 requests
    
    
    Server Software:        
    Server Hostname:        localhost
    Server Port:            8000
    
    Document Path:          /
    Document Length:        0 bytes
    
    Concurrency Level:      10
    Time taken for tests:   3.350 seconds
    Complete requests:      100000
    Failed requests:        0
    Non-2xx responses:      100000
    Total transferred:      18600000 bytes
    HTML transferred:       0 bytes
    Requests per second:    29851.08 [#/sec] (mean)
    Time per request:       0.335 [ms] (mean)
    Time per request:       0.033 [ms] (mean, across all concurrent requests)
    Transfer rate:          5422.17 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.0      0       1
    Processing:     0    0   0.5      0      51
    Waiting:        0    0   0.5      0      51
    Total:          0    0   0.5      0      51
    
    Percentage of the requests served within a certain time (ms)
      50%      0
      66%      0
      75%      0
      80%      0
      90%      1
      95%      1
      98%      1
      99%      2
     100%     51 (longest request)
    
  • [^] # Re: Complexité algorithmique

    Posté par  (site web personnel) . En réponse au journal [Letlang] Hommage à Leonardo Pisano Fibonacci. Évalué à 2.

    Merci, je n’avais pas eu cette lecture. Avec ton retour je vois mieux ce qui s’est joué.

  • [^] # Re: Complexité algorithmique

    Posté par  (site web personnel) . En réponse au journal [Letlang] Hommage à Leonardo Pisano Fibonacci. Évalué à 8.

    Je ne vois rien de condescendant dans le message auquel tu réponds. Je pense que tu fais un présupposé là il faut seulement y voir une remarque venant de quelqu’un qui a pris le temps d’écrire son commentaire, illustré par des exemples.

    Toutefois, et sans vouloir paraître condescendant, je veux bien que tu m’expliques comment tu compte implémenter la récursion terminale dans le langage.

  • # Qtpass proprio ?

    Posté par  (site web personnel) . En réponse au message [IHM] pour pass + gpg. Évalué à 5.

    Depuis quand ? La licence est toujours en GPLv3

  • [^] # Re: NetworkManager ?

    Posté par  (site web personnel) . En réponse au message fichier /etc/network/interfaces. Évalué à 7.

    J’ai pensé longtemps comme toi, et j’ai récemment changé d’avis. L’avantage de systemd est qu’il fait office d’ordonnanceur. On peut l’utiliser pour remplacer cron / init.d / interfaces etc

    Un exemple tout con, je veux lancer mes sauvegardes de manière automatique, mais j’ai besoin de m’assurer que le réseau est up. Si le réseau est géré par systemd, il suffit de déclarer une règle After dans mon service pour que la tâche se lance dès que le pc est connecté :

    [Unit]
    Description=Backup online
    After=network-online.target
    
    [Service]
    Type=simple
    

    Au final, ça reste des fichiers de configurations puisque tous est éditable directement c’est juste que nous n’avons pas pris l’habitude d’apprendre ce nouveau système.

  • [^] # Re: plus sérieusement

    Posté par  (site web personnel) . En réponse au lien Qu'est-ce que la récursivité. Évalué à 4.

    Pareil, le bouquin Le Langage Caml nous explique dès le début ce qu’est la récursivité, et termine en expliquant comment compiler le langage… avec ledit langage.

    Je trouve que ça a un côté poétique en fait.

  • [^] # Re: Machine à états ?

    Posté par  (site web personnel) . En réponse au journal Sunday Python Pattern : Une machine à état toute simple. Évalué à 6.

    J'avoue, c'est le nom le plus proche que j'ai trouvé pour ce design pattern que j'utilise sans en connaître le nom.

    Cela ressemble beaucoup à un trampoline, et c’est utilisé depuis au moins l’époque de Lisp. Cela permet de créer un code récursif sans surcharger la pile quand le compilateur n’est pas capable d’optimiser la récursion terminale.

    Je laisse les experts préciser s’il s’agit d’un cas particulier de Continuation-passing style (désolé, je saurai pas comment le traduire en français) ou non.

  • [^] # Re: sur le même thème

    Posté par  (site web personnel) . En réponse au journal Petites observations sur le travail (que l'on fait pour soi). Évalué à 4.

    C’était très intéressant. 20mn et très dense.

    Très actuel aussi, j’y ai retrouvé du vécu (par exemple ma femme qui peste contre l’obligation de rénumérer les stagiaires dans le social car ça rend la recherche de stage plus difficile… ), mais aussi de l’espoir. J’aime cette question de la valeur que l’on accorde à notre travail, ça recentre le débat sur ce qui est important dans le travail !

  • [^] # Re: Ton pain

    Posté par  (site web personnel) . En réponse au journal Petites observations sur le travail (que l'on fait pour soi). Évalué à 4.

    L’Italie avait tenté l’expérience (dans les années 70 ou 80 je ne sais plus), d’évaluer le travail domestique qui n’est pas comptabilisé. L’idée étant de proposer une allocation qui serait équivalente à se travail non comptabilisé et invisible. Si l’on se remet dans le contexte de l’époque, il s’agissait surtout d’une main d’œuvre féminine, n’ayant pas forcément de ressources autres que celles du revenu de l’époux et l’idée était de donner une autonomie aux femmes.

    C’est ce qui a fait capoter le projet : si l’on verse une allocation pour ce travail, on légitimise de ce fait la place de la femme à la maison, et au lieu de l’amener vers l’autonomie, on l’enferme à cette place…

  • [^] # Re: lisp ?

    Posté par  (site web personnel) . En réponse au journal [Letlang] Écrire un compilateur en Rust. Évalué à 6.

    Au contraire, ça casse la cohérence du langage. Le bloc de parenthèses représente une unité d’exécution du langage. (fonction arg1 arg2 …) peut se substituer à (EXPRESSION). Il faut plus les lire comme les {…} du C ou Java que les parenthèses qui listent les arguments d’une fonction.

  • [^] # Re: une idée, qui est un classique de bureau à distance

    Posté par  (site web personnel) . En réponse au message Session VNC et clefs USB. Évalué à 2.

    Je voulais éviter d’avoir à débrancher les cables qui sont actuellement relié au PC client pour les basculer sur le PC hôte. S’il me faut me logguer phhysiquement, ça perd tout cet attrait :)

  • [^] # Re: une idée, qui est un classique de bureau à distance

    Posté par  (site web personnel) . En réponse au message Session VNC et clefs USB. Évalué à 2.

    Si je comprend bien, tu ouvres ta session genre VNC sur SSH

    Effectivement, et suite à ton retour j’ai modifié la démarche, sans succès. Il y a une option qui dans lightDM qui permet de lancer le serveur VNC. Désormais je loggue donc via le gestionnaire de connexion (ssh ne sert qu’à mettre en place le tunnel).

    Pour autant, cela ne change pas le problème, l’utilisateur courant n’est pas autorisé à monter les clefs USB sans avoir à donner le mot de passe root.

    Je vais regarder plus en détail, j’ai trouvé un ticket sur le github qui semble correspondre au même problème, mais dont la seule réponse est « cela vient de la couche spécifique apportée par debian ».

  • [^] # Re: une idée, qui est un classique de bureau à distance

    Posté par  (site web personnel) . En réponse au message Session VNC et clefs USB. Évalué à 3.

    Merci du retour, je n’ai pas peut etre pas été assez clair.

    Je parle bien de la brancher sur la machine distante. Sauf qu’il semble qu’il manque une brique dans la pile qui fait remonter le matériel jusqu’aux droits utilisateurs dans la session X. Et c’est là où je ne sais pas trop chercher (udev je connais, mais tout ce qui suis derrière m’est inconnu)

    Cela fonctionne quand je lance ma session en physique (via lightDM), mais non pas quand j’ai ouvert ma session X via VNC.