1. Jouons sur Mac OS X avec des cartes à puce [partie 2 - Lignes de commande utiles]

    Cet article est la suite des articles précédents :

    Obtenir quelques informations sur la carte à puce

    Lire l’emprunte d’une carte à puce (ATR) :

    $ opensc-tool --atr
    Using reader with a card: Feitian SCR301 00 00
    3b:9f:95:81:31:fe:9f:00:65:46:53:05:30:06:71:df:00:00:00:81:61:0f:d9
    

    Lire le numéro de série d’une carte :

    $ opensc-tool --serial
    Using reader with a card: Feitian SCR301 00 00
    05 71 57 18 09 13 02 12 .qW.....
    

    Lire le nom du driver utilisé (a piori driver de la carte, pas du lecteur) :

    $ opensc-tool --reader 0 --name
    entersafe
    

    Effacer et formater une carte à puce

    Ce sont les deux commandes à lancer la première fois que l’on veut utiliser une carte à puce, où lorsqu’il faut en “écraser” une pour la réutiliser.

    Pour effacer une carte à puce :

    $ pkcs15-init -E
    Using reader with a card: Feitian SCR301 00 00
    

    Pour formatter une carte à puce, avec PIN = 0000 et PUK = 111111 :

    Remarque : La documentation Gooze indique que même si la carte à puce supporte bien plusieurs PIN (permettant d’avoir un PIN pour un administrateur), le driver entersafe ne le supporte pas.

    $ pkcs15-init --create-pkcs15 --profile pkcs15+onepin --use-default-transport-key --pin 0000 --puk 111111 --label "Le Marsupilami"
    Using reader with a card: Feitian SCR301 00 00
    

    Afficher les informations d’une carte

    $ pkcs15-tool --dump
    Using reader with a card: Feitian SCR301 00 00
    PKCS#15 Card [Le Marsupilami]:
        Version        : 0
        Serial number  : 0571571809130212
        Manufacturer ID: EnterSafe
        Last update    : 20130902210553Z
        Flags          : EID compliant
    
    PIN [User PIN]
        Object Flags   : [0x3], private, modifiable
        ID             : 01
        Flags          : [0x32], local, initialized, needs-padding
        Length         : min_len:4, max_len:16, stored_len:16
        Pad char       : 0x00
        Reference      : 1 (0x01)
        Type           : ascii-numeric
        Path           : 3f005015
    

    Lister les mécanismes cryptographiques supportés par une carte

    $ pkcs11-tool --list-mechanisms --module /usr/lib/opensc-pkcs11.so
    Using slot 1 with a present token (0x1)
    Supported mechanisms:
      SHA-1, digest
      SHA256, digest
      SHA384, digest
      SHA512, digest
      MD5, digest
      RIPEMD160, digest
      RSA-X-509, keySize={512,2048}, hw, decrypt, sign, verify
      RSA-PKCS, keySize={512,2048}, hw, decrypt, sign, verify
      SHA1-RSA-PKCS, keySize={512,2048}, sign, verify
      SHA256-RSA-PKCS, keySize={512,2048}, sign, verify
      MD5-RSA-PKCS, keySize={512,2048}, sign, verify
      RIPEMD160-RSA-PKCS, keySize={512,2048}, sign, verify
      RSA-PKCS-KEY-PAIR-GEN, keySize={512,2048}, generate_key_pair
    

    Outil de test des fonctions cryptographiques d’une carte

    Le PIN sera demandé. Dans l’exemple ci-dessous, la carte vient d’être formattée et ne contient aucune clé à tester.

    $ pkcs11-tool --login --test --module /usr/lib/opensc-pkcs11.so
    Using slot 1 with a present token (0x1)
    Logging in to "Le Marsupilami (User PIN)".
    Please enter User PIN: 
    C_SeedRandom() and C_GenerateRandom():
      seeding (C_SeedRandom) not supported
      seems to be OK
    Digests:
      all 4 digest functions seem to work
      MD5: OK
      SHA-1: OK
      RIPEMD160: OK
    Signatures (currently only RSA signatures)
    Signatures: no private key found in this slot
    Verify (currently only for RSA):
      No private key found for testing
    Unwrap: not implemented
    Decryption (RSA)
    No errors
    
     
  2. Jouons sur Mac OS X avec des cartes à puce [partie 2 - Installation]

    Cet article est la suite de l’article précédent :

    Avertissement :

    Le matériel doit être compatible pour que ce qui suit fonctionne parfaitement, c’est pour cela que j’ai acheté chez Goose qui expliquait clairement qu’il n’y aurait pas de problème. A titre d’information, après installation je n’arrive à lire ni le contenu de la carte à puce que j’utilise professionnellement, ni le contenu de la carte à puce de mon passe Navigo (par contre le lecteur vendu par la RATP fonctionne).

    Cet article est basé sur les explications de la documentation de Goose (chez qui j’ai acheté le matériel). On trouve cette documentation sur le CD fourni à l’achat, où sur leur site. Il s’agit du “SmartCard Quickstarter Guide”, chapitre “Mac OS X installation”.

    L’installation consiste d’abord à mettre à jour des librairies qui apparemment sont un peu trop vieilles dans l’installation de Mac OS X :

    • Mise à jour de libusb
    • Mise à jour de libccid

    De ce que je comprends, libusb est utilisé pour l’accès aux périphériques USB, et libccid est une sorte de pilote générique pour les lecteurs de cartes à puce.

    L’installation consiste ensuite à installer OpenSC. De ce que je comprends, OpenSC embarque un certain nombre de pilotes pour les cartes à puce. Sinon, OpenSC est un ensemble d’outils permettant de travailler avec les cartes à puce, notamment par l’implémentation des spécifications PKCS#11 (interface de périphérique cryptographique) et PKCS#15 (standard de format d’information sur les périphériques cryptographiques).

    Etape 1 : Installation de MacPorts et des portages nécessaires

    Récupérer la dernière version de MacPorts sur le site dédié. Suivre les indications pour l’installation.

    Lancer les 2 commandes de mise à jour suivantes (attention à la documentation Goose qui contient des erreurs concernant ces deux lignes de commande):

    $ sudo port -d selfupdate
    $ sudo port upgrade outdated
    

    Installer l’environnement de développement :

    $ sudo port install autoconf automake libtool git-core subversion pkgconfig
    

    Etape 2 : Mise à jour de libusb

    Lancer la ligne de commande suivante :

    $ sudo port install libusb
    

    Etape 3 : Mise à jour de libccid

    Récupérer les dernières sources dans le dossier des téléchargements :

    $ cd ~/Downloads/
    $ svn checkout svn://anonscm.debian.org/pcsclite/trunk libccid
    

    Puis compiler et installer :

    $ cd libccid/Drivers/ccid
    $ set -x
    $ aclocal -I m4
    $ glibtoolize --copy --force --automake
    $ autoheader --force
    $ autoconf --force
    $ automake --add-missing --copy --force --foreign
    $ ./MacOSX/configure
    $ make
    $ sudo make install
    

    Ensuite il est possible d’effacer ce qui a été téléchargé.

    Etape 4 : Installation de OpenSC

    Ici ma procédure diffère un peu de celle de Goose. En effet le paquet d’installation pour MacOS X disponible sur le site de Goose ne semble pas être le plus à jour. Personnellement je récupère à la source la dernière version. A la date de rédaction de cet article, il faut récupérer la version 0.13.0.

    La documentation de Goose indique qu’il faut ensuite redémarrer l’ordinateur.

     
  3. Utiliser le client OpenVPN du Synology DSM avec des paramètres non supportés dans l’interface graphique

    J’utilise le client VPN de mon Synology pour le connecter à un serveur OpenVPN. La configuration n’a pas été évidente puisque mon serveur n’utilise pas le port habituel (1194).

    Dans cet article, j’explique comment adapter en ligne de commande la configuration pour que cela fonctionne.

    Etape 1 : récupérer les paramètres et fichiers de configuration de votre fournisseur d’accès OpenVPN

    Dans mon cas il s’agit :

    • D’un identifiant et d’un mot de passe.
    • D’un certificat.
    • D’un fichier de configuration.

    Etape 2 : configurer ce qu’il est possible dans l’inteface graphique du DSM

    Je vous laisse voir avec l’aide en ligne comment faire. Ce n’est pas très compliqué.

    Etape 3 : adapter la configuration via la ligne de commande

    La configuration du client VPN est sous “/usr/syno/etc/synovpnclient/openvpn”. Accéder à se répertoire en ligne de commande, avec le compte root.

    On trouve 3 fichiers :

    -rwxr-xr-x    1 root     root          1757 Oct 15  2012 ca_o1350330678.crt
    -rw-r--r--    1 root     root           263 Aug 27 20:36 client_o1350330678
    -rw-------    1 root     root           410 Aug 27 20:36 ovpn_o1350330678.conf
    

    Le numéro semble généré par le Synology.

    Le fichier “ca” contient le certificat importé via l’interface graphique.

    Le fichier “ovpn” semble être un fichier utilisé par le DSM pour stocker sa configuration, ou comme intermédiaire avant la création du “vrai” fichier de configuration utilisé par le client OpenVPN. Ce fichier peut contenir des informations incorrectes (le numéro de port dans mon cas), mais il n’est pas nécessaire de le modifier.

    Le fichier “client” est le “vrai” fichier de configuration à modifier. Voici les exemples dans mon cas (j’isole la partie modifiée).

    Avant :

    dev tun
    tls-client
    
    remote serv1.vpntunnel.se 1194
    
    pull
    proto udp
    ca ca_o1350330678.crt
    comp-lzo
    redirect-gateway
    script-security 2
    float
    reneg-sec 0
    explicit-exit-notify
    plugin /lib/openvpn/openvpn-down-root.so /etc/ppp/ip-down
    auth-user-pass /tmp/ovpn_client_up
    

    Après :

    dev tun
    tls-client
    
    ; HOST                          
    remote-random
    remote serv1.vpntunnel.se 8001
    remote serv2.vpntunnel.se 8002
    remote serv3.vpntunnel.se 8003
    remote serv4.vpntunnel.se 8004
    resolv-retry infinite         
    
    pull                          
    proto udp            
    ca ca_o1350330678.crt
    comp-lzo                                                 
    redirect-gateway                                         
    script-security 2                                        
    float                                                    
    reneg-sec 0                                              
    explicit-exit-notify              
    plugin /lib/openvpn/openvpn-down-root.so /etc/ppp/ip-down
    auth-user-pass /tmp/ovpn_client_up
    

    Etape 4 : Tester

    Lancer la connexion VPN depuis l’interface du DSM. Cela devrait fonctionner.

    Avertissement avec mon exemple : je ne suis pas certain que le client OpenVPN utilise correctement le “random”, mais en tous cas mon DSM arrive à se connecter, donc cela fonctionne pour un changement de port.

    Etape 5 : refaire la modification régulièrement !

    Chaque mise à jour du DSM risque de casser cette configuration. Si le client OpenVPN ne parvient plus à se connecter, refaire les changements.

     
  4. Lire vos disques Blu-ray avec VLC

    VLC peut lire les disques Blu-ray protégés, à condition de récupérer 2 fichiers sur Internet.

    Commencez par rechercher les bons fichiers sur Internet. Les mots-clés à utiliser sont “Keys database” et “AACS dynamic library”.

    Sur OS X, le premier fichier va dans ~/Library/Preferences/aacs/ (j’ai du créer le dossier “aacs”), et le deuxième fichier va dans ~/lib directory (j’ai du créer le dossier “lib”)

    Ensuite, il suffit de demander à VLC d’ouvrir le disque.

     
  5. Jouons sur Mac OS X avec des cartes à puce [partie 1 - Achat du matériel]

    J’ai décidé de m’amuser un peu avec des cartes à puce sur Mac OS X à la maison.

    Pour commencer, je suis les conseils de Yoann Gini sur son blog, et j’achète chez Gooze.

    Mon choix s’est porté sur :

    • 2 tokens USB avec carte SIM pour moi et madame, pour la configuration fonctionnelle de tous les jours.
    • 1 gros lecteur USB et 2 cartes à puce pour les tests
    • 1 petit lecteur pliant parce que je le trouvais original…

    144 € TTC (dont un peu plus de 10 € de frais de port, et en jouant sur les bundles pour faire baisser un peu le prix) en moins dans le portefeuille, et quelques jours plus tard, je reçois le colis :

    image

    La suite de mes aventures dès que j’ai le temps de faire joujou avec tout ça.

     
  6. Réparer les fichiers d’un NAS apparaissant grisés sous Mountain Lion

    Je ne sais pas pourquoi, certains fichiers sur mon NAS sont grisés, avec une date au 24 janvier 1984 à 9h :

    http://david-martin.fr/partage/skitch/FichiersNASGrisés.png

    Ces fichiers ont été correctement transférés depuis mon Mac, leur contenu est visible avec la fonction “coup d’oeil” (appuyer sur la barre d’espace), mais impossible de les ouvrir.

    Ils sont dans le même état qu’un fichier en cours de copie (sous Mountain Lion). Pour information il s’agit là d’un Easter Egg d’Apple puisque le 24 janvier à 9h est le moment de la présentation du premier Macintosh !

    Après enquête j’ai trouvé comment réparer ces fichiers. Pour une raison que j’ignore ils ont un attribut Type qui vaut “brok” (pour broken je suppose), et un attribut “Créateur” qui vaut “MACS” :

    image

    La solution est tout simplement de supprimer la valeur de ces deux attributs. Pour celà, j’utilise Path Finder :

    image

     
  7. Sauvegarder la carte SD du système d’un Raspberry Pi

    » Repérer le lecteur de carte dans les périphériques du Mac

    Insérer la carte dans le lecteur de votre Mac.

    Ouvrir un terminal sur votre Mac et lancer la commande suivante pour trouver le nom du périphérique correspondant à la carte (ici, /dev/disk2s1 pour /Volumes/Untitled):

    ~ dm$ df -h
    Filesystem                                           Size   Used  Avail Capacity   iused     ifree %iused  Mounted on
    /dev/disk0s2                                        297Gi  267Gi   31Gi    90%  69926812   8006090   90%   /
    devfs                                               192Ki  192Ki    0Bi   100%       664         0  100%   /dev
    map -hosts                                            0Bi    0Bi    0Bi   100%         0         0  100%   /net
    map auto_home                                         0Bi    0Bi    0Bi   100%         0         0  100%   /home
    map -fstab                                            0Bi    0Bi    0Bi   100%         0         0  100%   /Network/Servers
    /dev/disk1s2                                        932Gi  693Gi  239Gi    75% 181569961  62677978   74%   /Volumes/TimeMachineDD
    /dev/disk1s3                                         19Gi  5.8Gi   13Gi    32%   1514668   3368143   31%   /Volumes/SnowLeopard
    /dev/disk1s4                                        446Gi  375Gi   71Gi    85%  98432453  18571923   84%   /Volumes/Stockage 1
    /dev/disk2s1                                         69Mi  5.5Mi   63Mi     9%         0         0  100%   /Volumes/Untitled
    

    » Effectuer la sauvegarde

    Ejecter la carte du lecteur, sans la retirer physiquement. Pour cela utiliser la commande suivante (ou l’interface graphique de l’utilitaire de disque) :

    ~ dm$ sudo diskutil unmount /dev/disk2s1
    Password:
    Volume (null) on disk2s1 unmounted
    

    Il faut adresser le périphérique différemment pour lire la carte. Ici, mon périphérique est /dev/disk2s1, et il faudra l’adresser en utilisant /dev/rdisk2 (le “r” en plus, le “s1” en moins).

    Lancer la sauvegarde. if= permet d’indiquer le fichier source (on indique donc le périphérique correspondant à la carte). of= permet d’indiquer le fichier de sortie.

    ~ dm$ sudo dd bs=1m if=/dev/rdisk2 of=~/20121208raspbmc.img
    7580+0 records in
    7580+0 records out
    7948206080 bytes transferred in 369.546215 secs (21508016 bytes/sec)
    
     
  8. Accéder depuis XBMC à un partage NFS sur un NAS Synology

    Voici le moyen d’accéder depuis XBMC à des partages sur un NAS Synology, en NFS. Il y a une petite manipulation à effectuer en ligne de commande pour que ça fonctionne.

    Tout d’abord, pourquoi NFS :

    • Parce que c’est ce qu’on utilise facilement avec Linux, que mon Synology tourne sous Linux, et mon XBMC aussi !
    • Parce qu’il n’y a pas de login / mot de passe à configurer (attention, du coup il y a quelques précautions à prendre au niveau de la sécurité)
    • Parce qu’au niveau réseau, c’est efficace : moins “d’emballage” autour des données transportées, donc un peu plus de débit autorisé sur le réseau pour la vidéo. Je n’ai pas vérifié ce dernier point, je crois ce que j’ai lu.

    Etape 1 : activer le partage NFS sur le dossier partagé

    Il faut le sélectionner dans la configuration des dossier partagés, dérouler le menu “Privilèges” et choisir “Privilèges NFS”.

    image

    Bien spécifier les clients autorisés à se connecter. Comme il n’y a pas de login / mot de passe, c’est ici qu’il faut absolument limiter les accès !

    Je mets aussis accès en lecture seule. je n’ai pas encore trouvé de raison de donner les droits d’écritures à XBMC.

    Etape 2 : modifier en ligne de commande le partage créé

    Pour que l’accès via NFS fonctionne depuis XBMC, il faut modifier le partage créé. Si j’ai bien compris, il s’agit d’autoriser le NAS à recevoir des connexions sur un port non réservé au système (> 1023).

    Se connecter au NAS, en tant que root et éditer le fichier /etc/exports pour le modifier de la manière suivante (“insecure” au lieu de “insecure_locks”) :

    /volume2/video  192.168.69.3(ro,async,no_wdelay,no_root_squash,insecure,anonuid=0,anongid=0)
    

    Etape 3 : configurer les sources sous XBMC

    Maintenant, ça fonctionne !

     
  9. Rediriger l’interface graphique du Raspberry Pi sur votre Mac

    Remarque préalable : il n’y a plus de serveur X fournit par Apple avec les versions récentes de MacOS X, j’utilise donc XQuartz (conseillé par Apple).

    Sur le Mac, lancer XQuartz (il s’installe dans le dossier Utilitaires) :

    Il est possible de fermer la fenêtre XTerm qui s’ouvre, on ne l’utilisera pas.

    Dans les préférence de XQuartz, il me semble préférable d’activer le mode plein écran, qui gardera une fenêtre (en fait tout un écran) différente pour X11. Sinon, vous risquez d’avoir vos programmes sous X11 apparaître en fond d’écran du Mac, sans possibilité d’interragir avec eux.

    image

    Sur le Mac, se connecter en SSH au Raspberry Pi (utiliser l’adresse IP du votre !), avec l’option “-X” (forwarding X11) :

    $ ssh -X pi@192.168.69.3
    pi@192.168.69.3's password: 
    Linux raspberrypi 3.2.27+ #160 PREEMPT Mon Sep 17 23:18:42 BST 2012 armv6l
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Sat Sep 22 22:29:17 2012 from 192.168.69.253
    /usr/bin/xauth:  file /home/pi/.Xauthority does not exist
    

    Remarque : cela fonctionne correctement car le démon SSH a été activé sur le Raspberry Pi, et que le fichier /etc/ssh/sshd_config était déjà configuré correctement.

    Depuis la connexion SSH ouverte, afficher le contenu de la variable DISPLAY :

    pi@raspberrypi ~ $ echo $DISPLAY
    localhost:10.0
    

    On voit que l’affichage est redirigé vers le raspberry lui même (c’est la connexion SSH qui fait suivre le flux vers le Mac).

    Lancez vos commande depuis la connexion au Raspberry Pi, par exemple pour ouvrir le bureau :

    pi@raspberrypi ~ $ lxsession
    
     
  10. Premiers lancements du Raspberry Pi

    » Configuration initiale avec l’utilitaire Raspi-config

    Raspi-config se lance automatiquement au premier démarrage. Par la suite il sera possible de le lancer manuellement avec la commande :

    # raspi-config
    

    Menu “expand_rootfs”

    Ma carte fait 8 Go, l’image disque ne faisait que 2 Go. Je choisit d’étendre la partition plutôt que d’en faire une autre sur le reste de la carte.

    Menu “overscan”

    Je n’y touche pas encore, mais ce sera peut-être nécessaire une fois le Raspberry Pi branché à la TV (suivant qu’elle coupera ou non les bords de l’image).

    Menu “configure_keyboard”

    Pour ma part c’est “Apple Aluminium Keyboard (ISO)”. Avec le layout “French/French”. Mes touches “@/#” et “>” sont inversés et le pavé numérique ne fonctionne pas, mais pour le reste c’est bon.

    Je choisis la touche “Right Alt (AltGr)” pour “AltGr”. Je choisis la touche “No compose key” pour “Compose Key”. Et je choisis d’utiliser “Control + Alt + Backspace” pour tuer le serveur X.

    Menu “change_pass”

    Je change le mot de passe de l’utilisateur “pi”.

    Evidemment il vaut mieux avoir configuré correctement le clavier avant de saisir un mot de passe.

    Menu “change_locale”

    Je choisis la locale “fr_FR.UTF-8 UTF-8” en plus de “en_GB.UTF-8 UTF-8” (que la documentation conseille de garder), et je choisis “fr_FR.UTF-8 UTF-8” par défaut.

    Menu “change_timezone”

    Pour ma part c’est Europe/Paris.

    Menu “ssh”

    Je l’active (“Enable”) pour pouvoir accéder à distance au Raspberry Pi.

    Menu “boot_behavior”

    Pour le moment je ne choisis pas de lancer automatiquement le “Desktop” (l’interface graphique) au démarrage.

    Menu “update”

    Pour ma part, je l’ai fait, mais la documentation dit qu’il n’est pas nécessaire de mettre à jour l’outil raspi_config tant qu’il fonctionne bien.

    "Finish" pour terminer la configuration initiale

    » Quelques opérations supplémentaires

    Pour redémarrer le Raspberry Pi :

    # sudo reboot
    

    Après le redémarrage, il faut se connecter avec l’utilisateur pi. Son mot de passe est celui mis en place avec Raspi-config.

    Pour obtenir l’adresse MAC :

    # ifconfig
    

    J’ai récupéré l’adresse MAC pour configurer le Raspberry Pi en “DHCP avec IP fixe” via mon serveur DHCP. Ca me permet d’avoit toujours la même adresse à la maison, et d’éviter les problèmes en utilisant le DHCP si j’emmène mon Raspberry Pi sur un autre réseau.

    Pour vérifier que la partition a bien été étendue :

    # df -h
    

    Pour mettre un mot de passe à root (pas obligatoire - voire déconseillé - car il y a la commande sudo) :

    # sudo passwd root
    

    Pour éteindre le Raspberry Pi :

    # sudo halt