Où Skype enregistre-t-il les avatars de mon contact sous Linux?

9

J'utilise Skype sur Linux.

Où puis-je trouver des images mises en cache par skype des avatars de mon contact?

Andrea Ambu
la source
Je n'ai pas Linux sur mon ordinateur portable pour le moment, mais vous vérifiez le contenu du répertoire ~ / .Skype.
kartikmohta

Réponses:

5

Je voulais aussi obtenir ces avatars Skype, alors j'ai utilisé la réponse de whitequark pour créer un petit script bash qui fait exactement cela. C'est ici:

#! / bin / bash

if [\ ($ # -lt 1 \)];
puis
  echo "Utilisation: dossier $ 0";
  echo "Où le dossier est au format /home/username/.Skype/username";
  sortie;
Fi;

pour i dans «ls $ 1»;
faire
  si [-f $ 1 / $ i];
  puis
    #echo "i: $ i";
    depositedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g' ';
    nocc = `echo" $ depositedump "| wc -l`; # occurrence du \ n char. Signifie qu'il y a des occurrences nocc-1 de notre parole
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    puis
      k = 0;
      old_IFS = $ IFS; # séparateur de champ
      IFS = $ '\ n';
      offset = 0;
      pour j dans $ fileump;
      faire
        w = `echo $ j | wc -m`; # donne en fait un nombre de lettres + 1
        w = $ [w-1];
        offset = $ [offset + w];
        #echo "offset: $ offset";
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        filename2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = $ 1 / $ i of = $ filename1 skip = `echo" $ offset / 2 "| bc` status = noxfer;
        if [`du $ filename1 | cut -f1` -gt 0];
        puis
          convertir $ filename1 $ filename2; #convert est en fait uniquement utilisé pour supprimer les données après l'image
        Fi;
        rm $ filename1;
        k = $ [k + 1];
      terminé;
      IFS = $ old_IFS;
    Fi;
  Fi;
terminé
Swergas
la source
Cela ne fonctionne pas toujours, il y a des avatars qui ne sont pas trouvés et il extrait des images cassées. Voir ma réponse pour une solution plus propre.
Guillaume Brunerie
8

Voici un script beaucoup plus propre qui extrait les avatars basse définition et haute définition du fichier main.db et les enregistre dans des fichiers nommés d'après les noms d'utilisateur Skype correspondants.

Vous aurez besoin de sqlite3 et xxd pour exécuter ce script.

Le contenu de la base de données main.db est assez facile à comprendre, avec un peu d'imagination, il y a beaucoup plus à en extraire.

#!/bin/bash

if (( $# != 1 ))
then
    echo "Usage: $0 folder"
    echo "Where folder is of the form /home/username/.Skype/username"
    exit 1
fi

# Magic string used at the beginning of JPEG files
magic=FFD8FFE0

# We read main.db and extract the Skype name, the avatar image and the
# attachments (which often contain a high-def version of the avatar image)
sqlite3 "$1/main.db" "select skypename,hex(avatar_image),hex(profile_attachments) from Contacts;" |\
while read line
do
    IFS='|'
    # We convert the line into an array
    a=($line)
    if [[ -n ${a[1]} ]]  # There is an avatar_image
    then
        # We strip everything before the magic string, convert it back to binary, and save it to a file
        echo $magic${a[1]#*$magic} | xxd -r -p > ${a[0]}_small.jpg
    fi
    if [[ -n ${a[2]} ]]  # There is a profile_attachments
    then
        # Same as above
        echo $magic${a[2]#*$magic} | xxd -r -p > ${a[0]}.jpg
    fi
done
Guillaume Brunerie
la source
4

Ce fil de discussion Skype concerne les avatars: http://forum.skype.com/index.php?showtopic=99471 .

  • Tout d'abord, ils discutent de certaines commandes qui vous permettent d'enregistrer des avatars du cache Skype avec son interface publique à travers elle ne fonctionne apparemment pas sous Linux. Je ne sais pas s'ils ont déjà corrigé cette interface, et ce n'est pas de cela qu'il s'agit.
  • Deuxièmement, un développeur Skype a déclaré que toutes les images sont stockées au format JPEG et fournissent un en-tête en hex ( JFIF). grep'ing hexdump de tous les fichiers Skype avec la for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donecommande a révélé de nombreuses occurrences de cet en-tête dans les fichiers .Skype / userNNN.dbb où NNN est un certain nombre. Ces fichiers ont un format propriétaire absolument non documenté et conservent probablement toutes les informations mises en cache sur les utilisateurs; vous pouvez extraire les avatars eux-mêmes en recherchant l'en-tête, puis en copiant tout jusqu'à la fin du fichier dans un autre fichier. Toutes les visionneuses d'images ignoreront toutes les données après l'image elle-même (une technologie basée sur RARJPG), et si vous voulez en supprimer les éléments indésirables, vous pouvez les "modifier" sans les modifier, par exemple avec imagemagick et la commandeconvert file.jpg file_clean.jpg. ImageMagick se comporte comme la visionneuse décrite: il lit l'image, ignore tout ce qui le suit et n'écrit que l'image elle-même.
whitequark
la source