Де Skype зберігає аватари мого контакту в Linux?


9

Я використовую Skype в Linux.

Де я можу знайти зображення, кешовані скайпом аватарів мого контакту?


На моєму ноутбуці зараз немає Linux, щоб перевірити, але ви перевіряєте вміст каталогів ~ / .Skype.
kartikmohta

Відповіді:


5

Я також хотів отримати ці аватари Skype, тому я використав відповідь Whitequark, щоб створити невеликий скрипт, який робить саме це. Ось:

#! / бін / баш

якщо [\ ($ # -lt 1 \)];
тоді
  ехо "Використання: папка $ 0";
  ехо "Там, де папка має форму /home/username/.Skype/username";
  вихід;
fi;

для i в `ls $ 1`;
робити
  якщо [-f $ 1 / $ i];
  тоді
    #echo "i: $ i";
    fileump = `hexdump -v -e '" "1/1"% 02x "" "$ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ fileump "| wc -l`; # випадки \ n символу. Означає, що в нашому слові немає випадків 1cc
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    тоді
      k = 0;
      old_IFS = $ IFS; #field роздільник
      IFS = $ '\ n';
      зміщення = 0;
      для j в $ поданий;
      робити
        w = `відлуння $ j | wc -m`; # дає фактично кількість літер + 1
        w = $ [w-1];
        офсет = $ [зміщення + w];
        #echo "зміщення: $ offset";
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        filename2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1, якщо = $ 1 / $ i = $ filename1 skip = `echo" $ offset / 2 "| bc` статус = noxfer;
        if [`du $ filename1 | вирізати -f1` -gt 0];
        тоді
          конвертувати $ filename1 $ filename2; #convert насправді використовується лише для видалення даних після зображення
        fi;
        rm $ filename1;
        k = $ [k + 1];
      зроблено;
      IFS = $ old_IFS;
    fi;
  fi;
зроблено

Це не завжди працює, є деякі аватари, які не знайдені, і це витягує деякі зламані зображення. Дивіться мою відповідь щодо більш чистого рішення.
Гійом Брунері

8

Ось набагато чистіший скрипт, який витягує аватари з низькою та високою затримкою з файлу main.db та зберігає їх у файли, названі за відповідними іменами користувачів Skype.

Для запуску цього сценарію знадобляться sqlite3 та xxd.

Зміст бази даних main.db досить легко зрозуміти, за допомогою трохи уяви є набагато більше, що можна було б витягти з неї.

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

Ця тема форуму на Skype стосується аватарів: http://forum.skype.com/index.php?showtopic=99471 .

  • По-перше, вони обговорюють деякі команди, які дозволяють зберігати аватари з кешу Skype за допомогою цього загальнодоступного інтерфейсу через нього, мабуть, не працює в Linux. Я не знаю, чи вже виправили цей інтерфейс, і це не те, про що йдеться.
  • По-друге, один скайп-розробник сказав, що всі зображення зберігаються у форматі JPEG та надають заголовок у шістнадцятковій формі ( JFIF). grep'ing hexdump усіх файлів Skype за допомогою for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; doneкоманди виявив багато випадків цього заголовка у файлах .Skype / userNNN.dbb, де NNN - це деяке число. Ці файли мають деякий абсолютно недокументований, фірмовий формат і, ймовірно, зберігають всю кешовану інформацію про користувачів; ви можете витягти аватари, скануючи заголовок, а потім скопіювавши все до кінця файлу в інший файл. Усі переглядачі зображень будуть пропускати будь-які дані після самого зображення (на базі технології RARJPG), і якщо ви хочете видалити з них сміття, ви можете "змінити" їх без зміни, наприклад, за допомогою imagemagick та commandconvert file.jpg file_clean.jpg. ImageMagick поводиться так, як описаний глядач: він читає зображення, пропускає все, що йде за ним, а потім записує лише зображення.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.