Skype lưu hình đại diện liên hệ của tôi ở đâu trong Linux?


9

Tôi đang sử dụng Skype trên Linux.

Tôi có thể tìm thấy hình ảnh được lưu trong bộ nhớ cache của skype ở đâu?


Tôi không có Linux trên máy tính xách tay của mình ngay bây giờ để xác minh, nhưng bạn kiểm tra nội dung thư mục ~ / .Skype.
kartikmohta

Câu trả lời:


5

Tôi cũng muốn nhận được các avatar Skype đó vì vậy tôi đã sử dụng câu trả lời của Whitequark để tạo ra một kịch bản bash nhỏ thực hiện điều đó. Đây là:

#! / bin / bash

if [\ ($ # -lt 1 \)];
sau đó
  echo "Sử dụng: thư mục $ 0";
  echo "Trường hợp thư mục có dạng /home/username/.Skype/username";
  lối ra;
fi;

cho tôi trong `ls $ 1`;
làm
  nếu [-f $ 1 / $ i];
  sau đó
    #echo "i: $ i";
    đã nộp = `hexdump -v -e '" "1/1"% 02x "" "' $ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc = `echo" $ filump "| wc -l`; # lần xuất hiện của \ n char. Có nghĩa là có từ nocc-1 xuất hiện trong từ của chúng tôi
    #echo "nocc: $ nocc";
    nếu ["$ nocc" -ge 2];
    sau đó
      k = 0;
      old_IFS = $ IFS; dấu phân cách #field
      IFS = $ '\ n';
      bù = 0;
      cho j bằng $ đã nộp;
      làm
        w = `tiếng vang $ j | wc -m`; # cung cấp số lượng thư thực sự + 1
        w = $ [w-1];
        offset = $ [offset + w];
        #echo "bù: $ bù";
        filename1 = "$ {i} _ $ {k} _notclean.jpg";
        tên tệp2 = "$ {i} _ $ {k} .jpg";
        dd ibs = 1 if = $ 1 / $ i of = $ filename1 Skip = `echo" $ offset / 2 "| trạng thái bc` = độc hơn;
        if [`du $ filename1 | cắt -f1` -gt 0];
        sau đó
          chuyển đổi $ filename1 $ filename2; #convert thực sự chỉ được sử dụng để xóa dữ liệu sau hình ảnh
        fi;
        rm $ filename1;
        k = $ [k + 1];
      làm xong;
      IFS = $ old_IFS;
    fi;
  fi;
làm xong

Điều này không phải lúc nào cũng hoạt động, có một số avatar không được tìm thấy và nó trích xuất một số hình ảnh bị hỏng. Xem câu trả lời của tôi cho một giải pháp sạch hơn.
Guillaume Brunerie

8

Dưới đây là tập lệnh sạch hơn nhiều trích xuất cả hình đại diện độ phân giải thấp và độ phân giải cao từ tệp main.db và lưu chúng vào các tệp được đặt tên theo tên người dùng Skype tương ứng.

Bạn sẽ cần sqlite3 và xxd để chạy tập lệnh này.

Nội dung của cơ sở dữ liệu main.db khá dễ hiểu, với một chút trí tưởng tượng, có rất nhiều điều có thể được trích xuất từ ​​nó.

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

Chủ đề diễn đàn Skype này là về avatar: http://forum.skype.com/index.php?showtopic=99471 .

  • Đầu tiên, họ thảo luận về một số lệnh cho phép bạn lưu hình đại diện từ bộ đệm của Skype với giao diện chung thông qua nó không hoạt động trên Linux. Tôi không biết họ đã sửa giao diện đó chưa, và đó không phải là câu hỏi của bạn.
  • Thứ hai, một nhà phát triển Skype nói rằng tất cả các hình ảnh được lưu trữ ở định dạng JPEG và cung cấp một tiêu đề ở dạng hex ( JFIF). hexdump của tất cả các tệp Skype bằng for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; donelệnh đã tiết lộ nhiều lần xuất hiện của tiêu đề này trong các tệp .Skype / userNNN.dbb trong đó NNN là một số. Các tệp này có một số định dạng hoàn toàn không có giấy tờ, độc quyền và có thể lưu giữ tất cả thông tin được lưu trong bộ nhớ cache về người dùng; bạn có thể tự trích xuất avatar bằng cách quét tiêu đề và sau đó sao chép mọi thứ cho đến khi hết tệp này sang tệp khác. Tất cả người xem hình ảnh sẽ bỏ qua bất kỳ dữ liệu nào sau hình ảnh (RARJPG dựa trên công nghệ) và nếu bạn muốn loại bỏ rác khỏi chúng, bạn có thể "sửa đổi" mà không cần sửa đổi, ví dụ như bằng hình ảnh và lệnhconvert file.jpg file_clean.jpg. ImageMagick hoạt động như người xem được mô tả: nó đọc hình ảnh, bỏ qua mọi thứ theo sau nó và sau đó chỉ viết hình ảnh.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.