diff --git a/.gitignore b/.gitignore index 66af2e5..6acdc34 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ dist .DS_Store coverage .vscode +storage/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1a0a798..28b448c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "multer": "^1.4.5-lts.1", "opentimestamps-javascript": "^1.0.1", "pdf-lib": "^1.17.1", + "pdfkit": "^0.13.0", "puppeteer": "^24.5.0", "qrcode": "^1.5.3", "react": "^18.2.0", @@ -2101,6 +2102,15 @@ "win32" ] }, + "node_modules/@swc/helpers": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz", + "integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@tailwindcss/node": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.1.tgz", @@ -3592,7 +3602,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -3833,7 +3842,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -4195,6 +4203,15 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "license": "MIT" }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, "node_modules/browserslist": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", @@ -4390,7 +4407,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -4701,6 +4717,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -4986,6 +5011,12 @@ "node": "*" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, "node_modules/css-box-model": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", @@ -5131,6 +5162,38 @@ "node": ">=0.10.0" } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5142,7 +5205,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -5160,7 +5222,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -5271,6 +5332,12 @@ "integrity": "sha512-yRtvFD8Oyk7C9Os3GmnFZLu53yAfsnyw1s+mLmHHUK0GQEc9zthHWvS1r67Zqzm5t7v56PILHIVZ7kmFMaL2yQ==", "license": "BSD-3-Clause" }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -5566,6 +5633,26 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", @@ -6487,11 +6574,27 @@ } } }, + "node_modules/fontkit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", + "dfa": "^1.2.0", + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -6658,7 +6761,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6929,7 +7031,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6952,7 +7053,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -7198,7 +7298,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -7255,11 +7354,26 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -7303,7 +7417,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -7332,7 +7445,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7355,7 +7467,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7401,7 +7512,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7485,7 +7595,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7508,7 +7617,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7525,7 +7633,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7544,7 +7651,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7557,7 +7663,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -7573,7 +7678,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7590,7 +7694,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7630,7 +7733,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7659,7 +7761,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7676,7 +7777,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -8209,6 +8309,25 @@ "node": ">=10" } }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -8845,11 +8964,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8859,7 +8993,6 @@ "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -9271,6 +9404,18 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "license": "0BSD" }, + "node_modules/pdfkit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.13.0.tgz", + "integrity": "sha512-AW79eHU5eLd2vgRDS9z3bSoi0FA+gYm+100LLosrQQMLUzOBGVOhG7ABcMFpJu7Bpg+MT74XYHi4k9EuU/9EZw==", + "license": "MIT", + "dependencies": { + "crypto-js": "^4.0.0", + "fontkit": "^1.8.1", + "linebreak": "^1.0.2", + "png-js": "^1.0.0" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -9322,6 +9467,11 @@ "node": ">= 6" } }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, "node_modules/pngjs": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", @@ -9335,7 +9485,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10617,7 +10766,6 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -10789,6 +10937,12 @@ "node": ">=4" } }, + "node_modules/restructure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==", + "license": "MIT" + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -10957,7 +11111,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -11075,7 +11228,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -11093,7 +11245,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -11443,6 +11594,19 @@ "node": ">=0.10.0" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -11916,6 +12080,12 @@ "node": ">=0.8" } }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -12273,6 +12443,32 @@ "devOptional": true, "license": "MIT" }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/unload": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", @@ -12606,7 +12802,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -12654,7 +12849,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -12679,7 +12873,6 @@ "version": "1.1.19", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", diff --git a/public/uploads/timbrado-1745360226445-768404918-Timbrado_2025.pdf b/public/uploads/timbrado-1745360226445-768404918-Timbrado_2025.pdf new file mode 100644 index 0000000..5ae6171 Binary files /dev/null and b/public/uploads/timbrado-1745360226445-768404918-Timbrado_2025.pdf differ diff --git a/src/App.tsx b/src/App.tsx index 0fe2d5c..12952e9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -79,6 +79,7 @@ const router = createBrowserRouter( } /> } /> } /> + } /> } /> } /> } /> diff --git a/src/components/layouts/MainLayout.tsx b/src/components/layouts/MainLayout.tsx index 2d9d50a..9c12a6d 100644 --- a/src/components/layouts/MainLayout.tsx +++ b/src/components/layouts/MainLayout.tsx @@ -17,6 +17,7 @@ import { ShieldCheckIcon, CurrencyDollarIcon, CalculatorIcon, + BriefcaseIcon, } from "@heroicons/react/24/outline"; import { Menu, Transition } from "@headlessui/react"; import api from "../../services/api"; @@ -58,8 +59,15 @@ export const MainLayout: React.FC = () => { const menuItems = [ { path: "/dashboard", label: "Dashboard", icon: HomeIcon }, - { path: "/processos", label: "Processos", icon: ScaleIcon }, - { path: "/processos-administrativos", label: "Proc.Adm", icon: ScaleIcon }, + { + path: null, + label: "Processos", + icon: ScaleIcon, + subitems: [ + { path: "/processos", label: "Judiciais", icon: ScaleIcon }, + { path: "/processos-administrativos", label: "Proc. Admin.", icon: DocumentCheckIcon } + ] + }, { path: null, label: "Provas", diff --git a/src/components/provas/PublicProvaStatus.tsx b/src/components/provas/PublicProvaStatus.tsx index 73e7d98..03b88f7 100644 --- a/src/components/provas/PublicProvaStatus.tsx +++ b/src/components/provas/PublicProvaStatus.tsx @@ -21,6 +21,13 @@ interface ProvaStatus { }; ipAddress?: string; clientPort?: string; + locationInfo?: { + latitude?: number; + longitude?: number; + }; + latitude?: number; + longitude?: number; + location_permission?: string; }; } @@ -212,11 +219,28 @@ export function PublicProvaStatus() { {/* Adicionar geolocalização se disponível */} - {(status.metadata?.latitude !== undefined || status.metadata?.longitude !== undefined) && ( + {( + (status.metadata?.latitude !== undefined && status.metadata?.latitude !== null) || + (status.metadata?.longitude !== undefined && status.metadata?.longitude !== null) || + (status.metadata?.locationInfo?.latitude !== undefined && status.metadata?.locationInfo?.latitude !== null) || + (status.metadata?.locationInfo?.longitude !== undefined && status.metadata?.locationInfo?.longitude !== null) + ) && (

Geolocalização

- Coordenadas: {status.metadata.latitude || 'N/A'}, {status.metadata.longitude || 'N/A'} + Coordenadas: { + status.metadata?.latitude !== undefined && status.metadata?.latitude !== null + ? status.metadata.latitude + : status.metadata?.locationInfo?.latitude !== undefined && status.metadata?.locationInfo?.latitude !== null + ? status.metadata.locationInfo.latitude + : 'N/A' + }, { + status.metadata?.longitude !== undefined && status.metadata?.longitude !== null + ? status.metadata.longitude + : status.metadata?.locationInfo?.longitude !== undefined && status.metadata?.locationInfo?.longitude !== null + ? status.metadata.locationInfo.longitude + : 'N/A' + }

Permissão: {status.metadata.location_permission || 'não especificada'} diff --git a/src/components/provas/PublicVerificarProva.tsx b/src/components/provas/PublicVerificarProva.tsx index ff1df55..e270e02 100644 --- a/src/components/provas/PublicVerificarProva.tsx +++ b/src/components/provas/PublicVerificarProva.tsx @@ -161,26 +161,6 @@ export function PublicVerificarProva() { result.prova.dataCriacao)} />

-
-
IP:
-
- {result.verificacao?.ip || - result.prova.metadata?.connectionInfo?.forwardedIp || - (result.prova.metadata?.headers?.['x-forwarded-for'] ? - result.prova.metadata.headers['x-forwarded-for'].split(',')[0].trim() : - result.prova.metadata?.ipAddress) || - 'Não disponível'} -
-
-
-
Porta:
-
- {result.verificacao?.porta || - result.prova.metadata?.clientPort || - result.prova.metadata?.connectionInfo?.socketPort || - 'Não disponível'} -
-
@@ -231,14 +211,21 @@ export function PublicVerificarProva() { } /> - {/* Garantir exibição da porta */} + {/* Garantir exibição da porta capturada no JSON da prova */} { + const ip = result.prova.metadata.userInfo.ipAddress; + const match = typeof ip === 'string' ? ip.match(/:(\d+)$/) : null; + return match ? match[1] : undefined; + })() + ) || + 'Não disponível' + } /> {/* Adicionar família IP */} @@ -278,11 +265,28 @@ export function PublicVerificarProva() { /> )} - {/* Exibir geolocalização se disponível */} - {(result.prova.metadata.latitude !== undefined || result.prova.metadata.longitude !== undefined) && ( + {/* Exibir geolocalização capturada na prova */} + {( + (result.prova.metadata?.latitude !== undefined && result.prova.metadata?.latitude !== null) || + (result.prova.metadata?.longitude !== undefined && result.prova.metadata?.longitude !== null) || + (result.prova.metadata?.locationInfo?.latitude !== undefined && result.prova.metadata?.locationInfo?.latitude !== null) || + (result.prova.metadata?.locationInfo?.longitude !== undefined && result.prova.metadata?.locationInfo?.longitude !== null) + ) && ( )} diff --git a/src/components/provas/VerificarProva.tsx b/src/components/provas/VerificarProva.tsx index 735d69d..3c8045f 100644 --- a/src/components/provas/VerificarProva.tsx +++ b/src/components/provas/VerificarProva.tsx @@ -220,7 +220,10 @@ export const VerificarProva: React.FC = () => { Porta: - {prova.verificacao?.porta || prova.prova?.metadata?.clientPort || 'Não disponível'} + {prova.prova?.metadata?.clientPort || + prova.prova?.metadata?.connectionInfo?.socketPort || + prova.prova?.metadata?.userInfo?.ipAddress?.split(':')[1] || + 'Não disponível'} diff --git a/src/server/routes/provas.ts b/src/server/routes/provas.ts index 1d649e9..ce8f7ae 100644 --- a/src/server/routes/provas.ts +++ b/src/server/routes/provas.ts @@ -29,14 +29,14 @@ router.post('/upload', upload.array('files'), async (req, res) => { // Metadata avançada seguindo RFC 3227 // Corrigir: priorizar latitude/longitude do frontend se vierem preenchidas - let latitude = undefined; - let longitude = undefined; + let latitude: number | undefined = undefined; + let longitude: number | undefined = undefined; if ( - req.body.latitude !== undefined && req.body.latitude !== null && req.body.latitude !== '' && - req.body.longitude !== undefined && req.body.longitude !== null && req.body.longitude !== '' + typeof req.body.latitude !== 'undefined' && req.body.latitude !== null && req.body.latitude !== '' && + typeof req.body.longitude !== 'undefined' && req.body.longitude !== null && req.body.longitude !== '' ) { - latitude = parseFloat(req.body.latitude); - longitude = parseFloat(req.body.longitude); + latitude = Number(req.body.latitude); + longitude = Number(req.body.longitude); } const metadata = { diff --git a/src/server/services/ReportGenerator.ts b/src/server/services/ReportGenerator.ts index 11833f2..1fd1e87 100644 --- a/src/server/services/ReportGenerator.ts +++ b/src/server/services/ReportGenerator.ts @@ -606,9 +606,19 @@ export class ReportGenerator { y -= 15; // RESTAURAR GEOLOCALIZAÇÃO - CORRIGIDA PARA EVITAR N/A - const latitude = typeof data.metadata?.latitude !== 'undefined' ? data.metadata.latitude : '-7.2035066'; - const longitude = typeof data.metadata?.longitude !== 'undefined' ? data.metadata.longitude : '-48.2111972'; - + // Busca latitude/longitude tanto na raiz quanto em locationInfo + let latitude = 'N/A'; + let longitude = 'N/A'; + if (typeof data.metadata?.latitude !== 'undefined' && data.metadata?.latitude !== null) { + latitude = String(data.metadata.latitude); + } else if (typeof data.metadata?.locationInfo?.latitude !== 'undefined' && data.metadata?.locationInfo?.latitude !== null) { + latitude = String(data.metadata.locationInfo.latitude); + } + if (typeof data.metadata?.longitude !== 'undefined' && data.metadata?.longitude !== null) { + longitude = String(data.metadata.longitude); + } else if (typeof data.metadata?.locationInfo?.longitude !== 'undefined' && data.metadata?.locationInfo?.longitude !== null) { + longitude = String(data.metadata.locationInfo.longitude); + } this.drawLabelValue(page, "Coordenadas:", `${latitude}, ${longitude}`, y, helvetica, helveticaBold); y -= 15; diff --git a/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0.timestamp.json b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0.timestamp.json new file mode 100644 index 0000000..b56042d --- /dev/null +++ b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0.timestamp.json @@ -0,0 +1,6 @@ +{ + "hash": "5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0", + "timestamp": "2025-04-22T22:32:04.863Z", + "ntpReference": "Acompanhando time.nist.gov [132.163.97.4:123].\nColetando 1 amostras.\nA hora atual � 22/04/2025 19:32:04.\n19:32:04, Erro: 0x800705B4\n", + "unixTimestamp": 1745361124 +} \ No newline at end of file diff --git a/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_forensic.json b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_forensic.json new file mode 100644 index 0000000..464a842 --- /dev/null +++ b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_forensic.json @@ -0,0 +1,71 @@ +{ + "timestamp": "2025-04-22T22:32:07.355Z", + "fileName": "solicitação.jpg", + "fileSize": 79952, + "mimeType": "image/jpeg", + "checksums": { + "sha256": "5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0", + "sha512": "aac8920361b942a02a79c56503e36f98a0624f16e6e17023338358752ec5fdd35d2bbc3ef69bbd53723af2edac95c76ce40a897c6a59ac2cc8e0774c9b649cbb", + "md5": "53ef086077fa170f4154f555ccf9545f" + }, + "metadata": { + "collectionId": "e73e9767-1ac7-493a-8247-d54aeb5e2379", + "collectionTimestamp": "2025-04-22T22:32:04.840Z", + "userInfo": { + "ipAddress": "::1:55009", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36", + "language": "pt-BR", + "browser": { + "name": "Chrome", + "version": "135.0.0.0", + "major": "135" + }, + "engine": { + "name": "Blink", + "version": "135.0.0.0" + }, + "os": { + "name": "Windows", + "version": "10" + }, + "device": { + "vendor": "desconhecido", + "model": "desconhecido", + "type": "desconhecido" + }, + "cpu": { + "architecture": "amd64" + }, + "viewportSize": "1150x695", + "referrer": "não informado" + }, + "fileInfo": { + "name": "solicitação.jpg", + "size": 79952, + "sizeFormatted": "78.08 KB", + "modifiedDate": "2025-04-08T18:55:21.595Z" + }, + "locationInfo": { + "latitude": -7.2045208, + "longitude": -48.2294113, + "city": "não disponível", + "region": "não disponível", + "country": "não disponível", + "timezone": "não disponível" + }, + "timestamp": "2025-04-22T22:32:04.831Z", + "integrityHash": "2faf0e219dda1105b713b1e220cf4b89b5c26bb75e700d417f1f397c8685d8b4" + }, + "processingInfo": { + "processingNode": "RODRIGO", + "processingUser": "rodri", + "processingTimestamp": "2025-04-22T22:32:07.360Z", + "systemInfo": { + "platform": "win32", + "release": "10.0.26100", + "cpus": 4, + "memory": "20GB", + "uptime": "11h" + } + } +} \ No newline at end of file diff --git a/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_original b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_original new file mode 100644 index 0000000..b251be1 Binary files /dev/null and b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_original differ diff --git a/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_report.pdf b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_report.pdf new file mode 100644 index 0000000..ca00e7e Binary files /dev/null and b/storage/provas/5e87cdeee62ec3e659704f86b359862f4d6ab3764de6d2490ffbdf4560c6faa0_report.pdf differ diff --git a/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f.timestamp.json b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f.timestamp.json new file mode 100644 index 0000000..48ad068 --- /dev/null +++ b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f.timestamp.json @@ -0,0 +1,6 @@ +{ + "hash": "a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f", + "timestamp": "2025-04-22T22:20:25.521Z", + "ntpReference": "Acompanhando time.nist.gov [129.6.15.26:123].\nColetando 1 amostras.\nA hora atual � 22/04/2025 19:20:25.\n19:20:25, Erro: 0x800705B4\n", + "unixTimestamp": 1745360425 +} \ No newline at end of file diff --git a/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_forensic.json b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_forensic.json new file mode 100644 index 0000000..5951083 --- /dev/null +++ b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_forensic.json @@ -0,0 +1,71 @@ +{ + "timestamp": "2025-04-22T22:20:27.452Z", + "fileName": "WhatsApp Image 2025-04-10 at 17.34.45.jpeg", + "fileSize": 199339, + "mimeType": "image/jpeg", + "checksums": { + "sha256": "a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f", + "sha512": "fcafa2baf00a9a123e797d364d8010c5d45a58ca3dd5612cfa4032539762fdf0b014cfd11bc3655e18c6eade3a38d01149cce4cae6a6dffe486af407c6a0eea8", + "md5": "78581f0292ca27ea3066998009018e38" + }, + "metadata": { + "collectionId": "7bbe3133-8616-478d-8fab-bc29deab2351", + "collectionTimestamp": "2025-04-22T22:20:25.506Z", + "userInfo": { + "ipAddress": "::1:54423", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36", + "language": "pt-BR", + "browser": { + "name": "Chrome", + "version": "135.0.0.0", + "major": "135" + }, + "engine": { + "name": "Blink", + "version": "135.0.0.0" + }, + "os": { + "name": "Windows", + "version": "10" + }, + "device": { + "vendor": "desconhecido", + "model": "desconhecido", + "type": "desconhecido" + }, + "cpu": { + "architecture": "amd64" + }, + "viewportSize": "1150x695", + "referrer": "não informado" + }, + "fileInfo": { + "name": "WhatsApp Image 2025-04-10 at 17.34.45.jpeg", + "size": 199339, + "sizeFormatted": "194.67 KB", + "modifiedDate": "2025-04-11T00:02:14.553Z" + }, + "locationInfo": { + "latitude": -7.2045208, + "longitude": -48.2294113, + "city": "não disponível", + "region": "não disponível", + "country": "não disponível", + "timezone": "não disponível" + }, + "timestamp": "2025-04-22T22:20:25.494Z", + "integrityHash": "7ef6d0611c893f56912d613b5e0f60a603c3e2ddeb0e2c2ddafb9b49a49a4878" + }, + "processingInfo": { + "processingNode": "RODRIGO", + "processingUser": "rodri", + "processingTimestamp": "2025-04-22T22:20:27.452Z", + "systemInfo": { + "platform": "win32", + "release": "10.0.26100", + "cpus": 4, + "memory": "20GB", + "uptime": "11h" + } + } +} \ No newline at end of file diff --git a/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_original b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_original new file mode 100644 index 0000000..ccabb24 Binary files /dev/null and b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_original differ diff --git a/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_report.pdf b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_report.pdf new file mode 100644 index 0000000..5eaf4bf Binary files /dev/null and b/storage/provas/a97fe62052f746e17a48e6c3db29bcb3cd30d6457222d272ba1a83691024070f_report.pdf differ diff --git a/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864.timestamp.json b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864.timestamp.json new file mode 100644 index 0000000..6503f53 --- /dev/null +++ b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864.timestamp.json @@ -0,0 +1,6 @@ +{ + "hash": "daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864", + "timestamp": "2025-04-22T22:33:58.785Z", + "ntpReference": "Acompanhando time.nist.gov [132.163.97.2:123].\nColetando 1 amostras.\nA hora atual � 22/04/2025 19:33:58.\n19:33:58, Erro: 0x800705B4\n", + "unixTimestamp": 1745361238 +} \ No newline at end of file diff --git a/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_forensic.json b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_forensic.json new file mode 100644 index 0000000..f9d124c --- /dev/null +++ b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_forensic.json @@ -0,0 +1,71 @@ +{ + "timestamp": "2025-04-22T22:34:00.953Z", + "fileName": "WhatsApp Image 2025-04-10 at 17.33.40 (3).jpeg", + "fileSize": 165323, + "mimeType": "image/jpeg", + "checksums": { + "sha256": "daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864", + "sha512": "d9eff17b23fa3e4b5314197838a7d6531b0940d96d184982283da1e01812cfa13417737a1760bb72fab2f10f0c6919885cb3738b3286263a2c1797efc2ce5365", + "md5": "4f0f85e5503e45cb7a7f3990991dc515" + }, + "metadata": { + "collectionId": "4ba82667-b08d-46a6-9713-e0c664b3af6f", + "collectionTimestamp": "2025-04-22T22:33:58.755Z", + "userInfo": { + "ipAddress": "::1:55140", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36", + "language": "pt-BR", + "browser": { + "name": "Chrome", + "version": "135.0.0.0", + "major": "135" + }, + "engine": { + "name": "Blink", + "version": "135.0.0.0" + }, + "os": { + "name": "Windows", + "version": "10" + }, + "device": { + "vendor": "desconhecido", + "model": "desconhecido", + "type": "desconhecido" + }, + "cpu": { + "architecture": "amd64" + }, + "viewportSize": "1150x695", + "referrer": "não informado" + }, + "fileInfo": { + "name": "WhatsApp Image 2025-04-10 at 17.33.40 (3).jpeg", + "size": 165323, + "sizeFormatted": "161.45 KB", + "modifiedDate": "2025-04-11T00:02:10.578Z" + }, + "locationInfo": { + "latitude": -7.2045208, + "longitude": -48.2294113, + "city": "não disponível", + "region": "não disponível", + "country": "não disponível", + "timezone": "não disponível" + }, + "timestamp": "2025-04-22T22:33:58.722Z", + "integrityHash": "ea7631b891db898d4b082e0f3b9ca839c074424cc39ac3d5963e8ac3b4e5b790" + }, + "processingInfo": { + "processingNode": "RODRIGO", + "processingUser": "rodri", + "processingTimestamp": "2025-04-22T22:34:00.954Z", + "systemInfo": { + "platform": "win32", + "release": "10.0.26100", + "cpus": 4, + "memory": "20GB", + "uptime": "11h" + } + } +} \ No newline at end of file diff --git a/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_original b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_original new file mode 100644 index 0000000..1f35b64 Binary files /dev/null and b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_original differ diff --git a/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_report.pdf b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_report.pdf new file mode 100644 index 0000000..cb3bdbf Binary files /dev/null and b/storage/provas/daea8251005113c549873cb271c3cedd345f36a5289dafcf76ac4a9664291864_report.pdf differ diff --git a/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4.timestamp.json b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4.timestamp.json new file mode 100644 index 0000000..65fb2ae --- /dev/null +++ b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4.timestamp.json @@ -0,0 +1,6 @@ +{ + "hash": "e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4", + "timestamp": "2025-04-22T22:22:48.274Z", + "ntpReference": "Acompanhando time.nist.gov [129.6.15.26:123].\nColetando 1 amostras.\nA hora atual � 22/04/2025 19:22:48.\n19:22:48, Erro: 0x800705B4\n", + "unixTimestamp": 1745360568 +} \ No newline at end of file diff --git a/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_forensic.json b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_forensic.json new file mode 100644 index 0000000..72ef0df --- /dev/null +++ b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_forensic.json @@ -0,0 +1,71 @@ +{ + "timestamp": "2025-04-22T22:22:50.477Z", + "fileName": "Trabalhador_Rural_Idoso_Prestes_a_se_Aposentar.jpg", + "fileSize": 1721153, + "mimeType": "image/jpeg", + "checksums": { + "sha256": "e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4", + "sha512": "8b4526086e7cf7f1ec3056aace8c03dd6c74dad91ba2b521910e5dcd65a15064bd9e1f5272b48de09ccf05383c0ce6bcf6bc34717e823a0c544eb725484b3646", + "md5": "e6c1c696bc8e6dc5cc67bdf42caa149d" + }, + "metadata": { + "collectionId": "c26103a3-e80f-4902-a20f-e4f24a7053e8", + "collectionTimestamp": "2025-04-22T22:22:48.225Z", + "userInfo": { + "ipAddress": "::1:54550", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36", + "language": "pt-BR", + "browser": { + "name": "Chrome", + "version": "135.0.0.0", + "major": "135" + }, + "engine": { + "name": "Blink", + "version": "135.0.0.0" + }, + "os": { + "name": "Windows", + "version": "10" + }, + "device": { + "vendor": "desconhecido", + "model": "desconhecido", + "type": "desconhecido" + }, + "cpu": { + "architecture": "amd64" + }, + "viewportSize": "1150x695", + "referrer": "não informado" + }, + "fileInfo": { + "name": "Trabalhador_Rural_Idoso_Prestes_a_se_Aposentar.jpg", + "size": 1721153, + "sizeFormatted": "1.64 MB", + "modifiedDate": "2025-04-11T01:08:13.364Z" + }, + "locationInfo": { + "latitude": -7.2045208, + "longitude": -48.2294113, + "city": "não disponível", + "region": "não disponível", + "country": "não disponível", + "timezone": "não disponível" + }, + "timestamp": "2025-04-22T22:22:48.213Z", + "integrityHash": "b99c926d06a10f7b4c0c6955073b145f5ca6494f0e356d8264dfcdbff1bca1b5" + }, + "processingInfo": { + "processingNode": "RODRIGO", + "processingUser": "rodri", + "processingTimestamp": "2025-04-22T22:22:50.477Z", + "systemInfo": { + "platform": "win32", + "release": "10.0.26100", + "cpus": 4, + "memory": "20GB", + "uptime": "11h" + } + } +} \ No newline at end of file diff --git a/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_original b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_original new file mode 100644 index 0000000..7c447ba Binary files /dev/null and b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_original differ diff --git a/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_report.pdf b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_report.pdf new file mode 100644 index 0000000..d797707 Binary files /dev/null and b/storage/provas/e64cd45d0423541166f6cef318bbe8a6c34df8aafc03a10fb0390e72daa732c4_report.pdf differ