mirror of
https://github.com/gchq/CyberChef
synced 2026-01-07 11:03:18 +00:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10c8101476 | ||
|
|
22028b074a | ||
|
|
3d086beed2 | ||
|
|
777d814e70 | ||
|
|
15c26a95c5 | ||
|
|
f87d3bd1cb | ||
|
|
b9ea1e8c71 | ||
|
|
db232f4ff2 | ||
|
|
70f705afbc | ||
|
|
880df212d5 | ||
|
|
b06acd99ec | ||
|
|
a59de80d18 | ||
|
|
1e8dee9935 | ||
|
|
928f1c3e4b | ||
|
|
b4ae4c5a00 | ||
|
|
70346bce35 | ||
|
|
3539e065fa | ||
|
|
8ffc58b340 | ||
|
|
503e733c81 | ||
|
|
7eabaf0de6 | ||
|
|
a8ad10757c | ||
|
|
111546ad1a | ||
|
|
a8fbd5164e | ||
|
|
8dde732514 | ||
|
|
f1659af5e4 | ||
|
|
e68fb51f44 | ||
|
|
de5243ec67 |
33
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
33
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: 'Bug report: <Insert title here>'
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behaviour or a link to the recipe / input used to cause the bug:
|
||||||
|
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behaviour**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (if relevant, please complete the following information):**
|
||||||
|
- OS: [e.g. Windows]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
1
.github/ISSUE_TEMPLATE/bug_report.md
vendored
1
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -32,4 +32,3 @@ If applicable, add screenshots to help explain your problem.
|
|||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
|
||||||
|
|||||||
4
.github/ISSUE_TEMPLATE/feature_request.md
vendored
4
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -6,9 +6,9 @@ labels: feature
|
|||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
<!-- Prefix the title above with 'Feature request:' -->
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
**Is your feature request related to a problem? Please describe.**
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
A clear and concise description of what the problem is. E.g. I'm always frustrated when [...]
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
**Describe the solution you'd like**
|
||||||
A clear and concise description of what you want to happen.
|
A clear and concise description of what you want to happen.
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/operation-request.md
vendored
2
.github/ISSUE_TEMPLATE/operation-request.md
vendored
@@ -7,8 +7,6 @@ assignees: ''
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- Prefix the title above with 'Operation request:' -->
|
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
### Example Input
|
### Example Input
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master).
|
All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master).
|
||||||
|
|
||||||
|
|
||||||
|
### [9.7.0] - 2019-09-13
|
||||||
|
- 'Optical Character Recognition' operation added [@MShwed] [@n1474335] | [#632]
|
||||||
|
|
||||||
### [9.6.0] - 2019-09-04
|
### [9.6.0] - 2019-09-04
|
||||||
- 'Bacon Cipher Encode' and 'Bacon Cipher Decode' operations added [@kassi] | [#500]
|
- 'Bacon Cipher Encode' and 'Bacon Cipher Decode' operations added [@kassi] | [#500]
|
||||||
|
|
||||||
@@ -182,6 +185,7 @@ All major and minor version changes will be documented in this file. Details of
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[9.7.0]: https://github.com/gchq/CyberChef/releases/tag/v9.7.0
|
||||||
[9.6.0]: https://github.com/gchq/CyberChef/releases/tag/v9.6.0
|
[9.6.0]: https://github.com/gchq/CyberChef/releases/tag/v9.6.0
|
||||||
[9.5.0]: https://github.com/gchq/CyberChef/releases/tag/v9.5.0
|
[9.5.0]: https://github.com/gchq/CyberChef/releases/tag/v9.5.0
|
||||||
[9.4.0]: https://github.com/gchq/CyberChef/releases/tag/v9.4.0
|
[9.4.0]: https://github.com/gchq/CyberChef/releases/tag/v9.4.0
|
||||||
@@ -317,3 +321,4 @@ All major and minor version changes will be documented in this file. Details of
|
|||||||
[#614]: https://github.com/gchq/CyberChef/pull/614
|
[#614]: https://github.com/gchq/CyberChef/pull/614
|
||||||
[#625]: https://github.com/gchq/CyberChef/pull/625
|
[#625]: https://github.com/gchq/CyberChef/pull/625
|
||||||
[#627]: https://github.com/gchq/CyberChef/pull/627
|
[#627]: https://github.com/gchq/CyberChef/pull/627
|
||||||
|
[#632]: https://github.com/gchq/CyberChef/pull/632
|
||||||
|
|||||||
283
package-lock.json
generated
283
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cyberchef",
|
"name": "cyberchef",
|
||||||
"version": "9.6.0",
|
"version": "9.7.5",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -2165,7 +2165,6 @@
|
|||||||
"version": "0.18.1",
|
"version": "0.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
|
||||||
"integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
|
"integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"follow-redirects": "1.5.10",
|
"follow-redirects": "1.5.10",
|
||||||
"is-buffer": "^2.0.2"
|
"is-buffer": "^2.0.2"
|
||||||
@@ -3498,6 +3497,170 @@
|
|||||||
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
|
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"copy-webpack-plugin": {
|
||||||
|
"version": "5.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz",
|
||||||
|
"integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cacache": "^11.3.3",
|
||||||
|
"find-cache-dir": "^2.1.0",
|
||||||
|
"glob-parent": "^3.1.0",
|
||||||
|
"globby": "^7.1.1",
|
||||||
|
"is-glob": "^4.0.1",
|
||||||
|
"loader-utils": "^1.2.3",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"p-limit": "^2.2.0",
|
||||||
|
"schema-utils": "^1.0.0",
|
||||||
|
"serialize-javascript": "^1.7.0",
|
||||||
|
"webpack-log": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"big.js": {
|
||||||
|
"version": "5.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||||
|
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"cacache": {
|
||||||
|
"version": "11.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
|
||||||
|
"integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bluebird": "^3.5.5",
|
||||||
|
"chownr": "^1.1.1",
|
||||||
|
"figgy-pudding": "^3.5.1",
|
||||||
|
"glob": "^7.1.4",
|
||||||
|
"graceful-fs": "^4.1.15",
|
||||||
|
"lru-cache": "^5.1.1",
|
||||||
|
"mississippi": "^3.0.0",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
|
"move-concurrently": "^1.0.1",
|
||||||
|
"promise-inflight": "^1.0.1",
|
||||||
|
"rimraf": "^2.6.3",
|
||||||
|
"ssri": "^6.0.1",
|
||||||
|
"unique-filename": "^1.1.1",
|
||||||
|
"y18n": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"glob-parent": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
|
||||||
|
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-glob": "^3.1.0",
|
||||||
|
"path-dirname": "^1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"is-glob": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
|
||||||
|
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-extglob": "^2.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"globby": {
|
||||||
|
"version": "7.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
|
||||||
|
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"array-union": "^1.0.1",
|
||||||
|
"dir-glob": "^2.0.0",
|
||||||
|
"glob": "^7.1.2",
|
||||||
|
"ignore": "^3.3.5",
|
||||||
|
"pify": "^3.0.0",
|
||||||
|
"slash": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ignore": {
|
||||||
|
"version": "3.3.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
|
||||||
|
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"json5": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "1.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
|
||||||
|
"integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^2.0.0",
|
||||||
|
"json5": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lru-cache": {
|
||||||
|
"version": "5.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||||
|
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"yallist": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"normalize-path": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"pify": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"rimraf": {
|
||||||
|
"version": "2.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||||
|
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"glob": "^7.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ajv": "^6.1.0",
|
||||||
|
"ajv-errors": "^1.0.0",
|
||||||
|
"ajv-keywords": "^3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"y18n": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"yallist": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"core-js": {
|
"core-js": {
|
||||||
"version": "3.2.1",
|
"version": "3.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
|
||||||
@@ -4359,6 +4522,32 @@
|
|||||||
"randombytes": "^2.0.0"
|
"randombytes": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dir-glob": {
|
||||||
|
"version": "2.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
|
||||||
|
"integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"path-type": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"path-type": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"pify": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pify": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"dns-equal": {
|
"dns-equal": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
|
||||||
@@ -5712,7 +5901,6 @@
|
|||||||
"version": "1.5.10",
|
"version": "1.5.10",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
|
||||||
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
|
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "=3.1.0"
|
"debug": "=3.1.0"
|
||||||
},
|
},
|
||||||
@@ -5721,7 +5909,6 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "2.0.0"
|
"ms": "2.0.0"
|
||||||
}
|
}
|
||||||
@@ -7464,6 +7651,11 @@
|
|||||||
"postcss": "^7.0.14"
|
"postcss": "^7.0.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"idb-keyval": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ=="
|
||||||
|
},
|
||||||
"ieee754": {
|
"ieee754": {
|
||||||
"version": "1.1.12",
|
"version": "1.1.12",
|
||||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
|
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
|
||||||
@@ -7756,8 +7948,7 @@
|
|||||||
"is-buffer": {
|
"is-buffer": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
|
||||||
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
|
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"is-builtin-module": {
|
"is-builtin-module": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -7981,8 +8172,7 @@
|
|||||||
"is-url": {
|
"is-url": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
||||||
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
|
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"is-utf8": {
|
"is-utf8": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
@@ -9284,10 +9474,15 @@
|
|||||||
"lower-case": "^1.1.1"
|
"lower-case": "^1.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node-fetch": {
|
||||||
|
"version": "2.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||||
|
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||||
|
},
|
||||||
"node-forge": {
|
"node-forge": {
|
||||||
"version": "0.8.5",
|
"version": "0.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||||
"integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q=="
|
"integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
|
||||||
},
|
},
|
||||||
"node-gyp": {
|
"node-gyp": {
|
||||||
"version": "3.8.0",
|
"version": "3.8.0",
|
||||||
@@ -9719,6 +9914,11 @@
|
|||||||
"mimic-fn": "^1.0.0"
|
"mimic-fn": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"opencollective-postinstall": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw=="
|
||||||
|
},
|
||||||
"opener": {
|
"opener": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
|
||||||
@@ -11247,8 +11447,7 @@
|
|||||||
"resolve-url": {
|
"resolve-url": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
|
||||||
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
|
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"restore-cursor": {
|
"restore-cursor": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@@ -11673,6 +11872,12 @@
|
|||||||
"xmlbuilder": "^13.0.0"
|
"xmlbuilder": "^13.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"slash": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"slice-ansi": {
|
"slice-ansi": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
|
||||||
@@ -12647,6 +12852,58 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tesseract.js": {
|
||||||
|
"version": "2.0.0-alpha.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-2.0.0-alpha.15.tgz",
|
||||||
|
"integrity": "sha512-qM1XUFVlTO+tx6oVRpd9QQ8PwQLxo3qhbfIHByUlUVIqWx6y/U9xlHIaG033/Tjfs2EQ0NAehPTOJ+eNElsXEg==",
|
||||||
|
"requires": {
|
||||||
|
"axios": "^0.18.0",
|
||||||
|
"check-types": "^7.4.0",
|
||||||
|
"is-url": "1.2.2",
|
||||||
|
"node-fetch": "^2.3.0",
|
||||||
|
"opencollective-postinstall": "^2.0.2",
|
||||||
|
"resolve-url": "^0.2.1",
|
||||||
|
"tesseract.js-core": "^2.0.0-beta.11",
|
||||||
|
"tesseract.js-utils": "^1.0.0-beta.8"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"check-types": {
|
||||||
|
"version": "7.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
|
||||||
|
"integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg=="
|
||||||
|
},
|
||||||
|
"is-url": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz",
|
||||||
|
"integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tesseract.js-core": {
|
||||||
|
"version": "2.0.0-beta.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-2.0.0-beta.11.tgz",
|
||||||
|
"integrity": "sha512-07haKH2JYYo0OfIJoioMS9dDiI5Hrl7+r1MqjeNAAT5WpKO0ATe4cpncC8s1kz0e3s1kaC5WOwL3YJcjbJE+hg=="
|
||||||
|
},
|
||||||
|
"tesseract.js-utils": {
|
||||||
|
"version": "1.0.0-beta.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/tesseract.js-utils/-/tesseract.js-utils-1.0.0-beta.8.tgz",
|
||||||
|
"integrity": "sha512-qjHBfWfzo2o1ZY9XI0Wh2hmpp38+mIgCMOk60W5Yyie/pBl421VLBKOZUEwQgpbLnOJ24VU6Q8yXsVgtFFHcFg==",
|
||||||
|
"requires": {
|
||||||
|
"axios": "^0.18.0",
|
||||||
|
"bmp-js": "^0.1.0",
|
||||||
|
"file-type": "^10.5.0",
|
||||||
|
"idb-keyval": "^3.1.0",
|
||||||
|
"is-url": "^1.2.4",
|
||||||
|
"zlibjs": "^0.3.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"file-type": {
|
||||||
|
"version": "10.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
|
||||||
|
"integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"text-table": {
|
"text-table": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cyberchef",
|
"name": "cyberchef",
|
||||||
"version": "9.6.0",
|
"version": "9.7.5",
|
||||||
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
||||||
"author": "n1474335 <n1474335@gmail.com>",
|
"author": "n1474335 <n1474335@gmail.com>",
|
||||||
"homepage": "https://gchq.github.io/CyberChef",
|
"homepage": "https://gchq.github.io/CyberChef",
|
||||||
@@ -45,6 +45,7 @@
|
|||||||
"babel-plugin-dynamic-import-node": "^2.3.0",
|
"babel-plugin-dynamic-import-node": "^2.3.0",
|
||||||
"chromedriver": "^76.0.1",
|
"chromedriver": "^76.0.1",
|
||||||
"colors": "^1.3.3",
|
"colors": "^1.3.3",
|
||||||
|
"copy-webpack-plugin": "^5.0.4",
|
||||||
"css-loader": "^3.2.0",
|
"css-loader": "^3.2.0",
|
||||||
"eslint": "^6.2.2",
|
"eslint": "^6.2.2",
|
||||||
"exports-loader": "^0.7.0",
|
"exports-loader": "^0.7.0",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"moment-timezone": "^0.5.26",
|
"moment-timezone": "^0.5.26",
|
||||||
"ngeohash": "^0.6.3",
|
"ngeohash": "^0.6.3",
|
||||||
"node-forge": "^0.8.5",
|
"node-forge": "^0.9.1",
|
||||||
"node-md6": "^0.1.0",
|
"node-md6": "^0.1.0",
|
||||||
"nodom": "^2.2.0",
|
"nodom": "^2.2.0",
|
||||||
"notepack.io": "^2.2.0",
|
"notepack.io": "^2.2.0",
|
||||||
@@ -143,6 +144,7 @@
|
|||||||
"sortablejs": "^1.9.0",
|
"sortablejs": "^1.9.0",
|
||||||
"split.js": "^1.5.11",
|
"split.js": "^1.5.11",
|
||||||
"ssdeep.js": "0.0.2",
|
"ssdeep.js": "0.0.2",
|
||||||
|
"tesseract.js": "^2.0.0-alpha.15",
|
||||||
"ua-parser-js": "^0.7.20",
|
"ua-parser-js": "^0.7.20",
|
||||||
"utf8": "^3.0.0",
|
"utf8": "^3.0.0",
|
||||||
"vkbeautify": "^0.99.3",
|
"vkbeautify": "^0.99.3",
|
||||||
|
|||||||
@@ -383,6 +383,7 @@
|
|||||||
"ops": [
|
"ops": [
|
||||||
"Render Image",
|
"Render Image",
|
||||||
"Play Media",
|
"Play Media",
|
||||||
|
"Optical Character Recognition",
|
||||||
"Remove EXIF",
|
"Remove EXIF",
|
||||||
"Extract EXIF",
|
"Extract EXIF",
|
||||||
"Split Colour Channels",
|
"Split Colour Channels",
|
||||||
|
|||||||
@@ -241,6 +241,28 @@ export const FILE_SIGNATURES = {
|
|||||||
],
|
],
|
||||||
extractor: null
|
extractor: null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "The GIMP image",
|
||||||
|
extension: "xcf",
|
||||||
|
mime: "image/x-xcf",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x67, // gimp xcf
|
||||||
|
1: 0x69,
|
||||||
|
2: 0x6d,
|
||||||
|
3: 0x70,
|
||||||
|
4: 0x20,
|
||||||
|
5: 0x78,
|
||||||
|
6: 0x63,
|
||||||
|
7: 0x66,
|
||||||
|
8: 0x20,
|
||||||
|
9: [0x66, 0x76],
|
||||||
|
10: [0x69, 0x30],
|
||||||
|
11: [0x6c, 0x30],
|
||||||
|
12: [0x65, 0x31, 0x32, 0x33]
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Icon image",
|
name: "Icon image",
|
||||||
extension: "ico",
|
extension: "ico",
|
||||||
@@ -363,10 +385,40 @@ export const FILE_SIGNATURES = {
|
|||||||
3: 0x00
|
3: 0x00
|
||||||
},
|
},
|
||||||
extractor: null
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Joint Photographic Experts Group image (under Base64)",
|
||||||
|
extension: "B64",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x2f,
|
||||||
|
1: 0x39,
|
||||||
|
2: 0x6a,
|
||||||
|
3: 0x2f,
|
||||||
|
4: 0x34
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Portable Network Graphics image (under Base64)",
|
||||||
|
extension: "B64",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x69,
|
||||||
|
1: 0x56,
|
||||||
|
2: 0x42,
|
||||||
|
3: 0x4f,
|
||||||
|
4: 0x52,
|
||||||
|
5: 0x77,
|
||||||
|
6: 0x30
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Video": [
|
"Video": [
|
||||||
{ // Place before webm
|
{
|
||||||
name: "Matroska Multimedia Container",
|
name: "Matroska Multimedia Container",
|
||||||
extension: "mkv",
|
extension: "mkv",
|
||||||
mime: "video/x-matroska",
|
mime: "video/x-matroska",
|
||||||
@@ -392,7 +444,28 @@ export const FILE_SIGNATURES = {
|
|||||||
0: 0x1a,
|
0: 0x1a,
|
||||||
1: 0x45,
|
1: 0x45,
|
||||||
2: 0xdf,
|
2: 0xdf,
|
||||||
3: 0xa3
|
3: 0xa3,
|
||||||
|
4: 0x01,
|
||||||
|
5: 0x00,
|
||||||
|
6: 0x00,
|
||||||
|
7: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{ // Place before MPEG-4
|
||||||
|
name: "Flash MP4 video",
|
||||||
|
extension: "f4v",
|
||||||
|
mime: "video/mp4",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
4: 0x66,
|
||||||
|
5: 0x74,
|
||||||
|
6: 0x79,
|
||||||
|
7: 0x70,
|
||||||
|
8: [0x66, 0x46],
|
||||||
|
9: 0x34,
|
||||||
|
10: [0x76, 0x56],
|
||||||
|
11: 0x20
|
||||||
},
|
},
|
||||||
extractor: null
|
extractor: null
|
||||||
},
|
},
|
||||||
@@ -766,6 +839,41 @@ export const FILE_SIGNATURES = {
|
|||||||
},
|
},
|
||||||
extractor: extractPDF
|
extractor: extractPDF
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Portable Document Format (under Base64)",
|
||||||
|
extension: "B64",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x41,
|
||||||
|
1: 0x4a,
|
||||||
|
2: 0x56,
|
||||||
|
3: 0x42,
|
||||||
|
4: 0x45,
|
||||||
|
5: 0x52,
|
||||||
|
6: 0x69
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{ // Place before PostScript
|
||||||
|
name: "Adobe PostScript",
|
||||||
|
extension: "ps,eps,ai,pfa",
|
||||||
|
mime: "application/postscript",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x25,
|
||||||
|
1: 0x21,
|
||||||
|
2: 0x50,
|
||||||
|
3: 0x53,
|
||||||
|
4: 0x2d,
|
||||||
|
5: 0x41,
|
||||||
|
6: 0x64,
|
||||||
|
7: 0x6f,
|
||||||
|
8: 0x62,
|
||||||
|
9: 0x65
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "PostScript",
|
name: "PostScript",
|
||||||
extension: "ps",
|
extension: "ps",
|
||||||
@@ -792,7 +900,7 @@ export const FILE_SIGNATURES = {
|
|||||||
extractor: extractRTF
|
extractor: extractRTF
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Microsoft Office documents/OLE2",
|
name: "Microsoft Office document/OLE2",
|
||||||
extension: "ole2,doc,xls,dot,ppt,xla,ppa,pps,pot,msi,sdw,db,vsd,msg",
|
extension: "ole2,doc,xls,dot,ppt,xla,ppa,pps,pot,msi,sdw,db,vsd,msg",
|
||||||
mime: "application/msword,application/vnd.ms-excel,application/vnd.ms-powerpoint",
|
mime: "application/msword,application/vnd.ms-excel,application/vnd.ms-powerpoint",
|
||||||
description: "Microsoft Office documents",
|
description: "Microsoft Office documents",
|
||||||
@@ -809,7 +917,24 @@ export const FILE_SIGNATURES = {
|
|||||||
extractor: null
|
extractor: null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Microsoft Office 2007+ documents",
|
name: "Microsoft Office document/OLE2 (under Base64)",
|
||||||
|
extension: "B64",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x30,
|
||||||
|
1: 0x4d,
|
||||||
|
2: 0x38,
|
||||||
|
3: 0x52,
|
||||||
|
4: 0x34,
|
||||||
|
5: 0x4b,
|
||||||
|
6: 0x47,
|
||||||
|
7: 0x78
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft Office 2007+ document",
|
||||||
extension: "docx,xlsx,pptx",
|
extension: "docx,xlsx,pptx",
|
||||||
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||||
description: "",
|
description: "",
|
||||||
@@ -828,6 +953,131 @@ export const FILE_SIGNATURES = {
|
|||||||
},
|
},
|
||||||
extractor: extractZIP
|
extractor: extractZIP
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft Access database",
|
||||||
|
extension: "mdb,mda,mde,mdt,fdb,psa",
|
||||||
|
mime: "application/msaccess",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x00,
|
||||||
|
1: 0x01,
|
||||||
|
2: 0x00,
|
||||||
|
3: 0x00,
|
||||||
|
4: 0x53, // Standard Jet
|
||||||
|
5: 0x74,
|
||||||
|
6: 0x61,
|
||||||
|
7: 0x6e,
|
||||||
|
8: 0x64,
|
||||||
|
9: 0x61,
|
||||||
|
10: 0x72,
|
||||||
|
11: 0x64,
|
||||||
|
12: 0x20,
|
||||||
|
13: 0x4a,
|
||||||
|
14: 0x65,
|
||||||
|
15: 0x74
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft Access 2007+ database",
|
||||||
|
extension: "accdb,accde,accda,accdu",
|
||||||
|
mime: "application/msaccess",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x00,
|
||||||
|
1: 0x01,
|
||||||
|
2: 0x00,
|
||||||
|
3: 0x00,
|
||||||
|
4: 0x53, // Standard ACE DB
|
||||||
|
5: 0x74,
|
||||||
|
6: 0x61,
|
||||||
|
7: 0x6e,
|
||||||
|
8: 0x64,
|
||||||
|
9: 0x61,
|
||||||
|
10: 0x72,
|
||||||
|
11: 0x64,
|
||||||
|
12: 0x20,
|
||||||
|
13: 0x41,
|
||||||
|
14: 0x43,
|
||||||
|
15: 0x45,
|
||||||
|
16: 0x20
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft OneNote document",
|
||||||
|
extension: "one",
|
||||||
|
mime: "application/onenote",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0xe4,
|
||||||
|
1: 0x52,
|
||||||
|
2: 0x5c,
|
||||||
|
3: 0x7b,
|
||||||
|
4: 0x8c,
|
||||||
|
5: 0xd8,
|
||||||
|
6: 0xa7,
|
||||||
|
7: 0x4d,
|
||||||
|
8: 0xae,
|
||||||
|
9: 0xb1,
|
||||||
|
10: 0x53,
|
||||||
|
11: 0x78,
|
||||||
|
12: 0xd0,
|
||||||
|
13: 0x29,
|
||||||
|
14: 0x96,
|
||||||
|
15: 0xd3
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Outlook Express database",
|
||||||
|
extension: "dbx",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0xcf,
|
||||||
|
1: 0xad,
|
||||||
|
2: 0x12,
|
||||||
|
3: 0xfe,
|
||||||
|
4: [0x30, 0xc5, 0xc6, 0xc7],
|
||||||
|
11: 0x11
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Personal Storage Table (Outlook)",
|
||||||
|
extension: "pst,ost,fdb,pab",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x21, // !BDN
|
||||||
|
1: 0x42,
|
||||||
|
2: 0x44,
|
||||||
|
3: 0x4e
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft Exchange Database",
|
||||||
|
extension: "edb",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
4: 0xef,
|
||||||
|
5: 0xcd,
|
||||||
|
6: 0xab,
|
||||||
|
7: 0x89,
|
||||||
|
8: [0x20, 0x23],
|
||||||
|
9: 0x06,
|
||||||
|
10: 0x00,
|
||||||
|
11: 0x00,
|
||||||
|
12: [0x00, 0x01],
|
||||||
|
13: 0x00,
|
||||||
|
14: 0x00,
|
||||||
|
15: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "EPUB e-book",
|
name: "EPUB e-book",
|
||||||
extension: "epub",
|
extension: "epub",
|
||||||
@@ -897,6 +1147,36 @@ export const FILE_SIGNATURES = {
|
|||||||
},
|
},
|
||||||
extractor: extractELF
|
extractor: extractELF
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "MacOS Mach-O object file",
|
||||||
|
extension: "dylib",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0xca,
|
||||||
|
1: 0xfe,
|
||||||
|
2: 0xba,
|
||||||
|
3: 0xbe,
|
||||||
|
4: 0x00,
|
||||||
|
5: 0x00,
|
||||||
|
6: 0x00,
|
||||||
|
7: [0x01, 0x02, 0x03]
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "MacOS Mach-O 64-bit object file",
|
||||||
|
extension: "dylib",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0xcf,
|
||||||
|
1: 0xfa,
|
||||||
|
2: 0xed,
|
||||||
|
3: 0xfe
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Adobe Flash",
|
name: "Adobe Flash",
|
||||||
extension: "swf",
|
extension: "swf",
|
||||||
@@ -905,7 +1185,7 @@ export const FILE_SIGNATURES = {
|
|||||||
signature: {
|
signature: {
|
||||||
0: [0x43, 0x46],
|
0: [0x43, 0x46],
|
||||||
1: 0x57,
|
1: 0x57,
|
||||||
2: 0x53
|
2: 0x53,
|
||||||
},
|
},
|
||||||
extractor: null
|
extractor: null
|
||||||
},
|
},
|
||||||
@@ -967,13 +1247,28 @@ export const FILE_SIGNATURES = {
|
|||||||
},
|
},
|
||||||
extractor: extractZIP
|
extractor: extractZIP
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "PKZIP archive (under Base64)",
|
||||||
|
extension: "B64",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x55,
|
||||||
|
1: 0x45,
|
||||||
|
2: 0x73,
|
||||||
|
3: 0x44,
|
||||||
|
4: 0x42,
|
||||||
|
5: 0x42
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "TAR archive",
|
name: "TAR archive",
|
||||||
extension: "tar",
|
extension: "tar",
|
||||||
mime: "application/x-tar",
|
mime: "application/x-tar",
|
||||||
description: "",
|
description: "",
|
||||||
signature: {
|
signature: {
|
||||||
257: 0x75,
|
257: 0x75, // ustar
|
||||||
258: 0x73,
|
258: 0x73,
|
||||||
259: 0x74,
|
259: 0x74,
|
||||||
260: 0x61,
|
260: 0x61,
|
||||||
@@ -1111,7 +1406,45 @@ export const FILE_SIGNATURES = {
|
|||||||
signature: {
|
signature: {
|
||||||
0: 0x4b,
|
0: 0x4b,
|
||||||
1: 0x44,
|
1: 0x44,
|
||||||
2: 0x4d
|
2: 0x4d,
|
||||||
|
3: 0x56,
|
||||||
|
5: 0x00,
|
||||||
|
6: 0x00,
|
||||||
|
7: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Virtual Hard Drive",
|
||||||
|
extension: "vhd",
|
||||||
|
mime: "application/x-vhd",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x63, // conectix
|
||||||
|
1: 0x6f,
|
||||||
|
2: 0x6e,
|
||||||
|
3: 0x65,
|
||||||
|
4: 0x63,
|
||||||
|
5: 0x74,
|
||||||
|
6: 0x69,
|
||||||
|
7: 0x78
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Macintosh disk image",
|
||||||
|
extension: "dmf,dmg",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x78,
|
||||||
|
1: 0x01,
|
||||||
|
2: 0x73,
|
||||||
|
3: 0x0d,
|
||||||
|
4: 0x62,
|
||||||
|
5: 0x62,
|
||||||
|
6: 0x60,
|
||||||
|
7: 0x60
|
||||||
},
|
},
|
||||||
extractor: null
|
extractor: null
|
||||||
},
|
},
|
||||||
@@ -1218,7 +1551,37 @@ export const FILE_SIGNATURES = {
|
|||||||
9: 0x2d
|
9: 0x2d
|
||||||
},
|
},
|
||||||
extractor: null
|
extractor: null
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
name: "Microsoft Cabinet file",
|
||||||
|
extension: "cab",
|
||||||
|
mime: "vnd.ms-cab-compressed",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x4d,
|
||||||
|
1: 0x53,
|
||||||
|
2: 0x43,
|
||||||
|
3: 0x46,
|
||||||
|
4: 0x00,
|
||||||
|
5: 0x00,
|
||||||
|
6: 0x00,
|
||||||
|
7: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Jar Archive",
|
||||||
|
extension: "jar",
|
||||||
|
mime: "application/java-archive",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x5f,
|
||||||
|
1: 0x27,
|
||||||
|
2: 0xa8,
|
||||||
|
3: 0x89
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
],
|
],
|
||||||
"Miscellaneous": [
|
"Miscellaneous": [
|
||||||
{
|
{
|
||||||
@@ -1398,7 +1761,213 @@ export const FILE_SIGNATURES = {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
extractor: null
|
extractor: null
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
name: "Cryptocurrency wallet",
|
||||||
|
extension: "wallet",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x00,
|
||||||
|
1: 0x00,
|
||||||
|
2: 0x00,
|
||||||
|
3: 0x00,
|
||||||
|
4: 0x01,
|
||||||
|
5: 0x00,
|
||||||
|
6: 0x00,
|
||||||
|
7: 0x00,
|
||||||
|
8: 0x00,
|
||||||
|
9: 0x00,
|
||||||
|
10: 0x00,
|
||||||
|
11: 0x00,
|
||||||
|
12: 0x62,
|
||||||
|
13: 0x31,
|
||||||
|
14: 0x05,
|
||||||
|
15: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Registry fragment",
|
||||||
|
extension: "hbin",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x68, // hbin
|
||||||
|
1: 0x62,
|
||||||
|
2: 0x69,
|
||||||
|
3: 0x6e,
|
||||||
|
4: 0x00
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Registry script",
|
||||||
|
extension: "rgs",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x48, // HKCR
|
||||||
|
1: 0x4b,
|
||||||
|
2: 0x43,
|
||||||
|
3: 0x52,
|
||||||
|
4: 0x0d,
|
||||||
|
5: 0x0a,
|
||||||
|
6: 0x5c,
|
||||||
|
7: 0x7b
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "WinNT Registry Hive",
|
||||||
|
extension: "registry",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x72,
|
||||||
|
1: 0x65,
|
||||||
|
2: 0x67,
|
||||||
|
3: 0x66
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Windows Event Log",
|
||||||
|
extension: "evt",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x30,
|
||||||
|
1: 0x00,
|
||||||
|
2: 0x00,
|
||||||
|
3: 0x00,
|
||||||
|
4: 0x4c,
|
||||||
|
5: 0x66,
|
||||||
|
6: 0x4c,
|
||||||
|
7: 0x65
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Windows Event Log",
|
||||||
|
extension: "evtx",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x45, // ElfFile
|
||||||
|
1: 0x6c,
|
||||||
|
2: 0x66,
|
||||||
|
3: 0x46,
|
||||||
|
4: 0x69,
|
||||||
|
5: 0x6c,
|
||||||
|
6: 0x65
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Windows Pagedump",
|
||||||
|
extension: "dmp",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x50, // PAGEDU(MP|64)
|
||||||
|
1: 0x41,
|
||||||
|
2: 0x47,
|
||||||
|
3: 0x45,
|
||||||
|
4: 0x44,
|
||||||
|
5: 0x55,
|
||||||
|
6: [0x4d, 0x36],
|
||||||
|
7: [0x50, 0x34]
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Windows Prefetch",
|
||||||
|
extension: "pf",
|
||||||
|
mime: "application/x-pf",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: [0x11, 0x17, 0x1a],
|
||||||
|
1: 0x0,
|
||||||
|
2: 0x0,
|
||||||
|
3: 0x0,
|
||||||
|
4: 0x53,
|
||||||
|
5: 0x43,
|
||||||
|
6: 0x43,
|
||||||
|
7: 0x41
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Windows Prefetch (Win 10)",
|
||||||
|
extension: "pf",
|
||||||
|
mime: "application/x-pf",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x4d,
|
||||||
|
1: 0x41,
|
||||||
|
2: 0x4d,
|
||||||
|
3: 0x04,
|
||||||
|
7: 0x0
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "PList (XML)",
|
||||||
|
extension: "plist",
|
||||||
|
mime: "application/xml",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
39: 0x3c, // <!DOCTYPE plist
|
||||||
|
40: 0x21,
|
||||||
|
41: 0x44,
|
||||||
|
42: 0x4f,
|
||||||
|
43: 0x43,
|
||||||
|
44: 0x54,
|
||||||
|
45: 0x59,
|
||||||
|
46: 0x50,
|
||||||
|
47: 0x45,
|
||||||
|
48: 0x20,
|
||||||
|
49: 0x70,
|
||||||
|
50: 0x6c,
|
||||||
|
51: 0x69,
|
||||||
|
52: 0x73,
|
||||||
|
53: 0x74
|
||||||
|
},
|
||||||
|
extractor: extractPListXML
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "PList (binary)",
|
||||||
|
extension: "bplist,plist,ipmeta,abcdp,mdbackup,mdinfo,strings,nib,ichat,qtz,webbookmark,webhistory",
|
||||||
|
mime: "application/x-plist",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x62, // bplist00
|
||||||
|
1: 0x70,
|
||||||
|
2: 0x6c,
|
||||||
|
3: 0x69,
|
||||||
|
4: 0x73,
|
||||||
|
5: 0x74,
|
||||||
|
6: 0x30,
|
||||||
|
7: 0x30
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "MacOS X Keychain",
|
||||||
|
extension: "keychain",
|
||||||
|
mime: "application/octet-stream",
|
||||||
|
description: "",
|
||||||
|
signature: {
|
||||||
|
0: 0x6b, // keych
|
||||||
|
1: 0x79,
|
||||||
|
2: 0x63,
|
||||||
|
3: 0x68,
|
||||||
|
4: 0x00,
|
||||||
|
5: 0x01
|
||||||
|
},
|
||||||
|
extractor: null
|
||||||
|
},
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1732,6 +2301,24 @@ export function extractRTF(bytes, offset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PList (XML) extractor.
|
||||||
|
*
|
||||||
|
* @param {Uint8Array} bytes
|
||||||
|
* @param {number} offset
|
||||||
|
* @returns {Uint8Array}
|
||||||
|
*/
|
||||||
|
export function extractPListXML(bytes, offset) {
|
||||||
|
const stream = new Stream(bytes.slice(offset));
|
||||||
|
|
||||||
|
// Find closing tag (</plist>\n)
|
||||||
|
stream.continueUntil([0x3c, 0x2f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x3e, 0x0a]);
|
||||||
|
stream.moveForwardsBy(9);
|
||||||
|
|
||||||
|
return stream.carve();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GZIP extractor.
|
* GZIP extractor.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class ConvertDataUnits extends Operation {
|
|||||||
const DATA_UNITS = [
|
const DATA_UNITS = [
|
||||||
"Bits (b)", "Nibbles", "Octets", "Bytes (B)",
|
"Bits (b)", "Nibbles", "Octets", "Bytes (B)",
|
||||||
"[Binary bits (2^n)]", "Kibibits (Kib)", "Mebibits (Mib)", "Gibibits (Gib)", "Tebibits (Tib)", "Pebibits (Pib)", "Exbibits (Eib)", "Zebibits (Zib)", "Yobibits (Yib)", "[/Binary bits (2^n)]",
|
"[Binary bits (2^n)]", "Kibibits (Kib)", "Mebibits (Mib)", "Gibibits (Gib)", "Tebibits (Tib)", "Pebibits (Pib)", "Exbibits (Eib)", "Zebibits (Zib)", "Yobibits (Yib)", "[/Binary bits (2^n)]",
|
||||||
"[Decimal bits (10^n)]", "Decabits", "Hectobits", "Kilobits (kb)", "Megabits (Mb)", "Gigabits (Gb)", "Terabits (Tb)", "Petabits (Pb)", "Exabits (Eb)", "Zettabits (Zb)", "Yottabits (Yb)", "[/Decimal bits (10^n)]",
|
"[Decimal bits (10^n)]", "Decabits", "Hectobits", "Kilobits (Kb)", "Megabits (Mb)", "Gigabits (Gb)", "Terabits (Tb)", "Petabits (Pb)", "Exabits (Eb)", "Zettabits (Zb)", "Yottabits (Yb)", "[/Decimal bits (10^n)]",
|
||||||
"[Binary bytes (8 x 2^n)]", "Kibibytes (KiB)", "Mebibytes (MiB)", "Gibibytes (GiB)", "Tebibytes (TiB)", "Pebibytes (PiB)", "Exbibytes (EiB)", "Zebibytes (ZiB)", "Yobibytes (YiB)", "[/Binary bytes (8 x 2^n)]",
|
"[Binary bytes (8 x 2^n)]", "Kibibytes (KiB)", "Mebibytes (MiB)", "Gibibytes (GiB)", "Tebibytes (TiB)", "Pebibytes (PiB)", "Exbibytes (EiB)", "Zebibytes (ZiB)", "Yobibytes (YiB)", "[/Binary bytes (8 x 2^n)]",
|
||||||
"[Decimal bytes (8 x 10^n)]", "Kilobytes (KB)", "Megabytes (MB)", "Gigabytes (GB)", "Terabytes (TB)", "Petabytes (PB)", "Exabytes (EB)", "Zettabytes (ZB)", "Yottabytes (YB)", "[/Decimal bytes (8 x 10^n)]"
|
"[Decimal bytes (8 x 10^n)]", "Kilobytes (KB)", "Megabytes (MB)", "Gigabytes (GB)", "Terabytes (TB)", "Petabytes (PB)", "Exabytes (EB)", "Zettabytes (ZB)", "Yottabytes (YB)", "[/Decimal bytes (8 x 10^n)]"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ class DetectFileType extends Operation {
|
|||||||
this.module = "Default";
|
this.module = "Default";
|
||||||
this.description = "Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: " +
|
this.description = "Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.<br><br>Currently supports the following file types: " +
|
||||||
Object.keys(FILE_SIGNATURES).map(cat =>
|
Object.keys(FILE_SIGNATURES).map(cat =>
|
||||||
FILE_SIGNATURES[cat].map(sig =>
|
[].concat.apply([], FILE_SIGNATURES[cat].map(sig =>
|
||||||
sig.extension.split(",")[0]
|
sig.extension.split(",")
|
||||||
).join(", ")
|
)).unique().join(", ")
|
||||||
).join(", ") + ".";
|
).unique().join(", ") + ".";
|
||||||
this.infoURL = "https://wikipedia.org/wiki/List_of_file_signatures";
|
this.infoURL = "https://wikipedia.org/wiki/List_of_file_signatures";
|
||||||
this.inputType = "ArrayBuffer";
|
this.inputType = "ArrayBuffer";
|
||||||
this.outputType = "string";
|
this.outputType = "string";
|
||||||
|
|||||||
87
src/core/operations/OpticalCharacterRecognition.mjs
Normal file
87
src/core/operations/OpticalCharacterRecognition.mjs
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
/**
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @author mshwed [m@ttshwed.com]
|
||||||
|
* @copyright Crown Copyright 2019
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from "../Operation.mjs";
|
||||||
|
import OperationError from "../errors/OperationError.mjs";
|
||||||
|
import { isImage } from "../lib/FileType.mjs";
|
||||||
|
import { toBase64 } from "../lib/Base64.mjs";
|
||||||
|
import { isWorkerEnvironment } from "../Utils.mjs";
|
||||||
|
|
||||||
|
import Tesseract from "tesseract.js";
|
||||||
|
const { TesseractWorker } = Tesseract;
|
||||||
|
|
||||||
|
import process from "process";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optical Character Recognition operation
|
||||||
|
*/
|
||||||
|
class OpticalCharacterRecognition extends Operation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpticalCharacterRecognition constructor
|
||||||
|
*/
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = "Optical Character Recognition";
|
||||||
|
this.module = "OCR";
|
||||||
|
this.description = "Optical character recognition or optical character reader (OCR) is the mechanical or electronic conversion of images of typed, handwritten or printed text into machine-encoded text.<br><br>Supported image formats: png, jpg, bmp, pbm.";
|
||||||
|
this.infoURL = "https://wikipedia.org/wiki/Optical_character_recognition";
|
||||||
|
this.inputType = "ArrayBuffer";
|
||||||
|
this.outputType = "string";
|
||||||
|
this.args = [
|
||||||
|
{
|
||||||
|
name: "Show confidence",
|
||||||
|
type: "boolean",
|
||||||
|
value: true
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
async run(input, args) {
|
||||||
|
const [showConfidence] = args;
|
||||||
|
|
||||||
|
if (!isWorkerEnvironment()) throw OperationError("This operation only works in a browser");
|
||||||
|
|
||||||
|
const type = isImage(input);
|
||||||
|
if (!type) {
|
||||||
|
throw new OperationError("Invalid File Type");
|
||||||
|
}
|
||||||
|
|
||||||
|
const assetDir = isWorkerEnvironment() ? `${self.docURL}/assets/` : `${process.cwd()}/src/core/vendor/`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const image = `data:${type};base64,${toBase64(input)}`;
|
||||||
|
const worker = new TesseractWorker({
|
||||||
|
workerPath: `${assetDir}tesseract/worker.min.js`,
|
||||||
|
langPath: `${assetDir}tesseract/lang-data`,
|
||||||
|
corePath: `${assetDir}tesseract/tesseract-core.wasm.js`,
|
||||||
|
});
|
||||||
|
const result = await worker.recognize(image)
|
||||||
|
.progress(progress => {
|
||||||
|
if (isWorkerEnvironment()) {
|
||||||
|
self.sendStatusMessage(`Status: ${progress.status} - ${(parseFloat(progress.progress)*100).toFixed(2)}%`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (showConfidence) {
|
||||||
|
return `Confidence: ${result.confidence}%\n\n${result.text}`;
|
||||||
|
} else {
|
||||||
|
return result.text;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
throw new OperationError(`Error performing OCR on image. (${err})`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OpticalCharacterRecognition;
|
||||||
BIN
src/core/vendor/tesseract/lang-data/eng.traineddata.gz
vendored
Normal file
BIN
src/core/vendor/tesseract/lang-data/eng.traineddata.gz
vendored
Normal file
Binary file not shown.
24
src/core/vendor/tesseract/tesseract-core.wasm.js
vendored
Normal file
24
src/core/vendor/tesseract/tesseract-core.wasm.js
vendored
Normal file
File diff suppressed because one or more lines are too long
17
src/core/vendor/tesseract/worker.min.js
vendored
Normal file
17
src/core/vendor/tesseract/worker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -43,11 +43,13 @@ class NodeRecipe {
|
|||||||
} else {
|
} else {
|
||||||
throw new TypeError("Inputted function not a Chef operation.");
|
throw new TypeError("Inputted function not a Chef operation.");
|
||||||
}
|
}
|
||||||
// CASE: op with configuration
|
// CASE: op, maybe with configuration
|
||||||
} else if (ing.op && ing.args) {
|
} else if (ing.op) {
|
||||||
// Return op and args pair for opList item.
|
|
||||||
const sanitisedOp = this._validateIngredient(ing.op);
|
const sanitisedOp = this._validateIngredient(ing.op);
|
||||||
return {op: sanitisedOp, args: ing.args};
|
if (ing.args) {
|
||||||
|
return {op: sanitisedOp, args: ing.args};
|
||||||
|
}
|
||||||
|
return sanitisedOp;
|
||||||
} else {
|
} else {
|
||||||
throw new TypeError("Recipe can only contain function names or functions");
|
throw new TypeError("Recipe can only contain function names or functions");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,6 +259,13 @@ TestRegister.addApiTests([
|
|||||||
assert.strictEqual(result.toString(), "73:6f:6d:65:20:69:6e:70:75:74");
|
assert.strictEqual(result.toString(), "73:6f:6d:65:20:69:6e:70:75:74");
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
it("chef.bake: should take single JSON object desribing op with optional args", () => {
|
||||||
|
const result = chef.bake("some input", {
|
||||||
|
op: chef.toHex,
|
||||||
|
});
|
||||||
|
assert.strictEqual(result.toString(), "73 6f 6d 65 20 69 6e 70 75 74");
|
||||||
|
}),
|
||||||
|
|
||||||
it("chef.bake: should take single JSON object describing op and args ARRAY", () => {
|
it("chef.bake: should take single JSON object describing op and args ARRAY", () => {
|
||||||
const result = chef.bake("some input", {
|
const result = chef.bake("some input", {
|
||||||
op: chef.toHex,
|
op: chef.toHex,
|
||||||
@@ -295,6 +302,21 @@ TestRegister.addApiTests([
|
|||||||
assert.strictEqual(result.toString(), "67;63;72;66;146;72;66;144;72;66;65;72;62;60;72;66;71;72;66;145;72;67;60;72;67;65;72;67;64");
|
assert.strictEqual(result.toString(), "67;63;72;66;146;72;66;144;72;66;65;72;62;60;72;66;71;72;66;145;72;67;60;72;67;65;72;67;64");
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
it("chef.bake: should take multiple ops in JSON object form, some without args", () => {
|
||||||
|
const result = chef.bake("some input", [
|
||||||
|
{
|
||||||
|
op: chef.toHex,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
op: "to octal",
|
||||||
|
args: {
|
||||||
|
delimiter: "Semi-colon",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
assert.strictEqual(result.toString(), "67;63;40;66;146;40;66;144;40;66;65;40;62;60;40;66;71;40;66;145;40;67;60;40;67;65;40;67;64");
|
||||||
|
}),
|
||||||
|
|
||||||
it("chef.bake: should handle op with multiple args", () => {
|
it("chef.bake: should handle op with multiple args", () => {
|
||||||
const result = chef.bake("some input", {
|
const result = chef.bake("some input", {
|
||||||
op: "to morse code",
|
op: "to morse code",
|
||||||
@@ -324,6 +346,17 @@ TestRegister.addApiTests([
|
|||||||
assert.strictEqual(result.toString(), "begin_something_anananaaaaak_da_aaak_da_aaaaananaaaaaaan_da_aaaaaaanan_da_aaak_end_something");
|
assert.strictEqual(result.toString(), "begin_something_anananaaaaak_da_aaak_da_aaaaananaaaaaaan_da_aaaaaaanan_da_aaak_end_something");
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
it("chef.bake: should accept Clean JSON format from Chef website - args optional", () => {
|
||||||
|
const result = chef.bake("some input", [
|
||||||
|
{ "op": "To Morse Code" },
|
||||||
|
{ "op": "Hex to PEM",
|
||||||
|
"args": ["SOMETHING"] },
|
||||||
|
{ "op": "To Snake case",
|
||||||
|
"args": [false] }
|
||||||
|
]);
|
||||||
|
assert.strictEqual(result.toString(), "begin_something_aaaaaaaaaaaaaa_end_something");
|
||||||
|
}),
|
||||||
|
|
||||||
it("Excluded operations: throw a sensible error when you try and call one", () => {
|
it("Excluded operations: throw a sensible error when you try and call one", () => {
|
||||||
try {
|
try {
|
||||||
chef.fork();
|
chef.fork();
|
||||||
|
|||||||
@@ -70,13 +70,13 @@ TestRegister.addApiTests([
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
it("AES decrypt: toggleString and option", () => {
|
it("AES decrypt: toggleString and option", () => {
|
||||||
const result = AESDecrypt("812c34ae6af353244a63c6ce23b7c34286b60be28ea4645523d4494700e7", {
|
const result = AESDecrypt("4a123af235a507bbc9d5871721d61b98504d569a9a5a7847e2d78315fec7", {
|
||||||
key: {
|
key: {
|
||||||
string: "some longer key1",
|
string: "some longer key1",
|
||||||
option: "utf8",
|
option: "utf8",
|
||||||
},
|
},
|
||||||
iv: {
|
iv: {
|
||||||
string: "some iv",
|
string: "some iv some iv1",
|
||||||
option: "utf8",
|
option: "utf8",
|
||||||
},
|
},
|
||||||
mode: "OFB",
|
mode: "OFB",
|
||||||
@@ -916,8 +916,13 @@ smothering ampersand abreast
|
|||||||
it("Triple DES encrypt / decrypt", () => {
|
it("Triple DES encrypt / decrypt", () => {
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
chef.tripleDESDecrypt(
|
chef.tripleDESDecrypt(
|
||||||
chef.tripleDESEncrypt("Destroy Money", {key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"}}),
|
chef.tripleDESEncrypt("Destroy Money", {
|
||||||
{key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"}}).toString(),
|
key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"},
|
||||||
|
iv: {string: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00", option: "Hex"}}),
|
||||||
|
{
|
||||||
|
key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"},
|
||||||
|
iv: {string: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00", option: "Hex"}
|
||||||
|
}).toString(),
|
||||||
"Destroy Money");
|
"Destroy Money");
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ The following algorithms will be used based on the size of the key:
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES Encrypt: AES-128-CBC, no IV, ASCII",
|
name: "AES Encrypt: AES-128-CBC with IV0, ASCII",
|
||||||
input: "The quick brown fox jumps over the lazy dog.",
|
input: "The quick brown fox jumps over the lazy dog.",
|
||||||
expectedOutput: "2ef6c3fdb1314b5c2c326a2087fe1a82d5e73bf605ec8431d73e847187fc1c8fbbe969c177df1ecdf8c13f2f505f9498",
|
expectedOutput: "2ef6c3fdb1314b5c2c326a2087fe1a82d5e73bf605ec8431d73e847187fc1c8fbbe969c177df1ecdf8c13f2f505f9498",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
@@ -84,14 +84,14 @@ The following algorithms will be used based on the size of the key:
|
|||||||
"op": "AES Encrypt",
|
"op": "AES Encrypt",
|
||||||
"args": [
|
"args": [
|
||||||
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
||||||
{"option": "Hex", "string": ""},
|
{"option": "Hex", "string": "00000000000000000000000000000000"},
|
||||||
"CBC", "Raw", "Hex"
|
"CBC", "Raw", "Hex"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES Encrypt: AES-128-CTR, no IV, ASCII",
|
name: "AES Encrypt: AES-128-CTR with IV0, ASCII",
|
||||||
input: "The quick brown fox jumps over the lazy dog.",
|
input: "The quick brown fox jumps over the lazy dog.",
|
||||||
expectedOutput: "a98c9e8e3b7c894384d740e4f0f4ed0be2bbb1e0e13a255812c3c6b0a629e4ad759c075b2469c6f4fb2c0cf9",
|
expectedOutput: "a98c9e8e3b7c894384d740e4f0f4ed0be2bbb1e0e13a255812c3c6b0a629e4ad759c075b2469c6f4fb2c0cf9",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
@@ -99,14 +99,14 @@ The following algorithms will be used based on the size of the key:
|
|||||||
"op": "AES Encrypt",
|
"op": "AES Encrypt",
|
||||||
"args": [
|
"args": [
|
||||||
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
||||||
{"option": "Hex", "string": ""},
|
{"option": "Hex", "string": "00000000000000000000000000000000"},
|
||||||
"CTR", "Raw", "Hex"
|
"CTR", "Raw", "Hex"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES Encrypt: AES-128-CBC with IV, ASCII",
|
name: "AES Encrypt: AES-128-CBC with IV1, ASCII",
|
||||||
input: "The quick brown fox jumps over the lazy dog.",
|
input: "The quick brown fox jumps over the lazy dog.",
|
||||||
expectedOutput: "4fa077d50cc71a57393e7b542c4e3aea0fb75383b97083f2f568ffc13c0e7a47502ec6d9f25744a061a3a5e55fe95e8d",
|
expectedOutput: "4fa077d50cc71a57393e7b542c4e3aea0fb75383b97083f2f568ffc13c0e7a47502ec6d9f25744a061a3a5e55fe95e8d",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
@@ -537,9 +537,10 @@ Triple DES uses a key length of 24 bytes (192 bits).`,
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// play.golang.org/p/4Qm2hfLGsqc
|
||||||
name: "DES Encrypt: DES-CTR, Binary",
|
name: "DES Encrypt: DES-CTR, Binary",
|
||||||
input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
||||||
expectedOutput: "09015087e15b0937ab0ae5a84d66e520893690a6ea066382bf1330e8876cb3aa82ccc634f8f0d458bbe0257df6f4637cdac89f311168ba91208a21ba4bdd13c4b1a92cb93b33364b5b94a5d3d7fba68f6eed5807d9f5afeb7fbffcd94792131d264004ae",
|
expectedOutput: "09015087e15b0937c462fd5974af0c4b5880de136a5680453c99f4500628cbeca769623515d836985110b93eacfea7fa4a7b2b3cb4f67acbb5f7e8ddb5a5d445da74bf6572b0a874befa3888c81110776388e400afd8dc908dcc0c018c7753355f8a1c9f",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
{
|
{
|
||||||
"op": "DES Encrypt",
|
"op": "DES Encrypt",
|
||||||
@@ -630,9 +631,10 @@ DES uses a key length of 8 bytes (64 bits).`,
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// play.golang.org/p/RElT6pVeNz2
|
||||||
name: "Triple DES Encrypt: DES-EDE3-CTR, Binary",
|
name: "Triple DES Encrypt: DES-EDE3-CTR, Binary",
|
||||||
input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
||||||
expectedOutput: "874d32cd7bdae52c254687e2d7e7093b077af2ec70878f99315f52a21ded5fb10c80a47e6271384335ac47376c758f675484fd7b8be9568aaec643f0d15cffdf3fe54ef3a1b2da50d5d8c7994d7a4a94e0a13a4d437443f0f1f39e93dd13ff06a80c66e4",
|
expectedOutput: "874d32cd7bdae52cd8630d3ab2bf373e7110e13713caa6a8bfed9d9dd802d0ebe93128ac0d0f05abcc56237b75fb69207dba11e68ddc4b0118a4c75e7248bbd80aaba4dd4436642546ec6ca7fa7526f3b0018ed5194c409dc2c1484530b968af554984f3",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
{
|
{
|
||||||
"op": "Triple DES Encrypt",
|
"op": "Triple DES Encrypt",
|
||||||
@@ -681,7 +683,7 @@ The following algorithms will be used based on the size of the key:
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES Decrypt: AES-128-CBC, no IV, ASCII",
|
name: "AES Decrypt: AES-128-CBC with IV0, ASCII",
|
||||||
input: "2ef6c3fdb1314b5c2c326a2087fe1a82d5e73bf605ec8431d73e847187fc1c8fbbe969c177df1ecdf8c13f2f505f9498",
|
input: "2ef6c3fdb1314b5c2c326a2087fe1a82d5e73bf605ec8431d73e847187fc1c8fbbe969c177df1ecdf8c13f2f505f9498",
|
||||||
expectedOutput: "The quick brown fox jumps over the lazy dog.",
|
expectedOutput: "The quick brown fox jumps over the lazy dog.",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
@@ -689,7 +691,7 @@ The following algorithms will be used based on the size of the key:
|
|||||||
"op": "AES Decrypt",
|
"op": "AES Decrypt",
|
||||||
"args": [
|
"args": [
|
||||||
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
||||||
{"option": "Hex", "string": ""},
|
{"option": "Hex", "string": "00000000000000000000000000000000"},
|
||||||
"CBC", "Hex", "Raw",
|
"CBC", "Hex", "Raw",
|
||||||
{"option": "Hex", "string": ""}
|
{"option": "Hex", "string": ""}
|
||||||
]
|
]
|
||||||
@@ -697,7 +699,7 @@ The following algorithms will be used based on the size of the key:
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES Decrypt: AES-128-CTR, no IV, ASCII",
|
name: "AES Decrypt: AES-128-CTR with IV0, ASCII",
|
||||||
input: "a98c9e8e3b7c894384d740e4f0f4ed0be2bbb1e0e13a255812c3c6b0a629e4ad759c075b2469c6f4fb2c0cf9",
|
input: "a98c9e8e3b7c894384d740e4f0f4ed0be2bbb1e0e13a255812c3c6b0a629e4ad759c075b2469c6f4fb2c0cf9",
|
||||||
expectedOutput: "The quick brown fox jumps over the lazy dog.",
|
expectedOutput: "The quick brown fox jumps over the lazy dog.",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
@@ -705,7 +707,7 @@ The following algorithms will be used based on the size of the key:
|
|||||||
"op": "AES Decrypt",
|
"op": "AES Decrypt",
|
||||||
"args": [
|
"args": [
|
||||||
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
{"option": "Hex", "string": "00112233445566778899aabbccddeeff"},
|
||||||
{"option": "Hex", "string": ""},
|
{"option": "Hex", "string": "00000000000000000000000000000000"},
|
||||||
"CTR", "Hex", "Raw",
|
"CTR", "Hex", "Raw",
|
||||||
{"option": "Hex", "string": ""}
|
{"option": "Hex", "string": ""}
|
||||||
]
|
]
|
||||||
@@ -1160,9 +1162,10 @@ Triple DES uses a key length of 24 bytes (192 bits).`,
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// play.golang.org/p/FpvqncmPk7R
|
||||||
name: "DES Decrypt: DES-CTR, Binary",
|
name: "DES Decrypt: DES-CTR, Binary",
|
||||||
input: "09015087e15b0937ab0ae5a84d66e520893690a6ea066382bf1330e8876cb3aa82ccc634f8f0d458bbe0257df6f4637cdac89f311168ba91208a21ba4bdd13c4b1a92cb93b33364b5b94a5d3d7fba68f6eed5807d9f5afeb7fbffcd94792131d264004ae",
|
input: "09015087e15b0937ab0ae5a84d66e520893690a6ea066382bf1330e8876cb3aa82ccc634f8f0d458bbe0257df6f4637cdac89f311168ba91208a21ba4bdd13c4b1a92cb93b33364b5b94a5d3d7fba68f6eed5807d9f5afeb7fbffcd94792131d264004ae",
|
||||||
expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
expectedOutput: "7a0e643132750e96b76dc9efa7810bea2b8feaa5b97887e44f96c0e6d506cc4dd4665683c6f63139221f8d887fd0a05b39741f8a67d87d6ac6f8dc6b668bd3e4a97b8bd3a19eafd5cdf50c3e1b3f17d61087d0b67cf6db31fec338b75f5954942c852829",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
{
|
{
|
||||||
"op": "DES Decrypt",
|
"op": "DES Decrypt",
|
||||||
@@ -1253,9 +1256,10 @@ DES uses a key length of 8 bytes (64 bits).`,
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// play.golang.org/p/iBacN9kX_RO
|
||||||
name: "Triple DES Decrypt: DES-EDE3-CTR, Binary",
|
name: "Triple DES Decrypt: DES-EDE3-CTR, Binary",
|
||||||
input: "874d32cd7bdae52c254687e2d7e7093b077af2ec70878f99315f52a21ded5fb10c80a47e6271384335ac47376c758f675484fd7b8be9568aaec643f0d15cffdf3fe54ef3a1b2da50d5d8c7994d7a4a94e0a13a4d437443f0f1f39e93dd13ff06a80c66e4",
|
input: "874d32cd7bdae52c254687e2d7e7093b077af2ec70878f99315f52a21ded5fb10c80a47e6271384335ac47376c758f675484fd7b8be9568aaec643f0d15cffdf3fe54ef3a1b2da50d5d8c7994d7a4a94e0a13a4d437443f0f1f39e93dd13ff06a80c66e4",
|
||||||
expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018",
|
expectedOutput: "7a0e643132750e9625205bc6fb10dc848c53b7cb5a654d1242aecb6191ad3b5114727e5044a0ee11311575873c54829a80f9471ac473a0bbe5e791a23be75062f7e8f2210d998f9fbbaf3a5bb3dacd494d42d82950e3ab273f821eb979168315a80ad20f",
|
||||||
recipeConfig: [
|
recipeConfig: [
|
||||||
{
|
{
|
||||||
"op": "Triple DES Decrypt",
|
"op": "Triple DES Decrypt",
|
||||||
|
|||||||
@@ -247,5 +247,20 @@ TestRegister.addTests([
|
|||||||
args: ["None"]
|
args: ["None"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
/*{ This operation only works in a browser
|
||||||
|
name: "Optical Character Recognition",
|
||||||
|
input: "iVBORw0KGgoAAAANSUhEUgAAAUAAAAC0CAIAAABqhmJGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAASuSURBVHhe7dftVdswAIbRzsVAzMM0XabDUCOUxLYsWW4Jp+/pvf9w9GH76CHw4x2IJWAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAI9p8G/PbyY8rL2686g8t+vnqHTyfgIYfvz/26veTXn/UKX8+f0EU9bHrtu/6KfAN/AwEXAj7lFf2TBFw4nae8on+SgIvJ01n/KLzpDK+L3bT/Ap4O+HC+V12mTH+M3gzcLbIY/EO6HfxYp13k09nb6r3UqcdnjoCL3ll72J26h+35Oxy2XvZ0wOLaXq9v2+F1UC+7RZtMZ/DnfX1lwDOPzwUCLo7O2trtDK8H3M/iqoc6bj1subT68XTA/F7bGJooyzKbhTvLPHY8eJLHlbNX1DqYUVfdXbqwJjsCLsans37aNNJM6w68OR0wv9f9ymKw3k67yn2ZZpHlg3a3zis60s6oV+ZvlzMCLoanc3Dsdt9TdWT/lM8OmNjr5KY72jmzq1zfrbvXtVtmRMDF8HTWcgaaqIrD1U4G/MFewxrW262s5jS/Fzpmdts6mnHy+Fwl4GJ0OjsNrG1P/y7CNo3+gEt7jW56MVprNed7A/5w+n6YJ+BieDpnj/jO6pweTz0acGWvmZveL9XOmd3x6wKuTt8PEwRczLRw4eje1XX7c/cDruw1uuneOu2c4aOvzI57mJhRh1xZlQ0BF+Oz9vcF96fuB1zYa7R2b5mD6/XSwdfg8snj4q21+W/L02dfzIxhQMDFyTm6Hd7m+JYP7rPKT5sRuzhOBywm91rUkYc3fV9ltchtr8VmzuGOdfDB9N1tFYefNfdXLmyGjNZkhoCLUQufVqd/7z7rUcLW/XieDvg0s9difNOdRV5ePibt5vTuazusWbF9rs2E5v4mH58LBFyMW7g5OID7s9cMuTygmt9rcNPb5MrAz0lHc3Z9Ht7XZsxqxO36ZtLR/c0+PpMEzLOc/4LhrwmYZ6lfywJ+JgHzJPr9DgLmi23/zdXvcwmYL7YKWL1PJ2AIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmCI9f7+G6yFxVg/GyYwAAAAAElFTkSuQmCC",
|
||||||
|
expectedOutput: "Tesseract.js\n",
|
||||||
|
recipeConfig: [
|
||||||
|
{
|
||||||
|
"op": "From Base64",
|
||||||
|
"args": ["A-Za-z0-9+/=", true]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"op": "Optical Character Recognition",
|
||||||
|
"args": [false]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}*/
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,6 +51,13 @@ module.exports = {
|
|||||||
new MiniCssExtractPlugin({
|
new MiniCssExtractPlugin({
|
||||||
filename: "assets/[name].css"
|
filename: "assets/[name].css"
|
||||||
}),
|
}),
|
||||||
|
new CopyWebpackPlugin([
|
||||||
|
{
|
||||||
|
context: "src/core/vendor/",
|
||||||
|
from: "tesseract/**/*",
|
||||||
|
to: "assets/"
|
||||||
|
}
|
||||||
|
])
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
Reference in New Issue
Block a user