In che modo Skype salva gli avatar del mio contatto in Linux?


9

Sto usando Skype su Linux.

Dove posso trovare le immagini memorizzate nella cache da skype degli avatar del mio contatto?


Al momento non ho Linux sul mio laptop per verificare, ma controlli i contenuti della directory ~ / .Skype.
kartikmohta,

Risposte:


5

Volevo ottenere anche quegli avatar di Skype, quindi ho usato la risposta di whitequark per creare un piccolo script bash che fa proprio questo. Ecco qui:

#! / Bin / bash

if [\ ($ # -lt 1 \)];
poi
  echo "Utilizzo: cartella $ 0";
  echo "Dove cartella è nel formato /home/username/.Skype/username";
  Uscita;
fi;

per i in `ls $ 1`;
fare
  se [-f $ 1 / $ i];
  poi
    #echo "i: $ i";
    filedump = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ filedump "| wc -l`; # occorrenze del carattere \ n. Significa che ci sono occorrenze nocc-1 della nostra parola
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    poi
      k = 0;
      old_IFS = $ IFS; # separatore di campo
      IFS = $ '\ n';
      offset = 0;
      per j in $ filedump;
      fare
        w = `echo $ j | wc -m`; # dà effettivamente lettercount + 1
        w = $ [w-1];
        offset = $ [+ offset w];
        #echo "offset: $ offset";
        nomefile1 = "$ {i} _ $ {k} _notclean.jpg";
        nomefile2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = $ 1 / $ i di = $ nomefile1 skip = `echo" $ offset / 2 "| bc` status = noxfer;
        if [`du $ nomefile1 | cut -f1` -gt 0];
        poi
          converti $ nomefile1 $ nomefile2; #convert è effettivamente utilizzato solo per rimuovere i dati dopo l'immagine
        fi;
        rm $ nomefile1;
        k = $ [k + 1];
      fatto;
      IFS = $ old_IFS;
    fi;
  fi;
fatto

Questo non funziona sempre, ci sono alcuni avatar che non vengono trovati ed estrae alcune immagini rotte. Vedi la mia risposta per una soluzione più pulita.
Guillaume Brunerie,

8

Ecco uno script molto più pulito che estrae sia gli avatar a bassa definizione che quelli ad alta definizione dal file main.db e li salva in file che prendono il nome dai corrispondenti nomi utente di Skype.

Avrai bisogno di sqlite3 e xxd per eseguire questo script.

Il contenuto del database main.db è abbastanza facile da capire, con un po 'di immaginazione c'è molto di più che potrebbe essere estratto da esso.

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

Questo thread del forum di Skype riguarda gli avatar: http://forum.skype.com/index.php?showtopic=99471 .

  • In primo luogo, discutono di alcuni comandi che ti consentono di salvare avatar dalla cache di Skype con la sua interfaccia pubblica attraverso apparentemente non funziona su Linux. Non so se hanno già risolto quell'interfaccia, e non è questa la domanda.
  • In secondo luogo, uno sviluppatore di Skype ha affermato che tutte le immagini sono archiviate in formato JPEG e forniscono un'intestazione in hex ( JFIF). grep'ing hexdump di tutti i file Skype con il for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donecomando ha rivelato molte occorrenze di questa intestazione nei file .Skype / userNNN.dbb dove NNN è un numero. Questi file hanno un formato proprietario assolutamente non documentato e probabilmente mantengono tutte le informazioni memorizzate nella cache degli utenti; puoi estrarre gli stessi avatar scansionando l'intestazione e quindi copiando tutto fino alla fine del file in un altro file. Tutti i visualizzatori di immagini salteranno tutti i dati dopo l'immagine stessa (una tecnologia su cui si basa RARJPG) e se si desidera rimuovere la spazzatura da essi, è possibile "modificarla" senza modificarla, ad esempio con imagemagick e il comandoconvert file.jpg file_clean.jpg. ImageMagick si comporta come il visualizzatore descritto: legge l'immagine, salta tutto ciò che la segue e quindi scrive solo l'immagine stessa.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.