PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

genma : Yunohost - Surveiller l'état de son disque dur

jeudi 2 mars 2017 à 09:00

C'est le billet de l'ami Seb0S666 Petit inventaire des disques dur à jeter dans lequel il parle de la vérification de l'état de différents disques durs avant de les mettre au recyclage qui m'a fait pensé qu'il serait peut être important que moi-même je regarde régulièrement l'état du disque dur qui fait tourner mon instance Yunohost sur mon PC maison.

Mon objectif est simple : anticiper la panne physique du disque pour le remplacer avant de perdre des données. A côté de celà, bien sûr, il y a le fait qu'il faille Faire des sauvegardes régulièrement, vérifier qu'elles sont correctes car ce n'est pas le jour où on aura besoin de la sauvegarde qu'il faut s'apercevoir qu'elle ne marche pas, n'est pas valable et qu'on ne peut pas récupérer ses données.

Pour tester l'état du disque dur, il y a l'outil Smartmontools. Un tuto rapide a été fait ici MemoInfo - Comment tester son disque dur pour éviter les pannes et il nous dit que la commande est :

smartctl -a /dev/sda1

Le lancer de temps à la main c'est un bon début, aller plus loin en automatisant tout ça c'est mieux et du coup, comme Yunohost est et reste une surcouche à Debian, on a toute la base Debian. On peut donc suivre le tutoriel Smartmontools - Wiki debian-fr pour automatiser tout ça et avoir le mail qui va bien pour prévenir les erreurs.

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Remi Collet : ZipArchive avec cryptage

mercredi 1 mars 2017 à 10:17

Un petit point d'avancement du développement de l'extension zip version 1.14.0 qui intègre désormais le support des archives cryptées.

L'implémentation de cette nouvelle fonctionnalité repose sur l'utilisation de la bibliothèque libzip version 1.2.0 récemment publiée.

Actuellement seule la compilation avec la bibliothèque système offre ce support, mais une mise à jour de la version embarquée est prévue.

Lorsque tout sera validé, la version sera publiée et intégrée aux sources de php (ext/zip), sans doute pour PHP 7.2.

il s'agit d'un développement en cours, rien n'est définitif, et les méthodes proposées peuvent encore changer.

Installation en RPM

Le paquet php-pecl-zip-1.4.0.0-0.2.20170301dev est disponible dans le dépôt remi-test (et remi-php70-test, remi-php71-test).

Installation depuis les sources

Depuis un clone des sources disponibles dans github :

$ phpize
$ ./configure --with-libzip
...
checking for libzip... from pkgconfig: version 1.2.0 found in /usr/lib64
checking for zip_open in -lzip... yes
checking for zip_file_set_encryption in -lzip... yes
...
$ make
...
Build complete.
Don't forget to run 'make test'.
$ make test
...
PASS ZipArchive::setEncryption*() functions [tests/oo_encryption.phpt]

Création d'un archive cryptée

Trois méthodes permettent de gérer le cryptage

ZipArchive::setEncryptionName($name, $method [, $password]);
ZipArchive::setEncryptionIndex($index, $method [, $password]);
ZipArchive::setPassword($password);

La méthode de cryptage devant être une des constantes ZipArchive::EM_NONE, ZipArchive::EM_AES_128, ZipArchive::EM_AES_192 ou , ZipArchive::EM_AES_256.

Exemple :

$zip = new ZipArchive;
$zip->open(__DIR__ . '/encrypted.zip',   ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
$zip->addFile(__FILE__, 'foo.php');
$zip->setEncryptionName('foo.php', ZipArchive::EM_AES_256, 'secret');
$zip->close();

Lecture d'une archive cryptée

Exemple :

$zip = new ZipArchive;
$zip->open(__DIR__ . '/encrypted.zip');
print_r($zip->statName($file));
$zip->setPassword('secret');
$text = $zip->getFromName('foo.php');
$zip->close();

A noter :

Lecture d'un archive cryptée via les flux

Il est nécessaire de passer le mot de passe en utilisant un context.

Exemple :

$ctx = stream_context_create(array(
    'zip' => array(
        'password' => 'secret'
    )
));
$text = file_get_contents('zip://' . __DIR__ . '/encrypted.zip#foo.php', false, $ctx);

Conclusion

Le script utilisé dans les exemples ci-dessus est disponible dans les sources de l'extension : encryption.php

Cette nouvelle fonctionnalité me semble intéressante, et permet une meilleure compatibilité avec les outils existants, comme WinZip sous Windows ou 7za sous Linux.

Pour Fedora, cette évolution devrait être disponible dans Fedora 26 qui dispose déjà de libzip 1.2.0.

Gravatar de Remi Collet
Original post of Remi Collet.Votez pour ce billet sur Planet Libre.

Articles similaires

dada : Redis-stat ou comment monitorer Redis simplement

mercredi 1 mars 2017 à 08:42

Redis est un outil que je continue de découvrir alors que je le manipule au boulot depuis maintenant des mois, et franchement, j'adore. Je ne ferai pas de cours sur son utilité, la page Wikipédia raconte ce qu'il faut. Ici, je vous propose un outil pour le monitorer très simplement : Redis-stat.

Plutôt qu'un long discours, la capture d'écran :



Comme vous pouvez le constater, les informations sont sommaires mais suffisantes pour donner un aperçu de comportement du Redis. Bon, après, s'il vous en faut plus, il faudra passer par un outil bien plus complexe que redis-stat !

Pour l'installation, c'est une Gem ruby simple qu'il faut récupérer, mais d'abord, les dépendances :
apt-get install ruby ruby-dev
Puis :
gem install redis-stat 
Pour lancer l'outil, un petit (pourquoi petit ?) :
redis-stat --server --daemon 
La configuration par défaut est parfaite si vous n'avez pas trop bidouillé la configuration de votre instance.

Je termine ce rapide billet en vous disant que l'utilisation de Redis, c'est bon pour la santé ! Mon Nextcloud s'en sort bien mieux depuis qu'il tape dedans.


Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

®om : SHAdow

mercredi 1 mars 2017 à 00:11

Le 23 février, une équipe de chercheurs a annoncé avoir cassé SHA-1 en pratique, en générant une collision.

À partir de leur travail, il est possible de produire de nouvelles paires de fichiers PDF arbitrairement différents qui auront la même signature SHA-1. Par exemple :

shadow1-thumb shadow2-thumb

$ sha1sum shadow1.pdf shadow2.pdf
fffe36a1d6f0a76a585af4f3838a4a46b6714f0c  shadow1.pdf
fffe36a1d6f0a76a585af4f3838a4a46b6714f0c  shadow2.pdf
$ sha256sum shadow1.pdf shadow2.pdf
502ccf8ecee10176d891fa4aeab295edec22b95141c2ae16d85f13b39879e37e  shadow1.pdf
2546d272df653c5a99ef0914fa6ed43b336f309758ea873448154ebde90cdfe1  shadow2.pdf

J’explique dans ce billet le principe, et je fournis un outil qui produit, à partir de deux images JPEG, deux fichiers PDF différents de même SHA-1.

Réutilisation

En fabriquant leur collision, les auteurs ont pris soin de la rendre réutilisable :

Furthermore, the prefix of the colliding messages was carefully chosen so that they allow an attacker to forge two PDF documents with the same SHA-1 hash yet that display arbitrarily-chosen distinct visual content.

Aujourd’hui, nous allons jouer aux attaquants.

La réutilisation de la collision repose sur le fait qu’avec SHA-1, ajouter un suffixe identique à une collision existante produit encore une collision :

SHA1(A) == SHA1(B) ==> SHA1(A|X) == SHA(B|X)

(où X|Y est la concaténation de X et de Y)

Autrement dit, vous prenez les fichiers qui produisent une collision, vous ajoutez les mêmes octets aux deux, vous obtenez le même SHA-1 :

$ { cat shattered-1.pdf; echo bonjour; } | sha1sum
4bfd4b804da3aa207b29d6f1300dde507988dc4b  -
$ { cat shattered-2.pdf; echo bonjour; } | sha1sum
4bfd4b804da3aa207b29d6f1300dde507988dc4b  -

Il est donc trivial de créer de nouvelles collisions.

Mais pour qu’elles aient un intérêt, encore faut-il :

  1. que les fichiers produits soient valides ;
  2. qu’une différence entre les fichiers soit visible par l’utilisateur.

Différences

Les différences entre shattered-1.pdf et shattered-2.pdf se situent entre les adresses 0xc0 et 0x13f :

diff -U3 <(hd shattered-1.pdf) <(hd shattered-2.pdf)
--- /dev/fd/63  2017-02-28 21:11:11.530135134 +0100
+++ /dev/fd/62  2017-02-28 21:11:11.530135134 +0100
@@ -10,14 +10,14 @@
 00000090  72 65 61 6d 0a ff d8 ff  fe 00 24 53 48 41 2d 31  |ream......$SHA-1|
 000000a0  20 69 73 20 64 65 61 64  21 21 21 21 21 85 2f ec  | is dead!!!!!./.|
 000000b0  09 23 39 75 9c 39 b1 a1  c6 3c 4c 97 e1 ff fe 01  |.#9u.9...-000000c0  73 46 dc 91 66 b6 7e 11  8f 02 9a b6 21 b2 56 0f  |sF..f.~.....!.V.|
-000000d0  f9 ca 67 cc a8 c7 f8 5b  a8 4c 79 03 0c 2b 3d e2  |..g....[.Ly..+=.|
-000000e0  18 f8 6d b3 a9 09 01 d5  df 45 c1 4f 26 fe df b3  |..m......E.O&...|
-000000f0  dc 38 e9 6a c2 2f e7 bd  72 8f 0e 45 bc e0 46 d2  |.8.j./..r..E..F.|
-00000100  3c 57 0f eb 14 13 98 bb  55 2e f5 a0 a8 2b e3 31  |
-00000110  fe a4 80 37 b8 b5 d7 1f  0e 33 2e df 93 ac 35 00  |...7.....3....5.|
-00000120  eb 4d dc 0d ec c1 a8 64  79 0c 78 2c 76 21 56 60  |.M.....dy.x,v!V`|
-00000130  dd 30 97 91 d0 6b d0 af  3f 98 cd a4 bc 46 29 b1  |.0...k..?....F).|
+000000c0  7f 46 dc 93 a6 b6 7e 01  3b 02 9a aa 1d b2 56 0b  |.F....~.;.....V.|
+000000d0  45 ca 67 d6 88 c7 f8 4b  8c 4c 79 1f e0 2b 3d f6  |E.g....K.Ly..+=.|
+000000e0  14 f8 6d b1 69 09 01 c5  6b 45 c1 53 0a fe df b7  |..m.i...kE.S....|
+000000f0  60 38 e9 72 72 2f e7 ad  72 8f 0e 49 04 e0 46 c2  |`8.rr/..r..I..F.|
+00000100  30 57 0f e9 d4 13 98 ab  e1 2e f5 bc 94 2b e3 35  |0W...........+.5|
+00000110  42 a4 80 2d 98 b5 d7 0f  2a 33 2e c3 7f ac 35 14  |B..-....*3....5.|
+00000120  e7 4d dc 0f 2c c1 a8 74  cd 0c 78 30 5a 21 56 64  |.M..,..t..x0Z!Vd|
+00000130  61 30 97 89 60 6b d0 bf  3f 98 cd a8 04 46 29 a1  |a0..`k..?....F).|
 00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 *
 00000230  00 00 ff fe 00 fc 00 00  00 00 00 00 00 00 ff e0  |................|

Nous devrons donc, quoi qu’il arrive, conserver les 0x140 (320) premiers octets : il s’agira forcément d’un fichier PDF.

Pour analyser la structure sur un exemple minimal, je vous conseille l’exemple fourni à la dernière page du papier (good.pdf et bad.pdf) :

<< -- base64 -d | tar xj
QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4Aa/AAAAAAA
CgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0MgDIGmjQA0DRk0AaMQ0D
QAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GI
GgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0
DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0a
mmIyaekbUejU9JiGnqZqaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQ
RdSSXCCTHMgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6Bm
UIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0S8GckoIIF+5
51Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUCWnahhk5KT4GpWMh3vm2nJ
WjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+NcupJXhOhOhJMQQktrqt4K8mSh9M2DAO2
X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPurenSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuT
zCWscmGudLyqUuwVGG75nmyZhKpJyOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6
TtozalunXrroSxUpVLStWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSE
kvFLaZC8wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CEJY
hMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgWlC0rYahMmLuP
Q0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDUpltQ8Lv6F8pXyxmFBSxiLS
xglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv
0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLEsRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfs
eI2Ly1DMtk4Jl8n927w34zrWG6Pi4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3Z
Pf/g2pzSwZDhGrZAl9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu4
4LpGcenr2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJYbx
zGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMwl107DWzymxdQw
iSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRMsykM9zbSIUqil0zNk7Nu+b5
J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDpV5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVr
M2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfht46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73s
eO8BqlLIap2z5jTOY+T2ucCnBtAtva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8Kvm
uR6ELXws1Qr13Nd1i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+
qtte+py8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW3vuE
vJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9kNC/4ct6rQkPkQH
McV/8XckU4UJCy+VeTA==
--

Aiguillage

Notre objectif est d’utiliser les quelques octets différents entre les deux fichiers PDF pour déterminer si le parseur doit lire la première image ou la seconde.

Il serait en théorie possible d’appliquer cet aiguillage au niveau de la structure du PDF, mais c’est en fait au niveau du JPEG qu’il sera implémenté :

PDFs with the same MD5 hash have previously been constructed by Gebhardt et al. [12] by exploiting so-called Indexed Color Tables and Color Transformation functions. However, this method is not effective for many common PDF viewers that lack support for these functionalities. Our PDFs rely on distinct parsings of JPEG images, similar to Gebhardt et al.’s TIFF technique [12] and Albertini et al.’s JPEG technique [1].

Le format JPEG

Voici le strict nécessaire à savoir sur le format JPEG pour notre besoin.

Une image est stockée entre les marqueurs 0xffd8 (Start Of Image) et 0xffd9 (End Of Image).

Il est possible d’insérer autant de commentaires que l’on veut, grâce au marqueur 0xfffe suivi de sa taille sur 2 octets (en big-endian). La taille compte le header de taille, mais pas le marqueur initial.

Par exemple, si je veux insérer le commentaire “Hello” au tout début, mon fichier JPEG ressemblera à ceci :

 ff d8 ff fe 00 07 48 65 6c 6c 6f  …  ff d9
 [SOI]                                [EOI]
      [[COM] [LEN]  H  e  l  l  o]
             <------------------->
                       7

Et c’est à peu près tout ce qu’il y a à savoir.

L’astuce

Mettons en évidence la première différence entre les fichiers en collision.

Dans le fichier 1 :

000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  73 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --

Dans le fichier 2 :

000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  7f -- -- -- -- -- -- --  -- -- -- -- -- -- -- --

Chacun définit un bloc de commentaires, mais pas de mêmes tailles. Dans le fichier 1, le début du prochain bloc sera à l’adresse 0x232 (0xbf + 0x173), alors que dans le fichier 2 il sera à l’adresse 0x23e (0xbf + 0x17f).

Nous avons donc trouvé notre aiguillage : nous allons maintenant utiliser des commentaires JPEG pour cacher soit la première image, soit la seconde.

Pour l’exploiter jusqu’au bout, il faut disposer les commentaires astucieusement pour que les deux images soient parfaitement valides.

Nous allons donc commencer en 0x232 un bloc de commentaires, ayant une taille permettant de recouvrir l’intégralité de l’image que nous allons stocker en 0x23e. Et inversement, nous devons démarrer un commentaire à la fin de l’image stockée en 0x23e pour cacher la deuxième image.

Comparons sur le résultat ce qu’observent un parseur qui parcours chacun des fichiers.

(GG et HH sont les deux images à stocker. J1 et J2 sont les longueurs des sauts pour enjamber chacune des images.)

Le fichier 1 est parsé ainsi :


00000090  -- -- -- -- -- ff d8 --  -- -- -- -- -- -- -- --
…
000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  73 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --
…
00000230  -- -- ff fe J1 J1 -- --  -- -- -- -- -- -- GG GG
00000240  GG GG GG GG GG GG GG GG  GG GG GG GG GG GG GG GG
…
       i  GG GG GG GG GG GG ff fe  J2 J2 HH HH HH HH HH HH
  i+0x10  HH HH HH HH HH HH HH HH  HH HH HH HH HH HH HH HH
…
       j  HH HH ff d9 -- -- -- --  -- -- -- -- -- -- -- --

Le fichier 2 est parsé différemment :


00000090  -- -- -- -- -- ff d8 --  -- -- -- -- -- -- -- --
…
000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  7f -- -- -- -- -- -- --  -- -- -- -- -- -- -- --
…
00000230  -- -- ff fe J1 J1 -- --  -- -- -- -- -- -- GG GG
00000240  GG GG GG GG GG GG GG GG  GG GG GG GG GG GG GG GG
…
       i  GG GG GG GG GG GG ff fe  J2 J2 HH HH HH HH HH HH
  i+0x10  HH HH HH HH HH HH HH HH  HH HH HH HH HH HH HH HH
…
       j  HH HH ff d9 -- -- -- --  -- -- -- -- -- -- -- --

Nous avons donc une image parfaitement valide dans les deux cas, et l’image affichée dépendra de la valeur de 0xc0, valant soit 0x73, soit 0x7f.

Maintenant, il nous reste à rendre notre PDF valide.

PDF

Le header participant à la collision SHA-1 (donc figé) définit des configurations dans des sections séparées (donc non figées) :

00000000  25 50 44 46 2d 31 2e 33  0a 25 e2 e3 cf d3 0a 0a  |%PDF-1.3.%......|
00000010  0a 31 20 30 20 6f 62 6a  0a 3c 3c 2f 57 69 64 74  |.1 0 obj.<>.st|

Ainsi, la largeur (Width) est définie dans l’objet 2, la hauteur (Height) dans l’objet 3, etc.

Ces objets sont à définir à la suite des fichiers JPEG embarqués. Pour comprendre leur format, le plus simple est de lire le fichier good.pdf que je recommandais plus haut :

tail -c+$((0x746)) good.pdf

On y trouve la définition des objets (entre autres les dimensions de l’image) :

2 0 obj
8
endobj

3 0 obj
8
endobj

4 0 obj
/XObject
endobj

5 0 obj
/Image
endobj

6 0 obj
/DCTDecode
endobj

7 0 obj
/DeviceRGB
endobj

8 0 obj
1693
endobj

9 0 obj
<<
  /Type /Catalog
  /Pages 10 0 R
>>
endobj


10 0 obj
<<
  /Type /Pages
  /Count 1
  /Kids [11 0 R]
>>
endobj

11 0 obj
<<
  /Type /Page
  /Parent 10 0 R
  /MediaBox [0 0 8 8]
  /CropBox [0 0 8 8]
  /Contents 12 0 R
  /Resources
  <<
    /XObject <>
  >>
>>
endobj

12 0 obj
<>
stream
q
  8 0 0 8 0 0 cm
  /Im0 Do
Q
endstream
endobj

Ensuite vient la table de références croisées : elle indique l’offset de chacun des objets définis, dans l’ordre :

xref
0 13 
0000000000 65535 f 
0000000017 00000 n 
0000001861 00000 n 
0000001879 00000 n 
0000001897 00000 n 
0000001922 00000 n 
0000001945 00000 n 
0000001972 00000 n 
0000001999 00000 n 
0000002020 00000 n 
0000002076 00000 n 
0000002142 00000 n 
0000002309 00000 n 

À chaque ajout ou suppression de caractères dans la définition des objets, cette table doit être mise à jour.

Le fichier se termine par un trailer, contenant l’offset de la table de références :

trailer << /Root 9 0 R /Size 13>>

startxref
2391
%%EOF

Ces offsets sont un peu fastidieux à modifier à la main, mais ça marche.

SHAdow

J’ai donc écrit un petit outil qui applique toutes ces opérations automatiquement.

git clone http://git.rom1v.com/shadow.git

(ou sur github)

Il prend en entrée 2 images JPEG (de moins de 64K, puisque la taille d’un commentaire est codé sur 2 octets), ainsi que leurs dimensions (pour éviter d’utiliser des dépendances pour les extraire) :

./shadow.py img1.jpg img2.jpg 200 200

Il génère deux fichiers dans le répertoire courant, shadow1.pdf et shadow2.pdf.

Il ne reste qu’à vérifier qu’ils ont bien le même SHA-1 :

sha1sum shadow1.pdf shadow2.pdf

Gravatar de ®om
Original post of ®om.Votez pour ce billet sur Planet Libre.

RaspbianFrance : Sortie de la Raspberry Pi Zéro W, une Raspberry à 10€, notre analyse et nos conseils

mardi 28 février 2017 à 16:10

Comme tous les ans, à l’occasion de son anniversaire, la Raspberry Pi fondation propose une nouvelle version améliorée de la Raspberry Pi, cette année c’est la Raspberry Pi Zéro qui se dote d’un nouveau modèle avec la Raspberry Pi Zéro W !

Pour célébrer les cinq ans de la fondation Raspberry Pi, la Fondation vient de nous annoncer la sortie d’une nouvelle carte, la Raspberry Pi Zero W, pour Raspberry Pi Wireless !
Petit bonus, la fondation a également annoncé un boîtier officiel pour la Raspberry Pi W.

Alors, quelles nouveautés, quelles améliorations et quels usages ? Petit tour d’horizon de cette nouvelle Raspberry Pi !

Où acheter la Raspberry Pi Zéro W et le boîtier officiel de la Pi Zéro

Avant de vous parler des caractéristiques de la bête, éliminons directement la question du prix et du vendeur.

Comme trop souvent avec la Raspberry Pi Zéro, le vrai problème semble de trouver des vendeurs possédant le produit en stock.
Voici donc une liste, que nous essayons de tenir à jour, des vendeurs et des prix pour la Raspberry Pi Zéro W et le boîtier officiel.

Où acheter la Raspberry Pi Zéro W

Au niveau de la Raspberry Pi Zéro W, le prix annoncé est de 10€ (soit le double du prix théorique de la Pi Zéro 1.3). Bonne nouvelle, pour une fois, le prix constaté en France, au lancement, semble relativement correspondre au prix officiel (comptez en gros la TVA en plus) ! Voici les vendeurs chez lesquels vous pourrez acheter la Raspberry Pi Zéro W :

Où acheter le boîtier officiel de la Raspberry Pi Zéro

Pour ce qui est du boîtier officiel de la Raspberry Pi Zéro, les choses sont beaucoup plus simples ! Le prix annoncé est de 6€ et le prix constaté correspond également. Par ailleurs, il est facilement trouvable en ligne.

Voici les vendeurs chez lesquels vous pourrez acheter le boîtier officiel de la Raspberry Pi Zéro :

La Raspberry Pi Zéro W, un pas de plus vers le sans-fil

Comme son nom l’indique, la Raspberry Pi Zéro W propose principalement l’ajout de fonctionnalités sans-fil, le support du Bluetooth, mais surtout, le support du Wi-Fi.

Là ou l’ancienne version nécessitait de recourir à des dongles Bluetooth et Wi-Fi, la Raspberry Pi Zéro W intègre donc nativement une puce du constructeur Cypress, la CYW43438. Cette puce était déjà celle utilisée par la Raspberry Pi 3 et est donc parfaitement compatible avec Raspbian !

Comme pour la Raspberry Pi 3, donc, nous retrouvons du Wi-Fi 802.11n et du Bluetooth 4.0, soit les dernières versions des deux protocoles (la 802.11n est l’avant dernière version du protocole, mais reste extrêmement performante avec des débits jusqu’à 450 Mbits/s).

Une descendante directe de la Raspberry Pi Zéro

Pour le reste des caractéristiques, rien ne change. La Raspberry Pi Zero W reprend la quasi totalité des spécifications de sa grande soeur la Pi Zero 1.3.
Nous retrouvons donc un processeur 1 cœur, cadencé à 1GHz et qui est épaulé par 512Mo de RAM.

Côté connectique, rien de neuf non plus. On retrouve une alimentation mini-USB ainsi qu’un port mini-USB dédié aux périphériques externes (clefs, dongles, claviers, etc.). On retrouve également un port HDMI pour la vidéo, ainsi qu’une connectique pour la caméra pi, et la possibilité de souder des ports GPIO.

Un nouveau boîtier officiel pour la Raspberry Pi Zéro W

Deuxième annonce de la fondation, la sortie d’un boîtier officiel pour la Raspberry Pi Zéro W (et compatible avec les modèles précédents).

Ce boîtier reprend fortement l’apparence du boîtier officiel de la Raspberry Pi 3, avec un design arrondi et bicolore, rouge et blanc, aux couleurs de la fondation !

Un boîtier relativement novateur et intéressant

Nous avons été très agréablement surpris par le boîtier proposé par la fondation.

En effet, si ce boîtier correspond exactement aux dimensions de la Raspberry Pi Zéro W (jusque là, rien de révolutionnaire) et semble, d’après les images, assez bien fini. Il propose surtout un fonctionnement relativement différent des boîtiers classiques en offrant la possibilité d’utiliser plusieurs couvercles différents selon vos besoins.

 

Boîtier officiel de la Raspberry Pi Zéro

Le boîtier officiel de la Raspberry Pi Zéro propose différents couvercles selon vos besoins.

 

Ainsi, le boîtier est livré avec un couvercle totalement fermé, mais également avec un couvercle permettant l’accès aux ports GPIO, et enfin un couvercle permettant de fixer la caméra pi et de laisser sortir uniquement l’objectif.

Ce dernier couvercle nous semble particulièrement intéressant et permet pour nous de répondre à un réel besoin de façon particulièrement efficace et élégante !

Notre avis sur ces deux nouveautés

Jouons les experts BFM, et donnons notre avis sur ces dernières annonces !

Chez Raspbian France, nous sommes très satisfaits de voir débarquer ces deux nouveaux produits dans le catalogue de la fondation.

Un Wi-Fi très attendu sur la Raspberry Pi Zéro

Pour nous, l’ajout du Wi-Fi à la Raspberry Pi Zéro W est une excellente nouvelle et répond à un véritable besoin des utilisateurs !

En effet, jusqu’à présent la Raspberry Pi Zéro 1.3 ne disposait d’aucun moyen de se connecter à internet, sauf à passer par un dongle Wi-Fi comme celui-ci. De notre côté nous avons toujours considéré la Raspberry Pi Zéro 1.3 comme un très bon produit, mais dont l’absence de connectivité internet était en totale opposition avec son but.

Nous avons toujours envisagé la Raspberry Pi zéro comme un excellent moyen de faire de la domotique, de l’embarqué ou de la robotique, et le Wi-Fi, comme d’ailleurs le Bluetooth, nous semblent être absolument essentiels à ces types d’usages.

Aujourd’hui, nous considérons donc que l’ajout de ces deux technologies à la Raspberry Pi Zéro W sont non seulement pertinents et utiles, mais permettent réellement de faire de l’offre Pi Zéro un produit mature et parfaitement adapté à ces nouveaux usages.

Un boîtier de qualité qui ouvre des portes

De la même façon que l’ajout du Wi-Fi et du Bluetooth intégrés apportent de nouveaux usages, nous pensons que le boîtier officiel de la Raspberry Pi Zéro apporte avec lui une nouvelle façon d’envisager les choses et ouvre des portes vers de nouvelles pratiques.

Avec la possibilité de changer le couvercle du boîtier selon les utilisations, la fondation propose un système à la fois simple, élégant et pratique pour couvrir tous les usages et évolutions qui jalonnent l’utilisation quotidienne d’une Raspberry Pi, en plein accord avec l’esprit Do It Yourself du milieu.

La fondation a su s’inspirer du travail qu’elle avait initié avec le boîtier officiel de la Raspberry Pi 3 (boîtier que vous pouvez retrouver ici), pour l’enrichir et lui donner toute sa dimension avec ce nouveau boîtier. Un magnifique exemple de design incrémental !

Nous espérons vraiment voir les autres constructeurs s’inspirer de cette idée et proposer plus de boîtiers innovants !

Au final, ces différents produits viennent compléter le catalogue des produits officiels de la fondation Raspberry Pi. Pour plus d’infos, vous pouvez retrouver notre analyse de tous les accessoires officiels de la Raspberry Pi !

Cet article Sortie de la Raspberry Pi Zéro W, une Raspberry à 10€, notre analyse et nos conseils est apparu en premier sur Raspbian-France.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.