Gdzie Skype zapisuje awatary moich kontaktów w systemie Linux?

9

Używam Skype'a w systemie Linux.

Gdzie mogę znaleźć obrazy buforowane przez skype awatarów mojego kontaktu?

Andrea Ambu
źródło
Nie mam teraz Linuksa na swoim laptopie, żeby to sprawdzić, ale sprawdzasz zawartość katalogu ~ / .Skype.
kartikmohta

Odpowiedzi:

5

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:

#! / bin / bash

if [\ ($ # -lt 1 \)];
następnie
  echo „Użycie: folder $ 0”;
  echo "Gdzie folder ma postać /home/username/.Skype/username";
  wyjście;
fi;

dla i w `ls $ 1`;
zrobić
  jeśli [-f $ 1 / $ i];
  następnie
    #echo „i: $ i”;
    filedump = `hexdump -v -e '" "1/1"% 02x "" "$ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ filedump "| wc -l`; # wystąpienia znaku \ n. Oznacza to, że w naszym słowie występują nocc-1
    #echo "nocc: $ nocc";
    if [„$ nocc” -ge 2];
    następnie
      k = 0;
      old_IFS = $ IFS; # separator pól
      IFS = $ '\ n';
      offset = 0;
      dla j w $ filedump;
      zrobić
        w = `echo $ j | wc -m`; # daje faktycznie liczbę liter + 1
        w = $ [w-1];
        offset = $ [offset + w];
        #echo „offset: $ offset”;
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        filename2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = 1 $ / $ i z = $ filename1 skip = `echo" $ offset / 2 "| bc` status = noxfer;
        if [`$ $ nazwa_pliku1 | cut -f1` -gt 0];
        następnie
          konwersja $ nazwa_pliku1 $ nazwa_pliku2; #convert jest właściwie używany tylko do usuwania danych po obrazie
        fi;
        rm $ nazwa_pliku1;
        k = $ [k + 1];
      gotowy;
      IFS = $ old_IFS;
    fi;
  fi;
gotowy
Swergas
źródło
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
Guillaume Brunerie
źródło
4

Ten wątek na forum Skype dotyczy awatarów: http://forum.skype.com/index.php?showtopic=99471 .

  • 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.
Whitequark
źródło