Skype는 Linux에서 연락처의 아바타를 어디에 저장합니까?


9

Linux에서 Skype를 사용하고 있습니다.

연락처 아바타의 스카이프에 의해 캐시 된 이미지는 어디에서 찾을 수 있습니까?


현재 랩톱에 Linux가 없으므로 확인할 수는 없지만 ~ / .Skype 디렉토리 내용을 확인하십시오.
kartikmohta

답변:


5

그 Skype 아바타도 얻고 싶었으므로 whitequark의 대답을 사용하여 작은 bash 스크립트를 만들었습니다. 여기있어:

#! / bin / bash

만약 [\ ($ # -lt 1 \)];
그때
  echo "사용 : $ 0 폴더";
  echo "폴더가 /home/username/.Skype/username 형식 인 곳";
  출구;
fi;

`ls $ 1`에서 i의 경우;
하다
  [-f $ 1 / $ i]이면;
  그때
    #echo "i : $ i";
    filedump =`hexdump -v -e ' ""1/1 "% 02x" ""'$ 1 / $ i | sed -e 's / ffd8ffe0 / \ nffd8ffe0 / g'`;
    nocc =`echo "$ filedump"| 화장실 -l`; #n 문자 발생. 우리 단어의 nocc-1 발생이 있음을 의미
    #echo "nocc : $ nocc";
    만약 [ "$ nocc"-ge 2];
    그때
      k = 0;
      old_IFS = $ IFS; # 필드 구분 기호
      IFS = $ '\ n';
      오프셋 = 0;
      $ filedump에서 j의 경우;
      하다
        w =`echo $ j | 화장실 -m`; # 실제로 문자 수 +1을줍니다.
        w = $ [w-1];
        오프셋 = $ [offset + 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` 상태 = 녹스 퍼;
        if [`du $ filename1 | 컷 -f1` -gt 0];
        그때
          $ filename1 변환 $ filename2; #convert는 실제로 이미지 뒤의 데이터를 제거하는 데만 사용됩니다
        fi;
        rm $ filename1;
        k = $ [k + 1];
      끝난;
      IFS = $ old_IFS;
    fi;
  fi;
끝난

이것은 항상 작동하는 것은 아니며, 발견되지 않은 아바타가 있으며 깨진 이미지를 추출합니다. 더 깨끗한 솔루션에 대한 내 대답을 참조하십시오.
기 illa 브루 네리

8

다음은 main.db 파일에서 저해상도 및 고화질 아바타를 모두 추출하여 해당 Skype 사용자 이름을 딴 파일에 저장하는 훨씬 깨끗한 스크립트입니다.

이 스크립트를 실행하려면 sqlite3 및 xxd가 필요합니다.

main.db 데이터베이스의 내용은 이해하기가 상당히 쉬우 며 약간의 상상력으로 인해 데이터베이스에서 추출 할 수있는 것이 더 많습니다.

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

이 스카이프 포럼 스레드 아바타에 관한 것입니다 : http://forum.skype.com/index.php?showtopic=99471 .

  • 먼저, Linux에서 작동하지 않는 공용 인터페이스를 통해 Skype 캐시에서 아바타를 저장할 수있는 몇 가지 명령에 대해 설명합니다. 그들이 그 인터페이스를 이미 고쳤는지 모르겠다. 그리고 그것은 당신의 질문에 관한 것이 아닙니다.
  • 둘째, 한 Skype 개발자는 모든 이미지가 JPEG 형식으로 저장되고 16 진수로 헤더를 제공한다고 말했습니다 ( JFIF). for i in *; do echo $i; hd $i | grep 'ff d8 ff e0'; done명령 으로 모든 Skype 파일의 hexdump를 grep하면 .Skype / userNNN.dbb 파일에서이 헤더가 많이 나타납니다. 여기서 NNN은 숫자입니다. 이 파일은 문서화되지 않은 독점 형식을 가지며 아마도 사용자에 대한 모든 캐시 된 정보를 유지하고있을 것입니다. 헤더를 검색 한 후 파일 끝까지 모든 파일을 다른 파일로 복사하여 아바타 자체를 추출 할 수 있습니다. 모든 이미지 뷰어는 이미지 자체 (RARJPG 기반 기술) 뒤에있는 데이터를 건너 뛰고, 정크를 제거하려는 경우 예를 들어 imagemagick 및 명령을 사용하여 수정하지 않고 "수정"할 수 있습니다.convert file.jpg file_clean.jpg. ImageMagick은 설명 된 뷰어와 같이 작동합니다. 이미지를 읽고 그 뒤에 나오는 것은 건너 뛰고 이미지 자체 만 씁니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.