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
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
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.
Respuestas:
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á:
fuente
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.
fuente
Este hilo del foro de Skype trata sobre avatares: http://forum.skype.com/index.php?showtopic=99471 .
JFIF
). grep'ing hexdump de todos los archivos de Skype con elfor i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done
comando 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.fuente