Sto usando Skype su Linux.
Dove posso trovare le immagini memorizzate nella cache da skype degli avatar del mio contatto?
Sto usando Skype su Linux.
Dove posso trovare le immagini memorizzate nella cache da skype degli avatar del mio contatto?
Risposte:
Volevo ottenere anche quegli avatar di Skype, quindi ho usato la risposta di whitequark per creare un piccolo script bash che fa proprio questo. Ecco qui:
#! / Bin / bash if [\ ($ # -lt 1 \)]; poi echo "Utilizzo: cartella $ 0"; echo "Dove cartella è nel formato /home/username/.Skype/username"; Uscita; fi; per i in `ls $ 1`; fare se [-f $ 1 / $ i]; poi #echo "i: $ i"; filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`; nocc = `echo" $ filedump "| wc -l`; # occorrenze del carattere \ n. Significa che ci sono occorrenze nocc-1 della nostra parola #echo "nocc: $ nocc"; if ["$ nocc" -ge 2]; poi k = 0; old_IFS = $ IFS; # separatore di campo IFS = $ '\ n'; offset = 0; per j in $ filedump; fare w = `echo $ j | wc -m`; # dà effettivamente lettercount + 1 w = $ [w-1]; offset = $ [+ offset w]; #echo "offset: $ offset"; nomefile1 = "$ {i} _ $ {k} _notclean.jpg"; nomefile2 = "$ {i} _ $ {k} .jpg"; dd ibs = 1 if = $ 1 / $ i di = $ nomefile1 skip = `echo" $ offset / 2 "| bc` status = noxfer; if [`du $ nomefile1 | cut -f1` -gt 0]; poi converti $ nomefile1 $ nomefile2; #convert è effettivamente utilizzato solo per rimuovere i dati dopo l'immagine fi; rm $ nomefile1; k = $ [k + 1]; fatto; IFS = $ old_IFS; fi; fi; fatto
Ecco uno script molto più pulito che estrae sia gli avatar a bassa definizione che quelli ad alta definizione dal file main.db e li salva in file che prendono il nome dai corrispondenti nomi utente di Skype.
Avrai bisogno di sqlite3 e xxd per eseguire questo script.
Il contenuto del database main.db è abbastanza facile da capire, con un po 'di immaginazione c'è molto di più che potrebbe essere estratto da esso.
#!/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
Questo thread del forum di Skype riguarda gli avatar: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
). grep'ing hexdump di tutti i file Skype con il for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
comando ha rivelato molte occorrenze di questa intestazione nei file .Skype / userNNN.dbb dove NNN è un numero. Questi file hanno un formato proprietario assolutamente non documentato e probabilmente mantengono tutte le informazioni memorizzate nella cache degli utenti; puoi estrarre gli stessi avatar scansionando l'intestazione e quindi copiando tutto fino alla fine del file in un altro file. Tutti i visualizzatori di immagini salteranno tutti i dati dopo l'immagine stessa (una tecnologia su cui si basa RARJPG) e se si desidera rimuovere la spazzatura da essi, è possibile "modificarla" senza modificarla, ad esempio con imagemagick e il comandoconvert file.jpg file_clean.jpg
. ImageMagick si comporta come il visualizzatore descritto: legge l'immagine, salta tutto ciò che la segue e quindi scrive solo l'immagine stessa.