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?


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

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

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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.