Où puis-je trouver des images mises en cache par skype des avatars de mon contact?
Je voulais obtenir ces avatars de Skype aussi, 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 Si [\ ($ # -lt 1 \)]; puis Echo "Utilisation: dossier $ 0"; Echo "Où le dossier est sous la forme /home/username/.Skype/username"; Sortie; Fi; Pour i in `ls $ 1`; faire Si [-f $ 1 / $ i]; puis #echo "i: $ i"; Filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | Sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`; Nocc = `echo" $ filedled "| Wc -l`; # Occurrences du \ n char. Signifie qu'il y a des occurrences de nocc-1 de notre mot #echo "nocc: $ nocc"; Si ["$ nocc" -ge 2]; puis K = 0; Old_IFS = $ IFS; #field separator IFS = $ '\ n'; Offset = 0; Pour j dans $ someted; faire W = `echo $ j | Wc -m`; # Donne effectivement lettercount + 1 W = $ [w-1]; Offset = $ [offset + w]; #echo "offset: $ offset"; Filename1 = "$ {i} _ $ {k} _notclean.jpg"; Filename2 = "$ {i} _ $ {k} .jpg"; Dd ibs = 1 si = $ 1 / $ i de = $ filename1 skip = `echo" $ offset / 2 "| Bc` status = noxfer; Si [`du $ filename1 | Cut -f1` -gt 0]; puis Convert $ filename1 $ filename2; #convert n'est en fait utilisé que pour supprimer les données après l'image Fi; Rm $ filename1; K = $ [k + 1]; terminé; IFS = $ old_IFS; Fi; Fi; terminé
Voici un script beaucoup plus propre qui extrait les avatars bas def et haute définition du fichier main.db et les enregistre dans les fichiers nommés 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 qui pourrait en être extrait.
#!/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
Ce thread du forum Skype concerne les avatars: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
). Grep'ing hexdump de tous les fichiers Skype avec le for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
commande for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
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 sans papiers et conservent probablement toutes les informations mises en cache sur les utilisateurs; Vous pouvez extraire les avatars eux-mêmes en scrutant l'en-tête, puis en copiant tout jusqu'à la fin du fichier vers un autre fichier. Tous les téléspectateurs d'images sauteront toutes les données après l'image elle-même (une technologie RARJPG est basée sur), et si vous souhaitez supprimer des déchets, vous pouvez "le modifier" sans modifier par exemple avec imagemagick et commande convert file.jpg file_clean.jpg
. ImageMagick se comporte comme une visionneuse décrite: il lit l'image, saute tout ce qui le suit, puis écrit uniquement l'image elle-même.