SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 30 day free trial to unlock unlimited reading.
1.
1본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 .
2.
목차
배포용 문서란?
배포용 문서의해제
미래
참고 문헌
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 2
3.
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 3
4.
배포용 문서
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 4
5.
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 5
[배포용 문서로 저장]는 고쳐선 안 될 문서에 대하여
내용을 변경하지 못하도록 만들어 줍니다.
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
6.
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 6
[배포용 문서로 저장]는 고쳐선 안 될 문서에 대하여
내용을 변경하지 못하도록 만들어 줍니다.
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
7.
내용 변경하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 7
한/글 자체의 버그를 사용하기
파일을 직접 변경하기
8.
한/글 자체의 버그 사용하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 8
http://850530.tistory.com/185
9.
한/글 자체의 버그 사용하기 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 9
http://850530.tistory.com/185
10.
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 10
11.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 11
12.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 12
13.
기초 지식
CompoundFileBinaryFormat
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
14.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 14
15.
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];
16.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 16
17.
난수 배열 만들기
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--;
}
18.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 18
19.
해시코드 추출하기
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)으로변환한것
20.
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 20
21.
해시코드로 복호화하기
복호화할스트림
ViewText/SectionN→BodyText/SectionN
Scripts/JScriptVersion
Scripts/DefaultScript
DocHistory/HistoryLastDoc
DocHistory/VersionLogN
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 21
22.
해시코드로 복호화하기 (Cont’d)
해시코드의 처음16바이트로 AES-128ECB알고리즘을 사용해본문 레코드를복호화할 수있음
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . 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);
23.
결과
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 23
24.
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 24
25.
사용 목적에 따른 문서 처리 방법 차별화
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 25
문서 내용 변경 방지
문서 내용 복사 방지
26.
문서 내용 변경 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 26
27.
문서 내용 복사 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 27
28.
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 28
29.
참고 문헌
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_u
se
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 29
30.
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 30
0 likes
Be the first to like this
Views
Total views
1,252
On SlideShare
0
From Embeds
0
Number of Embeds
1
You have now unlocked unlimited access to 20M+ documents!
Unlimited Reading
Learn faster and smarter from top experts
Unlimited Downloading
Download to take your learnings offline and on the go
You also get free access to Scribd!
Instant access to millions of ebooks, audiobooks, magazines, podcasts and more.
Read and listen offline with any device.
Free access to premium services like Tuneln, Mubi and more.