To nie zawsze działa, istnieje kilka awatarów, których nie znaleziono i wyodrębnia niektóre uszkodzone obrazy. Zobacz moją odpowiedź na czystsze rozwiązanie.
Guillaume Brunerie
8
Oto znacznie czystszy skrypt, który wyodrębnia zarówno awatary o niskiej jak i wysokiej rozdzielczości z pliku main.db i zapisuje je w plikach nazwanych na podstawie odpowiednich nazw użytkowników Skype.
Do uruchomienia tego skryptu potrzebujesz sqlite3 i xxd.
Zawartość bazy danych main.db jest dość łatwa do zrozumienia, przy odrobinie wyobraźni można z niej wyciągnąć znacznie więcej.
#!/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
Po pierwsze, omawiają niektóre polecenia, które pozwalają zapisywać awatary z pamięci podręcznej Skype przy użyciu publicznego interfejsu, który najwyraźniej nie działa w systemie Linux. Nie wiem, czy już naprawili ten interfejs, i nie o to chodzi w twoim pytaniu.
Po drugie, jeden programista Skype powiedział, że wszystkie obrazy są przechowywane w formacie JPEG i zawierają nagłówek w formacie hex ( JFIF). grep'ing hexdump wszystkich plików Skype za pomocą for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donepolecenia ujawnił wiele wystąpień tego nagłówka w plikach .Skype / userNNN.dbb, gdzie NNN jest liczbą. Pliki te mają całkowicie nieudokumentowany, zastrzeżony format i prawdopodobnie przechowują wszystkie buforowane informacje o użytkownikach; możesz wyodrębnić awatary, skanując nagłówek, a następnie kopiując wszystko do końca pliku do innego pliku. Wszystkie przeglądarki zdjęć pomijają wszelkie dane po samym obrazie (technologia oparta na RARJPG), a jeśli chcesz usunąć z nich śmieci, możesz je „zmodyfikować” bez modyfikacji np. Za pomocą imagemagick i poleceniaconvert file.jpg file_clean.jpg. ImageMagick zachowuje się jak opisana przeglądarka: odczytuje obraz, pomija wszystko, co następuje po nim, a następnie zapisuje sam obraz.
Odpowiedzi:
Chciałem też dostać te awatary na Skype, więc użyłem odpowiedzi whitequark, aby zrobić mały skrypt bash, który właśnie to robi. Oto on:
źródło
Oto znacznie czystszy skrypt, który wyodrębnia zarówno awatary o niskiej jak i wysokiej rozdzielczości z pliku main.db i zapisuje je w plikach nazwanych na podstawie odpowiednich nazw użytkowników Skype.
Do uruchomienia tego skryptu potrzebujesz sqlite3 i xxd.
Zawartość bazy danych main.db jest dość łatwa do zrozumienia, przy odrobinie wyobraźni można z niej wyciągnąć znacznie więcej.
źródło
Ten wątek na forum Skype dotyczy awatarów: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
). grep'ing hexdump wszystkich plików Skype za pomocąfor i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
polecenia ujawnił wiele wystąpień tego nagłówka w plikach .Skype / userNNN.dbb, gdzie NNN jest liczbą. Pliki te mają całkowicie nieudokumentowany, zastrzeżony format i prawdopodobnie przechowują wszystkie buforowane informacje o użytkownikach; możesz wyodrębnić awatary, skanując nagłówek, a następnie kopiując wszystko do końca pliku do innego pliku. Wszystkie przeglądarki zdjęć pomijają wszelkie dane po samym obrazie (technologia oparta na RARJPG), a jeśli chcesz usunąć z nich śmieci, możesz je „zmodyfikować” bez modyfikacji np. Za pomocą imagemagick i poleceniaconvert file.jpg file_clean.jpg
. ImageMagick zachowuje się jak opisana przeglądarka: odczytuje obraz, pomija wszystko, co następuje po nim, a następnie zapisuje sam obraz.źródło