Wo speichert Skype die Avatare meines Kontakts unter Linux?

9

Ich benutze Skype unter Linux.

Wo finde ich Bilder, die per Skype von den Avataren meines Kontakts zwischengespeichert wurden?

Andrea Ambu
quelle
Ich habe momentan kein Linux auf meinem Laptop, um dies zu überprüfen, aber Sie überprüfen den Inhalt des Verzeichnisses ~ / .Skype.
Kartikmohta

Antworten:

5

Ich wollte auch diese Skype-Avatare haben, also habe ich die Antwort von Whitequark verwendet, um ein kleines Bash-Skript zu erstellen, das genau das tut. Hier ist es:

#! / bin / bash

if [\ ($ # -lt 1 \)];
dann
  echo "Verwendung: $ 0 Ordner";
  echo "Wo der Ordner die Form /home/username/.Skype/username hat";
  Ausfahrt;
fi;

für i in `ls $ 1`;
tun
  if [-f $ 1 / $ i];
  dann
    #echo "i: $ i";
    fileump = "hexdump -v -e" "1/1% 02x" $ 1 / $ i | sed -es / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ filesump "| wc -l`; # Vorkommen des Zeichens \ n. Bedeutet, dass es keine Vorkommen unseres Wortes gibt
    #echo "nocc: $ nocc";
    if ["$ nocc" -ge 2];
    dann
      k = 0;
      old_IFS = $ IFS; # Feldtrennzeichen
      IFS = $ '\ n';
      Offset = 0;
      für j in $ Filedump;
      tun
        w = `echo $ j | wc -m`; # gibt tatsächlich die Anzahl der Buchstaben + 1 an
        w = $ [w-1];
        Offset = $ [Offset + w];
        #echo "offset: $ offset";
        Dateiname1 = "$ {i} _ $ {k} _notclean.jpg";
        Dateiname2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = $ 1 / $ i von = $ filename1 skip = `echo" $ offset / 2 "| bc` status = noxfer;
        if [`du $ filename1 | cut -f1` -gt 0];
        dann
          konvertiere $ filename1 $ filename2; #convert wird eigentlich nur verwendet, um die Daten nach dem Bild zu entfernen
        fi;
        rm $ filename1;
        k = $ [k + 1];
      erledigt;
      IFS = $ old_IFS;
    fi;
  fi;
erledigt
Swergas
quelle
Dies funktioniert nicht immer, es gibt einige Avatare, die nicht gefunden werden, und es werden einige fehlerhafte Bilder extrahiert. Siehe meine Antwort für eine sauberere Lösung.
Guillaume Brunerie
8

Hier ist ein viel saubereres Skript, das sowohl Low-Def- als auch High-Def-Avatare aus der Datei main.db extrahiert und in Dateien speichert, die nach den entsprechenden Skype-Benutzernamen benannt sind.

Sie benötigen sqlite3 und xxd, um dieses Skript auszuführen.

Der Inhalt der main.db-Datenbank ist ziemlich einfach zu verstehen, mit ein wenig Fantasie kann noch viel mehr daraus extrahiert werden.

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

In diesem Skype-Forenthread geht es um Avatare: http://forum.skype.com/index.php?showtopic=99471 .

  • Zunächst werden einige Befehle erläutert, mit denen Sie Avatare aus dem Skype-Cache mit der öffentlichen Schnittstelle speichern können, über die es anscheinend unter Linux nicht funktioniert. Ich weiß nicht, ob sie diese Schnittstelle bereits repariert haben, und darum geht es in Ihrer Frage nicht.
  • Zweitens sagte ein Skype-Entwickler, dass alle Bilder im JPEG-Format gespeichert sind und einen Header in hex ( JFIF) bereitstellen . Das Grep'ing des Hexdumps aller Skype-Dateien mit dem for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; doneBefehl ergab viele Vorkommen dieses Headers in .Skype / userNNN.dbb-Dateien, in denen NNN eine Zahl ist. Diese Dateien haben ein absolut undokumentiertes, proprietäres Format und enthalten wahrscheinlich alle zwischengespeicherten Informationen über Benutzer. Sie können Avatare selbst extrahieren, indem Sie nach Headern suchen und dann alles bis zum Ende der Datei in eine andere Datei kopieren. Alle Bildbetrachter überspringen alle Daten nach dem Bild selbst (eine Technologie, auf der RARJPG basiert), und wenn Sie Junk aus ihnen entfernen möchten, können Sie sie "ändern", ohne sie zu ändern, z. B. mit imagemagick und Befehlconvert file.jpg file_clean.jpg. ImageMagick verhält sich wie beschrieben: Es liest ein Bild, überspringt alles, was darauf folgt, und schreibt dann nur das Bild selbst.
Whitequark
quelle