답변:
그 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; 끝난
다음은 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
이 스카이프 포럼 스레드 아바타에 관한 것입니다 : http://forum.skype.com/index.php?showtopic=99471 .
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은 설명 된 뷰어와 같이 작동합니다. 이미지를 읽고 그 뒤에 나오는 것은 건너 뛰고 이미지 자체 만 씁니다.