Onde o Skype salva os avatares do meu contato no Linux?

9

Estou usando o Skype no Linux.

Onde posso encontrar imagens em cache pelo skype dos avatares dos meus contatos?

    
por Andrea Ambu 11.10.2009 / 22:22

3 respostas

5

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

#!/bin/bash

if [ \( $# -lt 1 \) ];
then
  echo "Usage: $0 folder";
  echo "Where folder is of the form /home/username/.Skype/username";
  exit;
fi;

for i in 'ls $1';
do
  if [ -f $1/$i ];
  then
    #echo "i: $i";
    filedump='hexdump -v -e '"" 1/1 "%02x" ""' $1/$i | sed -e 's/ffd8ffe0/\nffd8ffe0/g'';
    nocc='echo "$filedump" | wc -l'; # occurences of the \n char. Means that there are nocc-1 occurences of our word
    #echo "nocc: $nocc";
    if [ "$nocc" -ge 2 ];
    then
      k=0;
      old_IFS=$IFS; #field separator
      IFS=$'\n';
      offset=0;
      for j in $filedump;
      do
        w='echo $j | wc -m'; # gives actually lettercount+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 of=$filename1 skip='echo "$offset/2" | bc' status=noxfer;
        if [ 'du $filename1 | cut -f1' -gt 0 ];
        then
          convert $filename1 $filename2; #convert is actually only used to remove the data after the image
        fi;
        rm $filename1;
        k=$[k+1];
      done;
      IFS=$old_IFS;
    fi;
  fi;
done
    
por 09.06.2011 / 23:51
8

Aqui está um script muito mais limpo que extrai avatares de baixa definição e alta definição do arquivo main.db e os salva em arquivos com nomes de usuários do Skype correspondentes.

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 poderia 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
    
por 04.11.2012 / 02:42
4

Este tópico do fórum do Skype é sobre avatares: link .

  • Primeiro, eles discutem alguns comandos que permitem salvar avatares do cache do Skype com a interface pública, mas aparentemente não funciona no Linux. Eu não sei se eles já consertaram essa interface, e não é sobre isso que você pergunta.
  • Segundo, um desenvolvedor do Skype disse que todas as imagens são armazenadas no formato JPEG e fornecem um cabeçalho em hexadecimal ( JFIF ). O hexdump grep'ing de todos os arquivos do Skype com o comando for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done revelou muitas ocorrências desse cabeçalho nos arquivos .Skype / userNNN.dbb, em que NNN é um número. Esses arquivos têm algum formato proprietário e não documentado e provavelmente mantêm todas as informações armazenadas em cache sobre os usuários; você pode extrair os próprios avatares digitalizando o cabeçalho e copiando tudo até o final do arquivo para outro arquivo. Todos os visualizadores de imagens pularão todos os dados após a própria imagem (uma tecnologia na qual o RARJPG é baseado) e, se você quiser remover o lixo deles, poderá "modificá-los" sem modificar, com imagemagick e comando convert file.jpg file_clean.jpg . O ImageMagick se comporta como o visualizador descrito: ele lê a imagem, pula qualquer coisa que a segue e depois escreve apenas a própria imagem.
por 20.01.2010 / 15:40