Upload
kenny-park
View
261
Download
3
Embed Size (px)
Citation preview
한/ 글
배포
용 문
서의
모든
것
박현
민
1본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 .2016-06-25
목차
배포용 문서란 ?배포용 문서의 해제
미래
참고 문헌
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 2
2016-06-25
배포
용 문
서란
?
C H A P T E R 1
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 3
2016-06-25
배포용 문서
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 4
2016-06-25
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 5
[ 배포용 문서로 저장 ] 는 고쳐선 안 될 문서에
대하여
내용을 변경하지 못하도록 만들어 줍니다 .
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
2016-06-25
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 6
[ 배포용 문서로 저장 ] 는 고쳐선 안 될 문서에
대하여
내용을 변경하지 못하도록 만들어 줍니다 .
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
2016-06-25
내용 변경하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 7
한 / 글 자체의 버그를 사용하기
파일을 직접 변경하기
2016-06-25
한 / 글 자체의 버그 사용하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 8
http://850530.tistory.com/185
2016-06-25
한 / 글 자체의 버그 사용하기 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 9
http://850530.tistory.com/185
2016-06-25
배포
용 문
서의
해제
C H A P T E R 2
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 10
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 11
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 12
2016-06-25
기초 지식
Compound File Binary Format objidl.h 의 IStorage, IStream 사용
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 13
IStorage *storage,*substorage;IStream *header,*info;StgOpenStorageEx(path,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,STGFMT_STORAGE,0,NULL,0,IID_IStorage,(void**)&storage);storage->OpenStream(L"FileHeader",NULL,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,NULL,&header);header->Seek(li(36),STREAM_SEEK_SET,NULL);header->Read(buffer,1,NULL);header->Seek(li(36),STREAM_SEEK_SET,NULL);header->Write(buffer,1,NULL);storage->OpenStream(L"DocInfo",NULL,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,NULL,&info);storage->DestroyElement(L"BodyText");storage->RenameElement(L"ViewText",L"BodyText");storage->OpenStorage(L"BodyText",NULL,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,NULL,0,&substorage);substorage->EnumElements(0,NULL,0,&enumstat);storage->OpenStorage(L"Scripts",NULL,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,NULL,0,&substorage);storage->OpenStorage(L"DocHistory",NULL,STGM_READWRITE|STGM_SHARE_EXCLUSIVE,NULL,0,&substorage);
li : int → LARGE_INTEGER / uli : int → ULARGE_INTEGER
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 14
2016-06-25
SEED 찾기
HWPTAG_DISTRIBUTE_DOC_DATA 의 첫 4 바이트
SectionN 스트림에서의 구조
0~3 바이트 : 레코드 헤더
4~7 바이트 : SEED
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 15
stream->Seek(li(4),STREAM_SEEK_SET,NULL);stream->Read(data,256,NULL);seed=(data[3]<<24)+(data[2]<<16)+(data[1]<<8)+data[0];
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 16
2016-06-25
난수 배열 만들기
srand(seed) a = rand() & 0xFF, b = rand() & 0x0F + 1 → 배열에 a 값을 b 번 횟수만큼 삽입
배열크기가 256 이 될 때까지 반복
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 17
for(i=0;i<256;++i){ if(b==0) { a=rand()&0xff; b=(rand()&0x0f)+1; } random[i]=a; b--;}
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 18
2016-06-25
해시코드 추출하기
offset = (Seed & 0x0f) + sizeof(UINT) 난수배열과 배포용 문서 데이터를 XOR 연산
offset 부터 80 바이트가 해시코드 , 2 바이트가 옵션플래그
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 19
for(i=0;i<256;++i)data[i]=data[i]^random[i];offset=(seed&0x0f)+sizeof(unsigned int);for(i=0;i<80;++i)hash[i]=data[offset+i];for(i=0;i<2;++i)flag[i]=data[offset+80+i];
* 해시코드는 비밀번호의 SHA-1 값을 문자열 (UTF-16LE) 으로 변환한 것
2016-06-25
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 20
2016-06-25
해시코드로 복호화하기
복호화할 스트림
ViewText/SectionN → BodyText/SectionN Scripts/JScriptVersion Scripts/DefaultScript DocHistory/HistoryLastDoc DocHistory/VersionLogN
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 21
2016-06-25
해시코드로 복호화하기 (Cont’d)
해시코드의 처음 16 바이트로 AES-128 ECB 알고리즘을 사용해 본문 레코드를
복호화할 수 있음
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 22
#include<openssl/ssl.h>for(i=0;i<16;++i)key[i]=hash[i];stream->Stat(&stat,STATFLAG_NONAME);inp=(unsigned char*)malloc(stat.cbSize.QuadPart-260);outp=(unsigned char*)malloc(stat.cbSize.QuadPart-260);stream->Read(inp,stat.cbSize.QuadPart-260,NULL);EVP_CIPHER_CTX ctx;EVP_CIPHER_CTX_init(&ctx);EVP_DecryptInit(&ctx,EVP_aes_128_ecb(),key,NULL);EVP_DecryptUpdate(&ctx,outp,&outlen,inp,stat.cbSize.QuadPart-260);EVP_DecryptFinal(&ctx,outp+outlen,&tmp);outlen=outlen+tmp;stream->Seek(li(0),STREAM_SEEK_SET,NULL);stream->SetSize(uli(outlen));stream->Write(outp,outlen,NULL);storage->Commit(STGC_OVERWRITE);
2016-06-25
결과
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 23
2016-06-25
미래
C H A P T E R 3
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 24
2016-06-25
사용 목적에 따른 문서 처리 방법 차별화
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 25
문서 내용 변경 방지
문서 내용 복사 방지
2016-06-25
문서 내용 변경 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 26
2016-06-25
문서 내용 복사 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 27
2016-06-25
참고
문헌
A P P E N D I X
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 28
2016-06-25
참고 문헌
https://groups.google.com/forum/#!topic/hwp-foss/d2KL2ypR89Q
https://en.wikipedia.org/wiki/Compound_File_Binary_Format
https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 29
2016-06-25
감사
합니
다
이 프레젠테이션은
http://slidesha
re.net/525hm
/?
에서 다시 보
실 수 있
습니다
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 30
2016-06-25