답변:
그 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은 설명 된 뷰어와 같이 작동합니다. 이미지를 읽고 그 뒤에 나오는 것은 건너 뛰고 이미지 자체 만 씁니다.