SlideShare a Scribd company logo
1 of 30
1본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 .
목차
배포용 문서란?
배포용 문서의해제
미래
참고 문헌
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 2
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 3
배포용 문서
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 4
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 5
[배포용 문서로 저장]는 고쳐선 안 될 문서에 대하여
내용을 변경하지 못하도록 만들어 줍니다.
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
배포용 문서 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 6
[배포용 문서로 저장]는 고쳐선 안 될 문서에 대하여
내용을 변경하지 못하도록 만들어 줍니다.
http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hwp/file/send_to_mail/publish(save).htm
내용 변경하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 7
한/글 자체의 버그를 사용하기
파일을 직접 변경하기
한/글 자체의 버그 사용하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 8
http://850530.tistory.com/185
한/글 자체의 버그 사용하기 (Cont’d)
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 9
http://850530.tistory.com/185
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 10
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 11
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 12
기초 지식
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
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 14
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];
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 16
난수 배열 만들기
 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--;
}
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 18
해시코드 추출하기
 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)으로변환한것
기초 지식
Seed 찾기
난수 배열 만들기
해시코드 추출하기
해시코드로 복호화하기
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 20
해시코드로 복호화하기
복호화할스트림
 ViewText/SectionN→BodyText/SectionN
 Scripts/JScriptVersion
 Scripts/DefaultScript
 DocHistory/HistoryLastDoc
 DocHistory/VersionLogN
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 21
해시코드로 복호화하기 (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);
결과
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 23
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 24
사용 목적에 따른 문서 처리 방법 차별화
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 25
문서 내용 변경 방지
문서 내용 복사 방지
문서 내용 변경 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 26
문서 내용 복사 방지
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 27
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 28
참고 문헌
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
본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를
참 고 하 여 개 발 하 였 습 니 다 . 30

More Related Content

Viewers also liked

[14.07.16] 다양성자산과 염기
[14.07.16] 다양성자산과 염기[14.07.16] 다양성자산과 염기
[14.07.16] 다양성자산과 염기Hyeonmin Park
 
[14.03.18] 이온 결합 (Cont.)
[14.03.18] 이온 결합 (Cont.)[14.03.18] 이온 결합 (Cont.)
[14.03.18] 이온 결합 (Cont.)Hyeonmin Park
 
Csonn t2 atomic structure
Csonn t2 atomic structureCsonn t2 atomic structure
Csonn t2 atomic structurecheeshengonn
 
Chemical Bonding I: Basic Concepts
Chemical Bonding I: Basic ConceptsChemical Bonding I: Basic Concepts
Chemical Bonding I: Basic Conceptsguest3f3a4c0
 
Chemical bonding part 1 (chem 11)
Chemical bonding part 1 (chem 11)Chemical bonding part 1 (chem 11)
Chemical bonding part 1 (chem 11)Hoshi94
 
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...www.sciencepowerpoint.com
 
Csonn t3 chemical bonding
Csonn t3 chemical bondingCsonn t3 chemical bonding
Csonn t3 chemical bondingcheeshengonn
 
Bonding - ionic covalent & metallic
Bonding - ionic covalent & metallicBonding - ionic covalent & metallic
Bonding - ionic covalent & metallicJanadi Gonzalez-Lord
 
Covalent Vs. Ionic Bonding
Covalent Vs. Ionic BondingCovalent Vs. Ionic Bonding
Covalent Vs. Ionic BondingJoeChandler10
 
Material Science and Metallurgy
Material Science and MetallurgyMaterial Science and Metallurgy
Material Science and Metallurgytaruian
 
4-2 Ionic & Covalent Bonding
4-2 Ionic & Covalent Bonding4-2 Ionic & Covalent Bonding
4-2 Ionic & Covalent Bondingrkelch
 
Lecture 8.1- Ionic vs. Covalent
Lecture 8.1- Ionic vs. CovalentLecture 8.1- Ionic vs. Covalent
Lecture 8.1- Ionic vs. CovalentMary Beth Smith
 
Ionic Bonding Notes
Ionic Bonding NotesIonic Bonding Notes
Ionic Bonding Notesalchemist
 
Lesson 1 Intro to Chemical Bonding
Lesson 1 Intro to Chemical BondingLesson 1 Intro to Chemical Bonding
Lesson 1 Intro to Chemical Bondingtvacco
 
Lecture 1 introduction
Lecture 1 introductionLecture 1 introduction
Lecture 1 introductionAnnalyn Soria
 
Chemical bonding chapter 6
Chemical bonding chapter 6Chemical bonding chapter 6
Chemical bonding chapter 6vvchemistry
 

Viewers also liked (20)

[14.07.16] 다양성자산과 염기
[14.07.16] 다양성자산과 염기[14.07.16] 다양성자산과 염기
[14.07.16] 다양성자산과 염기
 
[14.03.18] 이온 결합 (Cont.)
[14.03.18] 이온 결합 (Cont.)[14.03.18] 이온 결합 (Cont.)
[14.03.18] 이온 결합 (Cont.)
 
Bonds, Atomic Bonds
Bonds, Atomic BondsBonds, Atomic Bonds
Bonds, Atomic Bonds
 
Csonn t2 atomic structure
Csonn t2 atomic structureCsonn t2 atomic structure
Csonn t2 atomic structure
 
Chemical Bonding I: Basic Concepts
Chemical Bonding I: Basic ConceptsChemical Bonding I: Basic Concepts
Chemical Bonding I: Basic Concepts
 
Chemical bonding part 1 (chem 11)
Chemical bonding part 1 (chem 11)Chemical bonding part 1 (chem 11)
Chemical bonding part 1 (chem 11)
 
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...
Atomic Bonding, Ionic, Covalent, Metallic Bonds, Physical Science Lesson Powe...
 
Chemical bonding
Chemical bondingChemical bonding
Chemical bonding
 
Csonn t3 chemical bonding
Csonn t3 chemical bondingCsonn t3 chemical bonding
Csonn t3 chemical bonding
 
Ionic bonding
Ionic bondingIonic bonding
Ionic bonding
 
Bonding - ionic covalent & metallic
Bonding - ionic covalent & metallicBonding - ionic covalent & metallic
Bonding - ionic covalent & metallic
 
Covalent Vs. Ionic Bonding
Covalent Vs. Ionic BondingCovalent Vs. Ionic Bonding
Covalent Vs. Ionic Bonding
 
Material Science and Metallurgy
Material Science and MetallurgyMaterial Science and Metallurgy
Material Science and Metallurgy
 
4-2 Ionic & Covalent Bonding
4-2 Ionic & Covalent Bonding4-2 Ionic & Covalent Bonding
4-2 Ionic & Covalent Bonding
 
Lecture 8.1- Ionic vs. Covalent
Lecture 8.1- Ionic vs. CovalentLecture 8.1- Ionic vs. Covalent
Lecture 8.1- Ionic vs. Covalent
 
Ionic Bonding Notes
Ionic Bonding NotesIonic Bonding Notes
Ionic Bonding Notes
 
Chapter 9
Chapter 9Chapter 9
Chapter 9
 
Lesson 1 Intro to Chemical Bonding
Lesson 1 Intro to Chemical BondingLesson 1 Intro to Chemical Bonding
Lesson 1 Intro to Chemical Bonding
 
Lecture 1 introduction
Lecture 1 introductionLecture 1 introduction
Lecture 1 introduction
 
Chemical bonding chapter 6
Chemical bonding chapter 6Chemical bonding chapter 6
Chemical bonding chapter 6
 

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

Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document오석 한
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서Lee Sang-Ho
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연Joohyun Han
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdfSungkyun Kim
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5현웅 김
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드GangSeok Lee
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행Devgear
 
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리DaeHyun Sung
 

Similar to [16.06.25] 한글 배포용 문서의 모든 것 (10)

Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
 
업무 자동화
업무 자동화업무 자동화
업무 자동화
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
 
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리
[2021 오픈소스 컨트리뷰션 아카데미] #9 리브레오피스(LibreOffice) 컨트리뷰션 정리
 

More from Hyeonmin Park

[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리Hyeonmin Park
 
[16.06.14] Auto Correction for Mobile Typing
[16.06.14] Auto Correction for Mobile Typing[16.06.14] Auto Correction for Mobile Typing
[16.06.14] Auto Correction for Mobile TypingHyeonmin Park
 
[16.05.31] 컴퓨터학과 소개
[16.05.31] 컴퓨터학과 소개[16.05.31] 컴퓨터학과 소개
[16.05.31] 컴퓨터학과 소개Hyeonmin Park
 
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다Hyeonmin Park
 
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세Hyeonmin Park
 
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교Hyeonmin Park
 
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석Hyeonmin Park
 
[15.08.19] 존경하는 인물
[15.08.19] 존경하는 인물[15.08.19] 존경하는 인물
[15.08.19] 존경하는 인물Hyeonmin Park
 
[14.07.25] KENNYSOFT - 야구심판
[14.07.25] KENNYSOFT - 야구심판[14.07.25] KENNYSOFT - 야구심판
[14.07.25] KENNYSOFT - 야구심판Hyeonmin Park
 
[14.07.09] STAC 2014
[14.07.09] STAC 2014[14.07.09] STAC 2014
[14.07.09] STAC 2014Hyeonmin Park
 
[14.05.02] 5/2 (금)
[14.05.02] 5/2 (금)[14.05.02] 5/2 (금)
[14.05.02] 5/2 (금)Hyeonmin Park
 
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석Hyeonmin Park
 
[15.05.22] 정보 전달하는 글 쓰고 읽기
[15.05.22] 정보 전달하는 글 쓰고 읽기[15.05.22] 정보 전달하는 글 쓰고 읽기
[15.05.22] 정보 전달하는 글 쓰고 읽기Hyeonmin Park
 
[15.05.01] Bèzier Curve
[15.05.01] Bèzier Curve[15.05.01] Bèzier Curve
[15.05.01] Bèzier CurveHyeonmin Park
 
[15.04.27] 최고가격제와 최저가격제
[15.04.27] 최고가격제와 최저가격제[15.04.27] 최고가격제와 최저가격제
[15.04.27] 최고가격제와 최저가격제Hyeonmin Park
 
[15.04.20] WEEK9_박현민_주원철
[15.04.20] WEEK9_박현민_주원철[15.04.20] WEEK9_박현민_주원철
[15.04.20] WEEK9_박현민_주원철Hyeonmin Park
 
[15.03.12] 일차변환
[15.03.12] 일차변환[15.03.12] 일차변환
[15.03.12] 일차변환Hyeonmin Park
 
[15.02.05] 타일 채우기 4
[15.02.05] 타일 채우기 4[15.02.05] 타일 채우기 4
[15.02.05] 타일 채우기 4Hyeonmin Park
 

More from Hyeonmin Park (20)

[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리
 
[16.06.14] Auto Correction for Mobile Typing
[16.06.14] Auto Correction for Mobile Typing[16.06.14] Auto Correction for Mobile Typing
[16.06.14] Auto Correction for Mobile Typing
 
[16.05.31] 컴퓨터학과 소개
[16.05.31] 컴퓨터학과 소개[16.05.31] 컴퓨터학과 소개
[16.05.31] 컴퓨터학과 소개
 
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다
[16.05.10] 외로움은 스트레스가 아니라 카.페.인 때문이다
 
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세
[16.05.09] 동성애에 대한 인식과 우리의 바람직한 자세
 
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
 
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.10.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
 
[15.08.19] 존경하는 인물
[15.08.19] 존경하는 인물[15.08.19] 존경하는 인물
[15.08.19] 존경하는 인물
 
[15.09.09] Alphabet
[15.09.09] Alphabet[15.09.09] Alphabet
[15.09.09] Alphabet
 
[14.07.25] KENNYSOFT - 야구심판
[14.07.25] KENNYSOFT - 야구심판[14.07.25] KENNYSOFT - 야구심판
[14.07.25] KENNYSOFT - 야구심판
 
[14.07.09] STAC 2014
[14.07.09] STAC 2014[14.07.09] STAC 2014
[14.07.09] STAC 2014
 
[14.05.02] 5/2 (금)
[14.05.02] 5/2 (금)[14.05.02] 5/2 (금)
[14.05.02] 5/2 (금)
 
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
[15.08.07] 슈퍼컴퓨터를 이용한 안드로이드 어플리케이션의 정적 분석
 
[15.05.22] 정보 전달하는 글 쓰고 읽기
[15.05.22] 정보 전달하는 글 쓰고 읽기[15.05.22] 정보 전달하는 글 쓰고 읽기
[15.05.22] 정보 전달하는 글 쓰고 읽기
 
[15.05.01] Bèzier Curve
[15.05.01] Bèzier Curve[15.05.01] Bèzier Curve
[15.05.01] Bèzier Curve
 
[15.04.27] 최고가격제와 최저가격제
[15.04.27] 최고가격제와 최저가격제[15.04.27] 최고가격제와 최저가격제
[15.04.27] 최고가격제와 최저가격제
 
[15.04.20] WEEK9_박현민_주원철
[15.04.20] WEEK9_박현민_주원철[15.04.20] WEEK9_박현민_주원철
[15.04.20] WEEK9_박현민_주원철
 
[15.03.12] 일차변환
[15.03.12] 일차변환[15.03.12] 일차변환
[15.03.12] 일차변환
 
[15.03.09] 행렬
[15.03.09] 행렬[15.03.09] 행렬
[15.03.09] 행렬
 
[15.02.05] 타일 채우기 4
[15.02.05] 타일 채우기 4[15.02.05] 타일 채우기 4
[15.02.05] 타일 채우기 4
 

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

  • 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
  • 30. 본 제 품 은 한 글 과 컴 퓨 터 의 한 / 글 문 서 파 일 ( . H W P ) 공 개 문 서 를 참 고 하 여 개 발 하 였 습 니 다 . 30