Ich benutze Skype unter Linux.
Wo finde ich Bilder, die per Skype von den Avataren meines Kontakts zwischengespeichert wurden?
Ich benutze Skype unter Linux.
Wo finde ich Bilder, die per Skype von den Avataren meines Kontakts zwischengespeichert wurden?
Antworten:
Ich wollte auch diese Skype-Avatare haben, also habe ich die Antwort von Whitequark verwendet, um ein kleines Bash-Skript zu erstellen, das genau das tut. Hier ist es:
#! / bin / bash if [\ ($ # -lt 1 \)]; dann echo "Verwendung: $ 0 Ordner"; echo "Wo der Ordner die Form /home/username/.Skype/username hat"; Ausfahrt; fi; für i in `ls $ 1`; tun if [-f $ 1 / $ i]; dann #echo "i: $ i"; fileump = "hexdump -v -e" "1/1% 02x" $ 1 / $ i | sed -es / ffd8ffe0 / \ nffd8ffe0 / g'`; nocc = `echo" $ filesump "| wc -l`; # Vorkommen des Zeichens \ n. Bedeutet, dass es keine Vorkommen unseres Wortes gibt #echo "nocc: $ nocc"; if ["$ nocc" -ge 2]; dann k = 0; old_IFS = $ IFS; # Feldtrennzeichen IFS = $ '\ n'; Offset = 0; für j in $ Filedump; tun w = `echo $ j | wc -m`; # gibt tatsächlich die Anzahl der Buchstaben + 1 an w = $ [w-1]; Offset = $ [Offset + w]; #echo "offset: $ offset"; Dateiname1 = "$ {i} _ $ {k} _notclean.jpg"; Dateiname2 = "$ {i} _ $ {k} .jpg"; dd ibs = 1 if = $ 1 / $ i von = $ filename1 skip = `echo" $ offset / 2 "| bc` status = noxfer; if [`du $ filename1 | cut -f1` -gt 0]; dann konvertiere $ filename1 $ filename2; #convert wird eigentlich nur verwendet, um die Daten nach dem Bild zu entfernen fi; rm $ filename1; k = $ [k + 1]; erledigt; IFS = $ old_IFS; fi; fi; erledigt
Hier ist ein viel saubereres Skript, das sowohl Low-Def- als auch High-Def-Avatare aus der Datei main.db extrahiert und in Dateien speichert, die nach den entsprechenden Skype-Benutzernamen benannt sind.
Sie benötigen sqlite3 und xxd, um dieses Skript auszuführen.
Der Inhalt der main.db-Datenbank ist ziemlich einfach zu verstehen, mit ein wenig Fantasie kann noch viel mehr daraus extrahiert werden.
#!/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
In diesem Skype-Forenthread geht es um Avatare: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
) bereitstellen . Das Grep'ing des Hexdumps aller Skype-Dateien mit dem for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
Befehl ergab viele Vorkommen dieses Headers in .Skype / userNNN.dbb-Dateien, in denen NNN eine Zahl ist. Diese Dateien haben ein absolut undokumentiertes, proprietäres Format und enthalten wahrscheinlich alle zwischengespeicherten Informationen über Benutzer. Sie können Avatare selbst extrahieren, indem Sie nach Headern suchen und dann alles bis zum Ende der Datei in eine andere Datei kopieren. Alle Bildbetrachter überspringen alle Daten nach dem Bild selbst (eine Technologie, auf der RARJPG basiert), und wenn Sie Junk aus ihnen entfernen möchten, können Sie sie "ändern", ohne sie zu ändern, z. B. mit imagemagick und Befehlconvert file.jpg file_clean.jpg
. ImageMagick verhält sich wie beschrieben: Es liest ein Bild, überspringt alles, was darauf folgt, und schreibt dann nur das Bild selbst.