Di mana Skype menyimpan avatar kontak saya di Linux?


9

Saya menggunakan Skype di Linux.

Di mana saya dapat menemukan gambar di-cache oleh skype dari avatar kontak saya?


Saya tidak memiliki Linux di laptop saya sekarang untuk memverifikasi, tetapi Anda memeriksa isi direktori ~ / .Skype.
kartikmohta

Jawaban:


5

Saya ingin mendapatkan avatar Skype itu juga, jadi saya menggunakan jawaban whitequark untuk membuat skrip bash kecil yang melakukan hal itu. Ini dia:

#! / bin / bash

if [\ ($ # -lt 1 \)];
kemudian
  echo "Penggunaan: folder $ 0";
  echo "Di mana folder berbentuk /home/username/.Skype/username";
  keluar;
fi;

untuk saya di `ls $ 1`;
melakukan
  jika [-f $ 1 / $ i];
  kemudian
    #echo "i: $ i";
    diajukanump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ diajukanump "| wc -l`; # kemunculan karakter \ n. Berarti ada kejadian nocc-1 dari kata kami
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    kemudian
      k = 0;
      old_IFS = $ IFS; pemisah #field
      IFS = $ '\ n';
      offset = 0;
      untuk j dalam $ diajukan;
      melakukan
        w = `echo $ j | wc -m`; # memberikan sebenarnya lettercount +1
        w = $ [w-1];
        offset = $ [offset + w];
        #echo "offset: $ offset";
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        filename2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 jika = $ 1 / $ i dari = $ filename1 skip = `echo" $ offset / 2 "| bc` status = noxfer;
        if [`du $ filename1 | cut -f1` -gt 0];
        kemudian
          konversikan $ filename1 $ filename2; #convert sebenarnya hanya digunakan untuk menghapus data setelah gambar
        fi;
        rm $ filename1;
        k = $ [k + 1];
      dilakukan;
      IFS = $ old_IFS;
    fi;
  fi;
selesai

Ini tidak selalu berhasil, ada beberapa avatar yang tidak ditemukan dan mengekstrak beberapa gambar yang rusak. Lihat jawaban saya untuk solusi yang lebih bersih.
Guillaume Brunerie

8

Berikut ini adalah skrip yang jauh lebih bersih yang mengekstraksi avatar rendah dan def tinggi dari file main.db dan menyimpannya ke file yang dinamai sesuai nama pengguna Skype yang sesuai.

Anda perlu sqlite3 dan xxd untuk menjalankan skrip ini.

Konten dari database main.db cukup mudah dimengerti, dengan sedikit imajinasi ada banyak lagi yang bisa diekstraksi darinya.

#!/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

4

Thread forum Skype ini tentang avatar: http://forum.skype.com/index.php?showtopic=99471 .

  • Pertama, mereka membahas beberapa perintah yang memungkinkan Anda menyimpan avatar dari cache Skype dengan antarmuka publik melalui itu tampaknya tidak berfungsi di Linux. Saya tidak tahu apakah mereka sudah memperbaiki antarmuka itu, dan bukan itu pertanyaan Anda.
  • Kedua, satu Skype dev mengatakan bahwa semua gambar disimpan dalam format JPEG dan memberikan header dalam hex ( JFIF). grep'ing hexdump dari semua file Skype dengan for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; doneperintah mengungkapkan banyak kejadian header ini di file .Skype / userNNN.dbb di mana NNN adalah beberapa nomor. File-file ini memiliki beberapa format kepemilikan yang benar-benar tidak berdokumen dan mungkin menyimpan semua informasi yang di-cache tentang pengguna; Anda dapat mengekstraksi avatar sendiri dengan memindai header dan kemudian menyalin semuanya sampai akhir file ke file lain. Semua pemirsa gambar akan melewatkan data apa pun setelah gambar itu sendiri (berdasarkan teknologi RARJPG), dan jika Anda ingin menghilangkan sampah, Anda dapat "memodifikasinya" tanpa memodifikasi misalnya dengan imagemagick dan perintahconvert file.jpg file_clean.jpg. ImageMagick berperilaku sebagai penampil yang dijelaskan: ia membaca gambar, melompati apa pun yang mengikutinya dan kemudian hanya menulis gambar itu sendiri.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.