Skype kişimin avatarlarını Linux'ta nereye kaydediyor?


9

Linux'ta Skype kullanıyorum.

Kişimin avatarlarının skype tarafından önbelleğe alınmış resimleri nerede bulabilirim?


Şu anda doğrulamak için dizüstü bilgisayarımda Linux yok, ancak ~ / .Skype dizin içeriğini kontrol ediyorsunuz.
kartikmohta

Yanıtlar:


5

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

Bu her zaman işe yaramaz, bulunmayan bazı avatarlar vardır ve bazı kırık görüntüleri çıkarır. Daha temiz bir çözüm için cevabımı görün.
Guillaume Brunerie

8

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

4

Bu Skype forum dizisi avatarlarla ilgili: http://forum.skype.com/index.php?showtopic=99471 .

  • İlk olarak, Skype arayüzünden avatarları genel arayüzüyle kaydetmenize izin veren bazı komutları tartışıyorlar, çünkü Linux üzerinde çalışmıyor. Bu arayüzü zaten düzeltip düzeltmediklerini bilmiyorum ve sorunuz bu değil.
  • İkincisi, bir Skype geliştirici tüm görüntülerin JPEG formatında saklandığını ve hex ( 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'; donehexdump'ı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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.