Comment cloner un disque dur entier avec ses partitions sous Linux


TL;DR

Si vous ne souhaitez pas lire l’article, exécutez la commande suivante pour obtenir la liste de vos disques/périphériques connectés :

udisksctl status

Puis lancez le clonage via la commande :

sudo dd conv=sync,noerror status=progress if=/dev/source of=/dev/cible

Cloner l’intégralité d’un disque (HDD/SSD) en une ligne de commande Linux

On ne le dira jamais assez, les sauvegardes, c’est primordial. Et pourtant ! Nombreuses sont les personnes au courant de cela mais qui pourtant n’en font jamais. C’est seulement lorsqu’un drame survient impliquant une perte de données totale et irrémédiable, que les personnes songent enfin à appliquer les bonnes pratiques en matière de sécurisation des données.

C’est pourquoi, aujourd’hui nous allons nous intéresser de plus près à une technique simple et rapide permettant de sauvegarder un disque dur ou un SSD entier, partitions comprises. Il s’agira donc réellement d’un clonage, ce qui peut prendre plusieurs heures – voir plus d’un jour – selon la vitesse de lecture/écriture de vos disques, ainsi que de la quantité de données à copier.

Comme l’indique le titre de cet article, nous ne parlons ici que de Linux qui permet d’effectuer un clonage en deux lignes de commandes, là où sur Windows certaines personne achètent des licences pour des logiciels qu’ils doivent installer et configurer et ainsi perdre davantage de temps.

Très bien, rentrons dans le vif du sujet.

Avant toute chose, si vous utilisez un disque dur externe, il est temps de le brancher. Ensuite, visualisez les disques connectés à votre PC à l’aide de la commande :

udisksctl status

Celle-ci retournera un résultat similaire à :

À l’aide de la colonne « MODEL », repérez le nom de votre disque dur source et de votre disque cible.
Vous pourrez dès lors visualiser dans la colonne « DEVICE » quel nom de montage leur a été attribué (sda, sdb, sdc…).

Ensuite, il suffit de préparer la commande de clonage :

sudo dd conv=sync,noerror status=progress if=/dev/source of=/dev/cible

En pensant à remplacer ici « /dev/source » par l’emplacement de votre disque dur où les fichiers à cloner se trouvent (la source), puis faire la même chose pour « /dev/cible » avec la cible (emplacement de sauvegarde). Faites bien attention à ne pas inverser les deux, sous peine d’écraser vos données !

Par exemple, si je souhaite sauvegarder tous les fichiers de mon SSD Samsung vers mon disque dur externe Western Digital, la commande sera :

sudo dd conv=sync,noerror status=progress if=/dev/sdb of=/dev/sdd

Une fois lancé, vous n’aurez plus qu’à patienter jusqu’à la fin :

Ce processus peut facilement mettre des heures, il ne reste donc plus qu’à être patient, mais une fois terminé vous obtiendrez deux disques identiques !

Comment chiffrer/déchiffrer tous ses messages privés (MP) sur Discord


TL;DR

Si vous ne souhaitez pas lire l’article, installez Python puis en ligne de commandes installez les dépendances suivantes avant de lancer le script disponible en fin d’article :

pip install colorama
pip install pycryptodome
pip install discord.py

Obfusquer (rendre illisible) des messages privés sur Discord

Discord regorge de serveurs en tout genre, parfois politisés ou sensibles tels que ceux traitant de sujets borderline (le hacking pour ne citer que lui). Vous êtes donc rapidement susceptible un jour ou l’autre de discuter en message privé à certaines personnes de choses qui feraient mieux de rester privé en toute circonstances.

Malheureusement, ce n’est jamais complètement possible ! Discord n’étant de plus, pas un des logiciels de communication les plus sécurisés que ce soit au niveau de l’acheminement des données ou du nombre impressionnant de hackers tentant de s’emparer de votre token par n’importe quel moyen.

Alors si un jour pour une raison mystérieuse, vous souhaitez rendre illisibles vos communications avec autrui, plutôt que de supprimer l’ensemble de vos messages et ce, dans le but de les déchiffrer par la suite, ne cherchez pas plus loin : nous avons la solution.

Le membre Ranma Saotome vous a en effet concocté un script Python permettant de chiffrer/déchiffrer tous les messages privés que vous avez échangé avec n’importe qui en un rien de temps. Gardez toutefois à l’esprit que l’utilisation d’un self-bot est interdite selon les termes et conditions de Discord, bien que le risque soit faible, surtout avec le délai entre chaque actions que nous avons ajouté.

La première étape, est d’installer Python dans sa version 3.X, disponible à l’adresse suivante :

Lors de l’installation, n’oubliez pas de cocher la case « Add to path » si vous êtes sous Windows (inutile sous Linux).

Une fois installé, vous devrez dans un premier temps installer les dépendances du script :

pip install colorama
pip install pycryptodome
pip install discord.py

Une fois fait, vous n’aurez plus qu’à télécharger le script :

Télécharger le script

Ou le créer vous-même en local à l’aide du code suivant :

import time

from os.path import isfile
from json import dump, load
from base64 import b64encode as b6e, b64decode as b6d
from secrets import token_hex


from Crypto.Cipher import AES
from colorama import init, Fore, Style
from discord.ext import commands
from discord import DMChannel

#
init(autoreset=True)

user_Account = commands.Bot(command_prefix="!", help_command=None, self_bot=True)


@user_Account.event
async def on_connect():
    print('')
    print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Successfully connected', end='\n\n')
    print(Style.BRIGHT + Fore.LIGHTGREEN_EX + f'Welcome {user_Account.user}, your id is: {user_Account.user.id}')


#


@user_Account.command()
async def encrypt(ctx):
    #
    """user = await user_Account.fetch_user(receiver)
    channel = user_Account.get_channel(user.id)"""
    await ctx.message.delete()
    messages = await ctx.channel.history(limit=1000).flatten()
    with open('token.json', 'r') as f:
        key = load(f)['aes_key']
    for msg in messages:
        if msg.author.id == user_Account.user.id:
            try:
                await msg.edit(content=MANAGER().encryptMessage(key, str(msg.content)))
                time.sleep(0.5)
                #
            except ValueError:  # Padding error happens for spec messages => b64 then
                try:
                    await msg.edit(content=b6e(msg.content.encode()).decode())
                except ValueError:
                    print("message can't be encoded")


#


@user_Account.command()
async def decrypt(ctx):
    #
    """user = await user_Account.fetch_user(receiver)
        channel = user_Account.get_channel(user.id)"""
    await ctx.message.delete()
    messages = await ctx.channel.history(limit=1000).flatten()
    with open('token.json', 'r') as f:
        key = load(f)['aes_key']
    for msg in messages:   # Ignore the command !decrypt or I can juste delete it messages[1:]
        if msg.author.id == user_Account.user.id:
            try:
                await msg.edit(content=MANAGER().decryptMessage(key, str(msg.content)))
                time.sleep(0.5)
                #
            except ValueError:  # Padding error happens for spec messages => b64 then
                try:
                    await msg.edit(content=b6d(msg.content.encode()).decode())
                except ValueError:
                    print("message can't be decoded")


#


def get_Token():
    #
    if not isfile('token.json'):
        print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Token not found !!', end='\n\n')
        #
        with open('token.json', 'w') as f:
            print(Style.BRIGHT + Fore.LIGHTYELLOW_EX + '[!] Please enter your token: ')
            token = input('')
            dump({'token': b6e(token.encode()).decode(), 'aes_key': token_hex(16)}, f, ensure_ascii=False, indent=4)

    with open('token.json', 'r') as f:
        content = load(f)
        return b6d(content['token']).decode()


#


class USER:
    def __init__(self):
        self.TOKEN = get_Token()
        #

    def Login(self):
        user_Account.run(self.TOKEN, bot=False)
        #


class MANAGER:
    def __init__(self):
        self.algo = AES
        self.MODE = self.algo.MODE_CBC
        self.pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)
        self.unpad = lambda s: s[:-ord(s[len(s) - 1:])]
        self.iv = b'\x00' * 16

    #

    def encryptMessage(self, key: str, message_content: str):
        return b6e(self.algo.new(key.encode(), self.MODE, self.iv).encrypt(self.pad(message_content).encode())).decode()

    def decryptMessage(self, key: str, message_content: str):
        return self.unpad(self.algo.new(key.encode(), self.MODE, self.iv).decrypt(b6d(message_content.encode())).decode())


#


if __name__ == '__main__':
    print('SELF-bot messages editor by Ranma Saotome & bugfix by DK')
    User = USER()
    User.Login()

Il faudra renseigner dans un premier temps votre token afin de générer un fichier contenant votre clé AES et votre token pour permettre de chiffrer/déchiffrer dans les deux sens.

Une fois cela fait, rendez-vous dans les MP d’un de vos contacts et écrivez :

!encrypt

ou :

!decrypt

Afin de chiffrer ou déchiffrer les 1000 derniers messages recensés. (du plus récent au plus vieux). Si vous souhaitez en chiffrer davantage, il suffit de modifier la valeur « 1000 » contenue dans les fonctions encrypt et decrypt par le chiffre de votre choix :

messages = await ctx.channel.history(limit=1000).flatten()

Et voilà ! Vos messages seront désormais illisible pour les tierces personnes :

Comment retrouver le compteur de dislikes (j’aime pas) sur YouTube


TL;DR

Si vous ne souhaitez pas lire l’article, installez l’une des extensions suivantes selon votre navigateur :


Pourquoi Youtube a supprimé le compteur de dislikes (j’aime pas)

Ça y est, c’est officiel. À partir d’aujourd’hui YouTube a exécuté sa menace et supprimé le compteur qui affichait le nombre de personnes qui n’aimaient pas les vidéos.

Tout est parti d’un simple constat de la part de YouTube qui avançait il y a de cela deux semaines, que cacher le compteur de dislikes n’influencerait pas sur l’expérience des utilisateurs :

Selon eux, même si une vidéo était très mal notée cela ne faisait pas constamment fuir les utilisateurs qui pouvaient tout de même rester sur la vidéo afin de juger d’eux même de sa qualité. Or, que ce soit vrai ou non, ils ne parlent ici en vérité que d’une minorité de personnes.

Il suffit de s’intéresser à des secteurs de niche tel que le warez sur YouTube pour se rendre compte que ce fameux compteur était absolument un critère de choix lors du visionnage des vidéos.

Alors ça y est, désormais vous ne verrez plus que les likes :

Peut-être que bientôt le compteur de likes viendra à disparaître, si YouTube continue sur cette voie, sachant que celui-ci n’est plus utile compte tenu du fait que nous n’avons plus accès au ratio likes/dislikes. Mais rassurez vous, des développeurs ont déjà bossé sur une solution.

 

Remettre le compteur de j’aime pas (dislike) sur YouTube

Le jour même de l’annonce, celle-ci a fait l’effet d’une forte polémique et des développeurs commenceraient dès lors à travailler sur une alternative, notamment à l’aide de l’API de YouTube elle-même.

Ainsi, tant que YouTube ne décide pas d’également supprimer cette information de son API, les « vrais » compteurs seront toujours récupérables grâce à des extensions.

Voici les plus populaires à ce jour :

Il vous suffit de l’installer, aller sur YouTube et constater le résultat :

Tout sera rentré dans l’ordre, comme par magie ! Il ne reste plus qu’à espérer que cela tiennes et que YouTube ne refasse pas des siennes avant quelque temps ! 😉

Comment compresser et redimensionner des images en masse sous Linux


TL;DR

Si vous ne souhaitez pas lire l’article, exécutez ce pack de commandes dans le dossier contenant vos images :

sudo apt-get update && sudo apt-get install imagemagick optipng jpegoptim && find . -name '*.jpg' -exec mogrify -resize 2500x2500\> {} \; -exec jpegoptim --strip-all --max=80 {} \; && find . -name '*.jpeg' -exec mogrify -resize 2500x2500\> {} \; -exec jpegoptim --strip-all --max=80 {} \; && find . -name '*.png' -exec mogrify -resize 2500x2500\> {} \; -exec optipng -strip all -o2 {} \;

Réduire en masse la taille de toutes les images jpg/jpeg/png d’un dossier

J’ai récemment pris le temps de nettoyer et trier les fichiers de mon ordinateur et c’est à ce moment précis que je me suis rendu compte à quel point les images pouvaient être lourdes. On en arrive parfois à stocker des packs d’images qui ensembles, dépassent largement la taille d’un film.

L’une des premières raisons à cela est l’augmentation de la qualité et de la résolution des appareils photo, qu’ils soient mobiles ou non. Quand aujourd’hui vous pouvez vous procurer pour une centaine d’euros un Xiaomi à 48mpx qui produit des images de plusieurs mégaoctets à l’unité, on comprend vite pourquoi notre téléphone ou carte SD sature en stockage.

Étant sous Linux, je me suis donc penché sur les paquets les plus populaires et relativement performants afin de compresser n’importe quelle image, qu’elle soit au format jpg, jpeg ou png, mais également mettre une résolution maximale de 2500×2500.

 

Installer les paquets d’optimisation d’image imagemagick, jpegoptim et optipng

Afin de parvenir à notre but qui est de diviser le poids de nos images, nous avons besoin d’installer trois paquets :

  1. Imagick qui est nécessaire à jpegoptim
  2. jpegoptim qui optimise les fichiers jpeg et jpg
  3. optipng qui optimise les fichiers png

 

Pour ce faire, exécutez les commandes suivantes :

sudo apt-get update
sudo apt-get install imagemagick optipng jpegoptim

Rien de plus n’est nécessaire.

 

Comment utiliser jpegoptim et optipng

Je ne vais pas y aller par quatre-chemins, voici directement un exemple concret d’utilisation :

find . -name '*.jpg' -exec mogrify -resize 2048x2048\> {} \; -exec jpegoptim --strip-all --max=80 {} \;
find . -name '*.jpeg' -exec mogrify -resize 2048x2048\> {} \; -exec jpegoptim --strip-all --max=80 {} \;
find . -name '*.png' -exec mogrify -resize 2048x2048\> {} \; -exec optipng -strip all -o2 {} \;

Chaque ligne a pour but de :

  1. Chercher tous les fichiers ayant pour extension soit « jpg », « jpeg » ou « png »
  2. Leur mettre une taille maximale de 2048×2048, notez le « /> » après cette résolution, cela signifie qu’il ne faut pas agrandir une image ou la déformer : le ratio sera respecté et seules les images plus grandes seront retaillées
  3. Exécuter une optimisation soit via jpegoptim, soit optipng tout en précisant de retirer toutes les informations inutiles (EXIF par exemple) et conserver une qualité de 80% afin de réduire davantage la taille

 

Et c’est tout. À noter que « mogrify » signifie optimiser l’image directement (écraser l’originale) plutôt que d’en faire une copie et d’avoir à trier par la suite.

Si vous ne souhaitez pas avoir à vérifier quand chaque commande a été effectuée afin de lancer la suivante, vous pouvez combiner les trois en une :

find . -name '*.jpg' -exec mogrify -resize 2500x2500\> {} \; -exec jpegoptim --strip-all --max=80 {} \; && find . -name '*.jpeg' -exec mogrify -resize  2500x2500\> {} \; -exec jpegoptim --strip-all --max=80 {} \; && find . -name '*.png' -exec mogrify -resize  2500x2500\> {} \; -exec optipng -strip all -o2 {} \;

À noter que optipng est le paquet qui semble (au premier abord) le moins performant. Même avec un taux de compression plus élevé (le paramètre -o), celui-ci ne réduit pas la taille autant que ne le fait jpegoptim, en plus d’être beaucoup plus long à l’exécution.

Comment contourner la vérification d’âge sur YouTube (nouvelle limitation)

YouTube a récemment mis en place un système de vérification d’âge pour les citoyens européens nécessitant une carte bancaire comme justificatif. Heureusement, plusieurs méthodes existent pour contourner cette vérification.

Méthode 1 : Contourner la limite d’âge via NSFW YouTube 

NSFW YouTube permet de débloquer rapidement le visionnage de vidéos.
Pour cela, il suffit d’insérer le mot
nsfw juste avant youtube dans l’URL.

 

 

Vous êtes ensuite redirigé directement vers le site de NSFW YouTube et vous pouvez directement lancer votre vidéo sans soucis.

 

Méthode 2 : Contourner la limite d’âge avec l’embed YouTube

Cette méthode est aussi rapide que la première car il suffit simplement de modifier l’URL
Cette fois-ci, il suffit de remplacer watch?v= par embed/ dans l’URL de la vidéo.

Par exemple :

 

 

 

donnera par la suite :

 

 

Vous arriverez sur une page contenant uniquement la vidéo YouTube.

 

Méthode 3 : Contourner la limite d’âge YouTube avec VLC (lecteur multimédia)

Le logiciel VLC offre la possibilité de regarder des vidéos en streaming. On peut donc aussi regarder des vidéos YouTube avec ce dernier.

1. Commencez par copier l’URL de la vidéo YouTube
2. Ouvrez VLC. Celui est disponible à l’adresse : www.videolan.org
3. Allez dans « Ouvrir un flux réseau » sous l’onglet « Média » ou directement avec le raccourci <Ctrl-N>.

 

 

 

 

 

 

 

 

 

 

4. Collez le lien et lancez la lecture de la vidéo

Les outils de recherche Google

Les différents outils de recherche Google

Vous utilisez probablement Google tous les jours et pourtant, il est fort probable que vous n’utilisez pas 1/10ème des fonctions qu’il propose. En effet, le moteur de recherche met à votre disposition plusieurs outils de recherche Google tel qu’une calculatrice graphique, un convertisseur universel, vous dire à quelle heure se couche le soleil…

Et en dehors de ces outils de recherches, vous avez aussi des opérateurs qui peuvent vous permettre d’affiner les résultats que le moteur de recherche vous renvois !

Calculatrice

Tapez simplement votre calcul dans la barre de recherche :

Vous pouvez aussi avoir accès à une calculatrice graphique en tapant des équations à inconnues :

 

Conversions

Tapez dans un premier temps le nombre suivi de son unité, puis dans un second temps précisez dans quelle unité vous souhaitez la convertir (ne marche pas avec toutes les unités).

 

Recherche multimédia

Vous avez la possibilité de rechercher des films / musique ou livres par auteurs ou par genre, voici par exemple le résultat d’une recherche pour des films fantastiques sortis en 2016 :

 

Obtenir la température

Tapez simplement « température » et vous obtiendrez une résumé de la météo de votre ville !

 

Levé et coucher du soleil

Tapez dans la barre de recherche : « levé du soleil coucher du soleil » vous avez aussi la possibilité de préciser la ville.

 

Heure dans les autres pays

Vous n’avez qu’à demander : « Quelle heure est-il à… » suivi de la ville ou le pays souhaité.

 

Obtenir une définition

Si vous souhaitez obtenir directement une définition, vous pouvez utiliser le mot « définir » suivi du mot souhaité, par exemple si je tape « Thomas » tout court, je n’ai pas de définition. En revanche si je tape « définir Thomas », j’obtient une définition !

Il existe plusieurs raccourcis vous permettant d’affiner vos recherche ou de trouver des résultats appartenant qu’à un site spécifique.

Voici un tableau récapitulatif de toutes les fonctions que vous pouvez utiliser lors de vos recherches :

Exemple de requête Résultat
Windows Mobile Rechercher les mots Windows et Mobile
SLAM OR SISR Recherche le mot SLAM ou SISR
« FREEDOM SUBSTITUTE«  Recherche exacte
CoD kevin Supprimer le mot kevin des résultats
Borderlands +2 Rechercher le jeu Borderlands contenant le chiffre 2
how now * cow Les mots how now et cow séparés par un ou plusieurs mots
site:[URL du site] Cherche dans un site en particulier
link:[URL du site] Résultats en lien avec un autre site
Téléphone ASUS $100$300 Chercher des téléphones ASUS entre 100 et 300 dollars
daterange:(date) Afficher les résultats d’une plage de date
safesearch:(mots clés) Exclure les contenus pour adultes
info:(URL du site) Afficher les informations (cache, pages similaires…)
related:(URL du site) Pages en liens avec un autre site
cache:(URL du site) Afficher le cache d’une page
film filetype:mp4 Trouver des résultats avec une extension particulière
allintitle:(mots clés) Rechercher un mot clé dans l’URL d’une page
inurl:(mots clés) Chercher des téléphones ASUS entre 100 et 300 dollars
intext:(mots clés) Rechercher un mot clé dans le texte d’une page


Vous pouvez également vous offrir un des livres suivants afin de perfectionner vos compétences de recherches :

Quitter la version mobile