Fonction shell pour récupérer la dernière version du navigateur Tor

This article is only available in french. It begins with a quick reminder of what the Tor project and the Tor browser are. This introduction is followed by a shell function I wrote to check if a new version of the Tor browser is available, and download it if needed.

Tor est un dispositif numérique permettant d’anonymiser sa navigation internet. Son principe de fonctionnement, reposant sur un réseau décentralisé de serveurs au sein duquel les requêtes vont transiter, garantit à de nombreuses personnes (lanceurs d’alerte, journalistes, activistes) la possibilité de consulter des sites interdits dans leurs pays ou une plus libre expression sans craindre la répression d’États autoritaires.

Son utilisation sur sa machine de tous les jours peut cependant s’avérer un rien complexe car il faut veiller à ne pas se trahir soit même en laissant transiter sur le réseau des informations permettant de nous identifiant en parallèle de notre utilisation de Tor. C’est pour cela que le projet Tor met à disposition depuis quelques temps déjà un produit tout packagé : le Tor Browser.

Ce dernier est construit autour de la version offrant un support à long terme de Firefox (Firefox ESR). L’utilisation de cette base très stable n’empêche pas le Tor Browser de se mettre à jour fréquemment, afin de corriger les problèmes ou failles de sécurité pouvant compromettre l’anonymat de ses utilisateurs.

Comme souvent en informatique, il devient vite intéressant d’automatiser les tâches répétitives. En l’occurrence : se rendre sur le site du Tor Browser, vérifier la dernière version disponible, comparer avec la version que l’on possède déjà et au besoin la télécharger à nouveau. C’est long et fastidieux. J’ai donc commis la fonction shell ci-après, à placer dans votre .bashrc ou .zshrc ou que sais-je, afin de simplement avoir à taper un dl_latest_tor_browser avant de l’utiliser la conscience tranquille.

dl_latest_tor_browser() {
    OLD_PWD=$(pwd)
    LAST_VER=$(\curl -s 'https://www.torproject.org/projects/torbrowser.html.en' | sed -n "s|^.*\.\./dist/torbrowser/\([0-9]\.[0-9]\.[0-9]\)/tor-browser-linux64-\([0-9]\.[0-9]\.[0-9]\)_fr\.tar\.xz\".*$|\1|p")
    if [ ! -n "$LAST_VER" ]; then
        LAST_VER=$(\curl -s 'https://www.torproject.org/projects/torbrowser.html.en' | sed -n "s|^.*\.\./dist/torbrowser/\([0-9]\.[0-9]\)/tor-browser-linux64-\([0-9]\.[0-9]\)_fr\.tar\.xz\".*$|\1|p")
    fi
    cd "$HOME/Téléchargements"
    if [ -d 'tor-browser_fr' ]; then
        CUR_VER=$(sed -n 1p tor-browser_fr/Browser/TorBrowser/Docs/ChangeLog.txt | sed -n "s/^Tor Browser \(.*\) -- .*$/\1/p")
        if [ "$LAST_VER" = "$CUR_VER" ]; then
            echo "You already have the last stable release: $LAST_VER"
            echo ''
            echo "Start it with: ${HOME}/Téléchargements/tor-browser_fr/Browser/start-tor-browser --detach"
            cd "$OLD_PWD"
            return
        fi
        rm -rf tor-browser_fr
    fi
    TOR_BUNDLE="tor-browser-linux64-${LAST_VER}_fr.tar.xz"
    [ -f "$TOR_BUNDLE" ] && rm "$TOR_BUNDLE"
    [ -f "$TOR_BUNDLE.asc" ] && rm "$TOR_BUNDLE.asc"
    wget "https://dist.torproject.org/torbrowser/${LAST_VER}/${TOR_BUNDLE}"
    wget "https://dist.torproject.org/torbrowser/${LAST_VER}/${TOR_BUNDLE}.asc"
    gpg --verify ${TOR_BUNDLE}{.asc,}
    tar xJf ${TOR_BUNDLE}
    rm "$TOR_BUNDLE" "$TOR_BUNDLE.asc"
    echo ''
    echo "The TOR browser v${LAST_VER} is here: ${HOME}/Téléchargements/tor-browser_fr"
    echo ''
    echo "Start it with: ${HOME}/Téléchargements/tor-browser_fr/Browser/start-tor-browser --detach"
    cd "$OLD_PWD"
}

Comme vous pouvez le constater, cette fonction effectue les tâches suivantes :

  1. récupérer le numéro de la dernière version stable
  2. comparer avec le numéro de la dernière version téléchargée et laissée dans le dossier $HOME/Téléchargements/tor-browser_fr
  3. si nécessaire télécharger la nouvelle version
  4. si une nouvelle version a été téléchargée, vérifier la signature numérique du paquet et l’extraire si tout va bien en lieu et place de l’ancienne version si elle existait

La vérification de la signature numérique implique que vous ayez déjà ajouté à votre trousseau de clefs publiques gpg celle utilisée par le projet Tor pour signer ses paquets :

gpg --keyserver pool.sks-keyservers.net --recv-keys 0x4E2C6E8793298290

Attention cependant, je n’ai pas (en tout cas pas dans cette version) mis en place de barrières strictes autour de cette vérification de signature. Si elle échoue, rien ne vous empêchera d’utiliser tout de même le Tor Browser téléchargé. Je vous encourage donc vivement à bien observer les messages affichés à l’écran au cours de l’utilisation de cette fonction.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Ajouter un rétrolien

URL de rétrolien : https://etienne.depar.is/a-ecrit/trackback/556