Onde o Skype salva os avatares dos meus contatos no Linux?

9

Estou usando o Skype no Linux.

Onde posso encontrar imagens armazenadas em cache pelo skype dos avatares do meu contato?

Andrea Ambu
fonte
No momento, não tenho Linux no meu laptop para verificar, mas você verifica o conteúdo do diretório ~ / .Skype.
precisa saber é o seguinte

Respostas:

5

Eu também queria obter esses avatares do Skype, então usei a resposta do whitequark para criar um pequeno script bash que faz exatamente isso. Aqui está:

#! / bin / bash

if [\ ($ # -lt 1 \)];
então
  eco "Uso: pasta $ 0";
  echo "Onde a pasta está no formato /home/username/.Skype/username";
  Saída;
fi;

para i em `ls $ 1`;
Faz
  se [-f $ 1 / $ i];
  então
    #echo "i: $ i";
    filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ filedump "| wc -l`; # ocorrências do \ n char. Significa que existem ocorrências nocc-1 da nossa palavra
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    então
      k = 0;
      old_IFS = $ IFS; #field separator
      IFS = $ '\ n';
      deslocamento = 0;
      para j em $ filedump;
      Faz
        w = `eco $ j | wc -m`; # dá realmente número de letras + 1
        w = $ [w-1];
        deslocamento = $ [deslocamento + w];
        #echo "offset: $ offset";
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        filename2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = $ 1 / $ i de = $ filename1 skip = `echo" $ offset / 2 "| status bc` = não mais;
        if [`du $ filename1 | corte -f1` -gt 0];
        então
          converter $ filename1 $ filename2; #convert, na verdade, é usado apenas para remover os dados após a imagem
        fi;
        rm $ filename1;
        k = $ [k + 1];
      feito;
      IFS = $ old_IFS;
    fi;
  fi;
feito
Swergas
fonte
Isso nem sempre funciona, existem alguns avatares que não são encontrados e extraem algumas imagens quebradas. Veja minha resposta para uma solução mais limpa.
Guillaume Brunerie
8

Aqui está um script muito mais limpo, extraindo avatares de baixa e alta definição do arquivo main.db e salvando-os em arquivos com o nome dos nomes de usuário correspondentes do Skype.

Você precisará do sqlite3 e do xxd para executar este script.

O conteúdo do banco de dados main.db é bastante fácil de entender, com um pouco de imaginação, há muito mais que pode ser extraído dele.

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

Este tópico do fórum do Skype é sobre avatares: http://forum.skype.com/index.php?showtopic=99471 .

  • Primeiro, eles discutem alguns comandos que permitem salvar avatares do cache do Skype com sua interface pública, pois aparentemente não funcionam no Linux. Não sei se eles já consertaram essa interface e não é disso que se trata.
  • Segundo, um desenvolvedor do Skype disse que todas as imagens são armazenadas no formato JPEG e fornecem um cabeçalho em hex ( JFIF). grep'ing hexdump de todos os arquivos do Skype com o for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donecomando revelou muitas ocorrências desse cabeçalho nos arquivos .Skype / userNNN.dbb em que NNN é algum número. Esses arquivos têm um formato proprietário absolutamente não documentado e provavelmente estão mantendo todas as informações em cache sobre os usuários; você pode extrair os próprios avatares pesquisando o cabeçalho e copiando tudo até o final do arquivo para outro arquivo. Todos os visualizadores de imagem pulam todos os dados após a própria imagem (é baseada em uma tecnologia RARJPG) e, se você deseja remover o lixo deles, pode "modificá-lo" sem modificá-lo, por exemplo, com imagemagick e comandoconvert file.jpg file_clean.jpg. O ImageMagick se comporta como o visualizador descrito: lê a imagem, ignora qualquer coisa que a segue e depois grava apenas a própria imagem.
whitequark
fonte