¿Dónde guarda Skype los avatares de mis contactos en Linux?

9

Estoy usando Skype en Linux.

¿Dónde puedo encontrar imágenes almacenadas en caché por skype de los avatares de mis contactos?

Andrea Ambu
fuente
No tengo Linux en mi computadora portátil en este momento para verificar, pero verifica el contenido del directorio ~ / .Skype.
kartikmohta

Respuestas:

5

También quería obtener esos avatares de Skype, así que utilicé la respuesta de whitequark para hacer un pequeño script bash que hace exactamente eso. Aquí está:

#! / bin / bash

si [\ ($ # -lt 1 \)];
entonces
  echo "Uso: carpeta $ 0";
  echo "Donde la carpeta tiene la forma /home/username/.Skype/username";
  salida;
fi;

para i en `ls $ 1`;
hacer
  si [-f $ 1 / $ i];
  entonces
    #echo "i: $ i";
    filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g' ';
    nocc = `echo" $ filedump "| wc -l`; # ocurrencias del \ n char. Significa que no hay ocurrencias de nuestra palabra nocc-1
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    entonces
      k = 0;
      old_IFS = $ IFS; # separador de campo
      IFS = $ '\ n';
      desplazamiento = 0;
      para j en $ filedump;
      hacer
        w = `echo $ j | wc -m`; # da realmente el número de letras + 1
        w = $ [w-1];
        desplazamiento = $ [desplazamiento + 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 | cortar -f1` -gt 0];
        entonces
          convertir $ filename1 $ filename2; #convert solo se usa para eliminar los datos después de la imagen
        fi;
        rm $ filename1;
        k = $ [k + 1];
      hecho;
      IFS = $ old_IFS;
    fi;
  fi;
hecho
Swergas
fuente
Esto no siempre funciona, hay algunos avatares que no se encuentran y extrae algunas imágenes rotas. Vea mi respuesta para una solución más limpia.
Guillaume Brunerie
8

Aquí hay una secuencia de comandos mucho más limpia que extrae los avatares de baja y alta definición del archivo main.db y los guarda en archivos con los nombres de usuario de Skype correspondientes.

Necesitará sqlite3 y xxd para ejecutar este script.

El contenido de la base de datos main.db es bastante fácil de entender, con un poco de imaginación, se puede extraer mucho más de él.

#!/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
Brunerie Guillaume
fuente
4

Este hilo del foro de Skype trata sobre avatares: http://forum.skype.com/index.php?showtopic=99471 .

  • Primero, discuten algunos comandos que le permiten guardar avatares de la memoria caché de Skype con su interfaz pública a través de ella aparentemente no funciona en Linux. No sé si ya arreglaron esa interfaz, y de eso no se trata su pregunta.
  • En segundo lugar, un desarrollador de Skype dijo que todas las imágenes se almacenan en formato JPEG y proporcionan un encabezado en hexadecimal ( JFIF). grep'ing hexdump de todos los archivos de Skype con el for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donecomando reveló muchas ocurrencias de este encabezado en archivos .Skype / userNNN.dbb donde NNN es algún número. Estos archivos tienen un formato patentado absolutamente indocumentado y probablemente guardan toda la información almacenada en caché sobre los usuarios; puede extraer los avatares escaneando el encabezado y luego copiando todo hasta el final del archivo en otro archivo. Todos los visores de imágenes omitirán cualquier dato después de la imagen en sí (una tecnología en la que se basa RARJPG), y si desea eliminar la basura de ellos, puede "modificarla" sin modificarla, por ejemplo, con imagemagick y comandoconvert file.jpg file_clean.jpg. ImageMagick se comporta como el visor descrito: lee la imagen, omite todo lo que le sigue y luego escribe solo la imagen misma.
Whitequark
fuente