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é
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
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.
Réponses:
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:
la source
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.
la source
Ce fil de discussion Skype concerne les avatars: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
). grep'ing hexdump de tous les fichiers Skype avec lafor i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
commande 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.la source