Successfully reported this slideshow.

[16.06.25] 한글 배포용 문서의 모든 것

0

Share

1 of 30
1 of 30

More Related Content

Related Audiobooks

Free with a 30 day trial from Scribd

See all

[16.06.25] 한글 배포용 문서의 모든 것

  1. 1. 1본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 .
  2. 2. 목차 배포용 문서란? 배포용 문서의해제 미래 참고 문헌 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 2
  3. 3. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 3
  4. 4. 배포용 문서 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 4
  5. 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. 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. 7. 내용 변경하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 7 한/글 자체의 버그를 사용하기 파일을 직접 변경하기
  8. 8. 한/글 자체의 버그 사용하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 8 http://850530.tistory.com/185
  9. 9. 한/글 자체의 버그 사용하기 (Cont’d) 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 9 http://850530.tistory.com/185
  10. 10. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 10
  11. 11. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 11
  12. 12. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 12
  13. 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. 14. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 14
  15. 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. 16. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 16
  17. 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. 18. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 18
  19. 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. 20. 기초 지식 Seed 찾기 난수 배열 만들기 해시코드 추출하기 해시코드로 복호화하기 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 20
  21. 21. 해시코드로 복호화하기 복호화할스트림  ViewText/SectionN→BodyText/SectionN  Scripts/JScriptVersion  Scripts/DefaultScript  DocHistory/HistoryLastDoc  DocHistory/VersionLogN 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 21
  22. 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. 23. 결과 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 23
  24. 24. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 24
  25. 25. 사용 목적에 따른 문서 처리 방법 차별화 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 25 문서 내용 변경 방지 문서 내용 복사 방지
  26. 26. 문서 내용 변경 방지 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 26
  27. 27. 문서 내용 복사 방지 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 27
  28. 28. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 28
  29. 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. 30. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 30

×