Outil en ligne de commande zerobinpaste

zerobinpaste est un simple outil CLI (similaire à pastebinit ou wgetpaste) à utiliser avec des fichiers ou des redirection shell dans le terminal ou des scripts simples.

Exemple de cas d’utilisation:

% zerobinpaste README.rst
http://some.0bin.site/paste/0cc3d8a8...

% grep error /var/log/syslog | zerobinpaste
http://some.0bin.site/paste/81fd1324...

% zerobinpaste docs/en/*.rst
easy_install.rst http://some.0bin.site/paste/9adc576a...
apache_install.rst http://some.0bin.site/paste/01408cbd...
options.rst http://some.0bin.site/paste/921b2768...
...

% ps axlf | zerobinpaste | mail -s "Process tree on $(date)" root

Les liens produits peuvent être ensuite copier-coller sur un channel IRC ou autre.

L’outil produit le chiffrement lui-même sur la machine et la clé (après le hash) n’est jamais envoyée au serveur ou nul par ailleurs excepté la sortie standard de l’outil (ex: le terminal).

L’outil doit être buildé avec node.js séparément (voir plus bas).

Usage

Au minimum il faut préciser le site pastebin (l’url principal d’où on posterait dans le navigateur) doit être spécifié à l’outil via l’option -u (–url) (on peut le simplifier avec un alias shell - ex: alias zp='zerobinpaste -u http://some.0bin.site) ou dans le fichier de configuration “~/.zerobinpasterc” (format json).

Les arguments positionels sont interprétés comme des fichiers à uploader et chiffrer.
Si aucun argument n’est passé, le script tentera de lire stdin.

Le fichier de configuration le plus simple pourrait ressembler à celà:

{“url”: “http://some.0bin.site“}

Toute option (dans sa forme longue, ex: “url pour –url) utilisable en ligne de commande peut être spécifié ici.

Lancez l’outil avec -h ou –help pour voir la liste des paramètres supportés.

Build / Installation

En bref:

0bin% cd tools 0bin/tools% make ... 0bin/tools% cp zerobinpaste ~/bin # install to PATH

La commande “npm” (packagé and installé avec node.js) est requise pour télécharger les dépendances indispensables à la production de l’éxécutable.

Utilisez “make” dans le dossier “tools” pour produire une version non-minifié” de “zerobinpaste”.

La commande make ugly peut être utilisé à la place de make pour créer une version “minified” (requière l’installation de uglifyjs, script produit environ 25% plus petit en taille).

Le script “zerobinpaste” ainsi produit seulement besoin de node.js (et la commande “node”) pour s’éxcuter et peut être placé n’importe où dans le PATH système (ex : “~/bin”, “/usr/local/bin”) afin d’être exécuté en tapant simplement “zerobinpaste”.

Pourquoi node.js et pas python

Malheureusement, il est assez difficile et peu fiable de répliquer un protocole chiffrement non trivial et non documenté tel que celui de certaines méthodes de SJCL, et la moindre erreur garantie de produire une paste illisible.

L’implémentation actuelle utilise le même code Javascript (via le moteur V8 de node.js) que le navigateur, du coup il est simple et robuste.

Il est prévu de supporter plus tard un schéma de chiffrement plus configurable, moins complexe et plus courant, permettant à des clients non-javascript de fonctioner également.

Voir le pull request concerné pour plus de détails.