kordoc 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/{chunk-UUHAAZYN.js → chunk-JJ65GKUH.js} +15 -13
- package/dist/chunk-JJ65GKUH.js.map +1 -0
- package/dist/{chunk-UMO6QQO5.js → chunk-L4OFASDS.js} +2 -2
- package/dist/cli.js +4 -4
- package/dist/index.cjs +14 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -12
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +2 -2
- package/dist/{utils-K23YMTIM.js → utils-4HVKHULU.js} +2 -2
- package/dist/{watch-CGG7CCHJ.js → watch-RNZ3KESY.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-UUHAAZYN.js.map +0 -1
- /package/dist/{chunk-UMO6QQO5.js.map → chunk-L4OFASDS.js.map} +0 -0
- /package/dist/{utils-K23YMTIM.js.map → utils-4HVKHULU.js.map} +0 -0
- /package/dist/{watch-CGG7CCHJ.js.map → watch-RNZ3KESY.js.map} +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**모두 파싱해버리겠다.**
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/kordoc)
|
|
6
6
|
[](https://github.com/chrisryugj/kordoc/blob/main/LICENSE)
|
|
7
7
|
|
|
8
8
|
> *대한민국에서 둘째가라면 서러울 문서지옥. 거기서 7년 버틴 공무원이 만들었습니다.*
|
|
@@ -27,10 +27,10 @@ HWP, HWPX, PDF, XLSX, DOCX — 관공서에서 쏟아지는 모든 문서를 파
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
## v2.0
|
|
30
|
+
## v2.0 변경사항
|
|
31
31
|
|
|
32
|
-
-
|
|
33
|
-
- **손상된 HWP 파일 복구** — 표준 CFB 모듈이 거부하는 파일을 직접 FAT/디렉토리 파싱으로 복구. rhwp
|
|
32
|
+
- **🔓 배포용(열람 제한) HWP 파싱 지원** — 관공서에서 배포용으로 잠근 HWP 파일도 이제 파싱됩니다. AES-128 ECB 복호화, 순수 JS 구현. [rhwp](https://github.com/edwardkim/rhwp)(MIT) 알고리즘 포팅.
|
|
33
|
+
- **손상된 HWP 파일 복구** — 표준 CFB 모듈이 거부하는 파일을 직접 FAT/디렉토리 파싱으로 복구. rhwp LenientCfbReader 포팅.
|
|
34
34
|
- **HWP5 각주/미주/하이퍼링크 추출** — 각주 본문 텍스트 연결, 하이퍼링크 URL 추출 및 XSS 살균.
|
|
35
35
|
- **HWPX 표 병합 밀림 수정** — colspan/rowspan 그리드 계산 버그 수정.
|
|
36
36
|
- **보안 강화** — CFB 섹터 크기 검증, sanitizeHref 3중 경로 일관 적용.
|
|
@@ -282,7 +282,7 @@ import type {
|
|
|
282
282
|
[MIT](./LICENSE)
|
|
283
283
|
|
|
284
284
|
이 프로젝트는 아래 오픈소스를 포함합니다:
|
|
285
|
-
- **rhwp** (MIT,
|
|
285
|
+
- **rhwp** (MIT, edwardkim) — HWP5 배포용 복호화 및 lenient CFB 파싱 알고리즘
|
|
286
286
|
- **OpenDataLoader PDF** (Apache 2.0, Hancom Inc.) — PDF 테이블 감지 알고리즘
|
|
287
287
|
- **cfb** (Apache 2.0, SheetJS) — HWP5 OLE2 컨테이너 파싱
|
|
288
288
|
- **pdfjs-dist** (Apache 2.0, Mozilla) — PDF 텍스트 추출
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
precheckZipSize,
|
|
7
7
|
sanitizeHref,
|
|
8
8
|
toArrayBuffer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-L4OFASDS.js";
|
|
10
10
|
import {
|
|
11
11
|
parsePageRange
|
|
12
12
|
} from "./chunk-MOL7MDBG.js";
|
|
@@ -1803,18 +1803,20 @@ function decryptDistributePayload(payload) {
|
|
|
1803
1803
|
if (payload.length < 256) throw new Error("\uBC30\uD3EC\uC6A9 payload\uAC00 256\uBC14\uC774\uD2B8 \uBBF8\uB9CC\uC785\uB2C8\uB2E4");
|
|
1804
1804
|
const seed = (payload[0] | payload[1] << 8 | payload[2] << 16 | payload[3] << 24) >>> 0;
|
|
1805
1805
|
const lcg = new MsvcLcg(seed);
|
|
1806
|
-
const result = new Uint8Array(256);
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
result[3] = payload[3];
|
|
1811
|
-
let i = 4;
|
|
1806
|
+
const result = new Uint8Array(payload.subarray(0, 256));
|
|
1807
|
+
let i = 0;
|
|
1808
|
+
let n = 0;
|
|
1809
|
+
let key = 0;
|
|
1812
1810
|
while (i < 256) {
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1811
|
+
if (n === 0) {
|
|
1812
|
+
key = lcg.rand() & 255;
|
|
1813
|
+
n = (lcg.rand() & 15) + 1;
|
|
1814
|
+
}
|
|
1815
|
+
if (i >= 4) {
|
|
1816
|
+
result[i] ^= key;
|
|
1817
1817
|
}
|
|
1818
|
+
i++;
|
|
1819
|
+
n--;
|
|
1818
1820
|
}
|
|
1819
1821
|
return result;
|
|
1820
1822
|
}
|
|
@@ -1838,7 +1840,7 @@ function parseRecordHeader(data, offset) {
|
|
|
1838
1840
|
}
|
|
1839
1841
|
return { tagId, size, headerSize };
|
|
1840
1842
|
}
|
|
1841
|
-
var TAG_DISTRIBUTE_DOC_DATA = 16 +
|
|
1843
|
+
var TAG_DISTRIBUTE_DOC_DATA = 16 + 12;
|
|
1842
1844
|
function decryptViewText(viewTextRaw, compressed) {
|
|
1843
1845
|
const data = new Uint8Array(viewTextRaw);
|
|
1844
1846
|
const rec = parseRecordHeader(data, 0);
|
|
@@ -5363,4 +5365,4 @@ export {
|
|
|
5363
5365
|
extractFormFields,
|
|
5364
5366
|
parse
|
|
5365
5367
|
};
|
|
5366
|
-
//# sourceMappingURL=chunk-
|
|
5368
|
+
//# sourceMappingURL=chunk-JJ65GKUH.js.map
|