Linux'ta Skype kullanıyorum.
Kişimin avatarlarının skype tarafından önbelleğe alınmış resimleri nerede bulabilirim?
Linux'ta Skype kullanıyorum.
Kişimin avatarlarının skype tarafından önbelleğe alınmış resimleri nerede bulabilirim?
Yanıtlar:
Bu Skype avatarlarını da almak istedim, bu yüzden whitequark'ın cevabını, bunu yapan küçük bir bash senaryosu yapmak için kullandım. İşte burada:
#! / Bin / bash eğer [\ ($ # -lt 1 \)]; sonra echo "Kullanım: $ 0 klasör"; echo "Klasör /home/username/.Skype/username şeklindedir"; çıkış; fi; "ls $ 1" de; yapmak eğer [-f $ 1 / $ i]; sonra #echo "i: $ i"; filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`; nocc = `echo" $ dosyalama "| wc-1; # \ n karakter. Kelimemizin nocc-1 oluşumları olduğu anlamına gelir #echo "nocc: $ nocc"; eğer ["$ nocc" -ge 2]; sonra k = 0; old_IFS = $ IFS; # alan ayırıcı IFS = $ '\ n'; offset = 0; j için $ filedump; yapmak w = `yankı $ j | wc -m`; # aslında lettercount + 1 verir ağırlık = $ [a-1]; = $ [A ofset +] ofset #echo "ofset: $ ofset"; DosyaAdı1 = "$ {i} _ $ {k} _notclean.jpg"; DosyaAdı2 = "$ {i} _ $ {k} .jpg"; dd ibs = = = $ 1 / $ i = $ dosyaadı1 atla = `echo" $ ofset / 2 "| bc` durumu = noxfer; eğer [`du $ dosyaadı1 | kesim -f1-gt 0]; sonra dönüştürmek $ filename1 $ filename2; #convert aslında yalnızca resimden sonra verileri kaldırmak için kullanılır fi; rm $ dosyaadı1; k $ = [k + 1]; yapılan; IFS = $ old_IFS; fi; fi; tamam
Burada main.db dosyasından hem düşük hem de yüksek çözünürlüklü avatarları ayıklayan ve ilgili Skype kullanıcı adlarından sonra adlandırılan dosyalara kaydeden çok daha temiz bir komut dosyasıdır.
Bu komut dosyasını çalıştırmak için sqlite3 ve xxd'ye ihtiyacınız olacak.
Main.db veritabanının içeriğini anlamak oldukça kolaydır, biraz hayal gücü ile ondan çıkarılabilecek çok daha fazlası vardır.
#!/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
Bu Skype forum dizisi avatarlarla ilgili: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
) olarak bir başlık sağladığını söyledi . komutuyla tüm Skype dosyalarının for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
hexdump'ını grep'ing, bu başlığın .Skype / userNNN.dbb dosyalarında NNN'nin bir sayı olduğu birçok oluşumunu ortaya çıkardı. Bu dosyalar kesinlikle belgelenmemiş, özel bir biçime sahiptir ve muhtemelen kullanıcılar hakkında önbelleğe alınmış tüm bilgileri saklamaktadır; başlıkları tarayarak ve ardından dosya sonuna kadar her şeyi kopyalayarak avatarları kendileri çıkarabilirsiniz. Tüm resim görüntüleyicileri, resmin kendisinden sonra herhangi bir veriyi atlar (RARJPG'nin dayandığı bir teknoloji) ve bunlardan önemsiz olanı kaldırmak istiyorsanız, örneğin imagemagick ve komut ile değiştirmeden "değiştirebilirsiniz"convert file.jpg file_clean.jpg
. ImageMagick, tarif edilen izleyici gibi davranır: görüntüyü okur, onu takip eden her şeyi atlar ve sonra yalnızca görüntünün kendisini yazar.