@jjlmoya/utils-forensic-science 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +63 -59
  3. package/src/category/seo.astro +1 -1
  4. package/src/components/PreviewNavSidebar.astro +1 -1
  5. package/src/components/PreviewToolbar.astro +1 -1
  6. package/src/data.ts +1 -1
  7. package/src/entries.ts +74 -68
  8. package/src/env.d.ts +1 -1
  9. package/src/index.ts +33 -31
  10. package/src/pages/[locale]/[slug].astro +161 -159
  11. package/src/pages/[locale].astro +8 -5
  12. package/src/pages/index.astro +1 -1
  13. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  14. package/src/tests/diacritics_density.test.ts +1 -1
  15. package/src/tests/faq_count.test.ts +19 -19
  16. package/src/tests/i18n_coverage.test.ts +36 -36
  17. package/src/tests/inverted_punctuation.test.ts +1 -1
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/mocks/astro_mock.js +1 -1
  20. package/src/tests/no_h1_in_components.test.ts +1 -1
  21. package/src/tests/script_density.test.ts +94 -94
  22. package/src/tests/seo_length.test.ts +46 -46
  23. package/src/tests/seo_parity.test.ts +2 -7
  24. package/src/tests/seo_translation_completeness.test.ts +68 -0
  25. package/src/tests/seo_wellformed_export.test.ts +65 -0
  26. package/src/tests/tool_validation.test.ts +2 -2
  27. package/src/tests/translation_copy.test.ts +23 -24
  28. package/src/tool/bloodstain-pattern-origin-analyzer/component.astro +9 -9
  29. package/src/tool/bloodstain-pattern-origin-analyzer/i18n/zh.ts +1 -1
  30. package/src/tool/dna-profile-match-probability-lab/bibliography.astro +14 -0
  31. package/src/tool/dna-profile-match-probability-lab/bibliography.ts +16 -0
  32. package/src/tool/dna-profile-match-probability-lab/component.astro +121 -0
  33. package/src/tool/dna-profile-match-probability-lab/controller.ts +159 -0
  34. package/src/tool/dna-profile-match-probability-lab/dna-profile-match-probability-lab.css +485 -0
  35. package/src/tool/dna-profile-match-probability-lab/dom-views.ts +93 -0
  36. package/src/tool/dna-profile-match-probability-lab/entry.ts +29 -0
  37. package/src/tool/dna-profile-match-probability-lab/evaluator.ts +19 -0
  38. package/src/tool/dna-profile-match-probability-lab/i18n/de.ts +43 -0
  39. package/src/tool/dna-profile-match-probability-lab/i18n/en.ts +196 -0
  40. package/src/tool/dna-profile-match-probability-lab/i18n/es.ts +40 -0
  41. package/src/tool/dna-profile-match-probability-lab/i18n/fr.ts +10 -0
  42. package/src/tool/dna-profile-match-probability-lab/i18n/id.ts +41 -0
  43. package/src/tool/dna-profile-match-probability-lab/i18n/it.ts +10 -0
  44. package/src/tool/dna-profile-match-probability-lab/i18n/ja.ts +40 -0
  45. package/src/tool/dna-profile-match-probability-lab/i18n/ko.ts +40 -0
  46. package/src/tool/dna-profile-match-probability-lab/i18n/nl.ts +29 -0
  47. package/src/tool/dna-profile-match-probability-lab/i18n/pl.ts +10 -0
  48. package/src/tool/dna-profile-match-probability-lab/i18n/pt.ts +41 -0
  49. package/src/tool/dna-profile-match-probability-lab/i18n/ru.ts +29 -0
  50. package/src/tool/dna-profile-match-probability-lab/i18n/sv.ts +41 -0
  51. package/src/tool/dna-profile-match-probability-lab/i18n/tr.ts +10 -0
  52. package/src/tool/dna-profile-match-probability-lab/i18n/zh.ts +29 -0
  53. package/src/tool/dna-profile-match-probability-lab/index.ts +11 -0
  54. package/src/tool/dna-profile-match-probability-lab/localize.ts +107 -0
  55. package/src/tool/dna-profile-match-probability-lab/logic.test.ts +56 -0
  56. package/src/tool/dna-profile-match-probability-lab/logic.ts +139 -0
  57. package/src/tool/dna-profile-match-probability-lab/seo.astro +15 -0
  58. package/src/tool/dna-profile-match-probability-lab/storage.ts +26 -0
  59. package/src/tool/dna-profile-match-probability-lab/ui.ts +3 -0
  60. package/src/tool/fire-pattern-origin-analyzer/component.astro +1 -1
  61. package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +5 -1
  62. package/src/tool/fire-pattern-origin-analyzer/logic.ts +9 -2
  63. package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +8 -4
  64. package/src/tool/fire-pattern-origin-analyzer/view-model.ts +6 -2
  65. package/src/tool/forensic-age-estimator/bibliography.astro +1 -1
  66. package/src/tool/forensic-age-estimator/component.astro +1 -1
  67. package/src/tool/forensic-age-estimator/entry.ts +17 -17
  68. package/src/tool/forensic-age-estimator/i18n/de.ts +244 -244
  69. package/src/tool/forensic-age-estimator/i18n/en.ts +244 -244
  70. package/src/tool/forensic-age-estimator/i18n/es.ts +244 -244
  71. package/src/tool/forensic-age-estimator/i18n/fr.ts +244 -244
  72. package/src/tool/forensic-age-estimator/i18n/id.ts +244 -244
  73. package/src/tool/forensic-age-estimator/i18n/it.ts +244 -244
  74. package/src/tool/forensic-age-estimator/i18n/nl.ts +244 -244
  75. package/src/tool/forensic-age-estimator/i18n/pl.ts +244 -244
  76. package/src/tool/forensic-age-estimator/i18n/pt.ts +244 -244
  77. package/src/tool/forensic-age-estimator/i18n/ru.ts +244 -244
  78. package/src/tool/forensic-age-estimator/i18n/sv.ts +244 -244
  79. package/src/tool/forensic-age-estimator/i18n/tr.ts +244 -244
  80. package/src/tool/forensic-age-estimator/i18n/zh.ts +245 -245
  81. package/src/tool/forensic-age-estimator/index.ts +1 -1
  82. package/src/tool/forensic-age-estimator/seo.astro +1 -1
  83. package/src/tool/forensic-blood-test-simulator/component.astro +1 -1
  84. package/src/tool/forensic-fiber-comparison-microscope/component.astro +1 -1
  85. package/src/tool/forensic-fiber-comparison-microscope/render.ts +1 -1
  86. package/src/tool/forensic-fiber-comparison-microscope/view.ts +1 -1
  87. package/src/tool/forensic-fingerprint-minutiae-identifier/component.astro +2 -2
  88. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/ja.ts +2 -1
  89. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/zh.ts +2 -0
  90. package/src/tool/forensic-fingerprint-minutiae-identifier/renderer.ts +9 -8
  91. package/src/tool/forensic-glass-becke-line-simulator/component.astro +1 -1
  92. package/src/tool/forensic-glass-becke-line-simulator/view.ts +8 -6
  93. package/src/tool/forensic-image-authenticity-analyzer/component.astro +1 -1
  94. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -105
  95. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -105
  96. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -105
  97. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -105
  98. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +95 -90
  99. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -105
  100. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +7 -2
  101. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +4 -1
  102. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +95 -92
  103. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +95 -92
  104. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -105
  105. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +97 -92
  106. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +97 -93
  107. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +98 -93
  108. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +11 -0
  109. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +1 -1
  110. package/src/tool/forensic-sex-determinator/component.astro +3 -2
  111. package/src/tool/forensic-stature-estimator/component.astro +1 -1
  112. package/src/tool/forensic-stature-estimator/i18n/id.ts +4 -0
  113. package/src/tool/forensic-stature-estimator/i18n/nl.ts +4 -0
  114. package/src/tool/forensic-stature-estimator/i18n/ru.ts +4 -0
  115. package/src/tool/forensic-tlc-ink-simulator/component.astro +1 -1
  116. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +1 -0
  117. package/src/tool/forensic-toolmark-striation-matcher/component.astro +1 -1
  118. package/src/tool/forensic-toolmark-striation-matcher/logic.ts +1 -1
  119. package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +7 -6
  120. package/src/tool/forensic-toolmark-striation-matcher/view.ts +19 -20
  121. package/src/tool/gsr-dispersion-calculator/component.astro +1 -1
  122. package/src/tool/gsr-dispersion-calculator/logic.ts +1 -1
  123. package/src/tool/time-of-death-algor-mortis-calculator/entry.ts +2 -0
  124. package/src/tool/voice-spectrogram-analyzer/audio-runtime.ts +75 -0
  125. package/src/tool/voice-spectrogram-analyzer/bibliography.astro +14 -0
  126. package/src/tool/voice-spectrogram-analyzer/bibliography.ts +16 -0
  127. package/src/tool/voice-spectrogram-analyzer/component.astro +116 -0
  128. package/src/tool/voice-spectrogram-analyzer/controller.ts +219 -0
  129. package/src/tool/voice-spectrogram-analyzer/dom-views.ts +204 -0
  130. package/src/tool/voice-spectrogram-analyzer/entry.ts +31 -0
  131. package/src/tool/voice-spectrogram-analyzer/evaluator.ts +13 -0
  132. package/src/tool/voice-spectrogram-analyzer/fft.ts +64 -0
  133. package/src/tool/voice-spectrogram-analyzer/i18n/de.ts +135 -0
  134. package/src/tool/voice-spectrogram-analyzer/i18n/en.ts +122 -0
  135. package/src/tool/voice-spectrogram-analyzer/i18n/es.ts +122 -0
  136. package/src/tool/voice-spectrogram-analyzer/i18n/fr.ts +135 -0
  137. package/src/tool/voice-spectrogram-analyzer/i18n/id.ts +136 -0
  138. package/src/tool/voice-spectrogram-analyzer/i18n/it.ts +135 -0
  139. package/src/tool/voice-spectrogram-analyzer/i18n/ja.ts +135 -0
  140. package/src/tool/voice-spectrogram-analyzer/i18n/ko.ts +135 -0
  141. package/src/tool/voice-spectrogram-analyzer/i18n/nl.ts +136 -0
  142. package/src/tool/voice-spectrogram-analyzer/i18n/pl.ts +136 -0
  143. package/src/tool/voice-spectrogram-analyzer/i18n/pt.ts +135 -0
  144. package/src/tool/voice-spectrogram-analyzer/i18n/ru.ts +136 -0
  145. package/src/tool/voice-spectrogram-analyzer/i18n/sv.ts +136 -0
  146. package/src/tool/voice-spectrogram-analyzer/i18n/tr.ts +136 -0
  147. package/src/tool/voice-spectrogram-analyzer/i18n/zh.ts +135 -0
  148. package/src/tool/voice-spectrogram-analyzer/index.ts +11 -0
  149. package/src/tool/voice-spectrogram-analyzer/logic.test.ts +46 -0
  150. package/src/tool/voice-spectrogram-analyzer/logic.ts +163 -0
  151. package/src/tool/voice-spectrogram-analyzer/seo.astro +15 -0
  152. package/src/tool/voice-spectrogram-analyzer/storage.ts +33 -0
  153. package/src/tool/voice-spectrogram-analyzer/ui.ts +49 -0
  154. package/src/tool/voice-spectrogram-analyzer/voice-spectrogram-analyzer.css +547 -0
  155. package/src/tool/widmark-alcohol-simulator/component.astro +1 -1
  156. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +5 -0
  157. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +2 -1
  158. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +1 -0
  159. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +4 -1
  160. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +4 -1
  161. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +5 -1
  162. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +5 -1
  163. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +5 -1
  164. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +4 -1
  165. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +5 -1
  166. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +4 -1
  167. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +4 -1
  168. package/src/tools.ts +39 -35
  169. package/src/types.ts +4 -4
@@ -1,105 +1,105 @@
1
- import { bibliography } from '../bibliography';
2
- import type { ToolLocaleContent } from '../../../types';
3
-
4
- const slug = 'analyseur-medico-legal-metadonnees-authenticite-image';
5
- const title = 'Analyseur Médicolégal des Métadonnées et de l\'Authenticité des Images';
6
- const description = 'Inspectez les en-têtes d\'image, les détails EXIF de prise de vue, les coordonnées GPS, les signatures de logiciels d\'édition et les octets bruts localement dans votre navigateur.';
7
-
8
- const howTo = [
9
- { name: 'Préserver la preuve originale', text: 'Travaillez à partir d\'une copie médico-légale et conservez le fichier source ainsi que son hash cryptographique en dehors de cet outil navigateur.' },
10
- { name: 'Charger une image localement', text: 'Glissez-déposez ou sélectionnez un JPEG ou un PNG. Le fichier est lu dans la mémoire du navigateur et n\'est pas téléversé.' },
11
- { name: 'Examiner les métadonnées et la localisation', text: 'Comparez l\'heure de capture, l\'identité de l\'appareil, le logiciel et les champs GPS avec le récit du dossier et les registres d\'acquisition.' },
12
- { name: 'Interpréter les signaux d\'intégrité', text: 'Considérez les signatures d\'édition et les champs manquants comme des pistes d\'enquête, pas comme une preuve de manipulation.' },
13
- { name: 'Examiner l\'aperçu hexadécimal', text: 'Utilisez les zones mises en évidence de l\'en-tête et des métadonnées pour identifier la structure du conteneur et documenter les offsets pour une analyse plus approfondie.' },
14
- ];
15
-
16
- const faq = [
17
- { question: 'Les métadonnées peuvent-elles prouver qu\'une photo est authentique ?', answer: 'Non. Les métadonnées peuvent être supprimées, copiées ou modifiées. L\'authentification exige de combiner la structure du fichier, la provenance, les hashes, l\'examen visuel, l\'analyse de compression et des méthodes médico-légales validées.' },
18
- { question: 'Une signature Adobe ou GIMP prouve-t-elle une retouche malveillante ?', answer: 'Non. Elle indique qu\'un logiciel a pu écrire les métadonnées ou exporter le fichier. Une correction colorimétrique légitime, un flux éditorial ou la préparation d\'éléments de preuve peuvent produire la même signature.' },
19
- { question: 'L\'image est-elle téléversée ?', answer: 'Non. L\'analyse s\'effectue dans la mémoire du navigateur. Respectez néanmoins la politique de traitement des preuves de votre organisation avant d\'ouvrir un document sensible dans un logiciel quelconque.' },
20
- { question: 'Pourquoi les données GPS peuvent-elles être absentes ?', answer: 'L\'appareil peut ne pas prendre en charge le GPS, l\'enregistrement de la position a pu être désactivé, une plateforme a pu supprimer les métadonnées, ou le fichier a pu être réencodé.' },
21
- ];
22
-
23
- export const content: ToolLocaleContent = {
24
- slug,
25
- title,
26
- description,
27
- ui: {
28
- privacy: 'Examen binaire local uniquement',
29
- dropTitle: 'Déposez une image sur la table de preuve',
30
- dropHint: 'Déposez ici un JPEG ou un PNG, ou choisissez un fichier. Rien n\'est téléversé.',
31
- chooseFile: 'Choisir une image',
32
- replaceFile: 'Remplacer l\'image',
33
- waiting: 'En attente d\'une pièce',
34
- metadata: 'Métadonnées de capture',
35
- integrity: 'Signaux d\'intégrité',
36
- location: 'Localisation enregistrée',
37
- hex: 'Fenêtre de preuve hexadécimale',
38
- hexHint: '512 premiers octets · en-tête cyan · métadonnées ambre · données image neutres',
39
- noData: 'Aucune valeur lisible',
40
- noGps: 'Aucune coordonnée GPS lisible n\'a été trouvée.',
41
- mapLink: 'Ouvrir les coordonnées dans OpenStreetMap',
42
- score: 'Confiance heuristique',
43
- disclaimer: 'Un score élevé n\'établit pas l\'authenticité. Conservez l\'original, calculez des hashes cryptographiques et utilisez des workflows de laboratoire validés pour les conclusions du dossier.',
44
- fileName: 'Fichier',
45
- fileSize: 'Taille',
46
- fileType: 'Conteneur',
47
- camera: 'Appareil',
48
- captured: 'Capturé',
49
- software: 'Logiciel',
50
- coordinates: 'Coordonnées',
51
- statusNoObvious: 'Aucun indice évident de retouche',
52
- statusReview: 'Révision recommandée',
53
- statusEditing: 'Signature d\'édition détectée',
54
- processing: 'Lecture des preuves binaires...',
55
- loadError: 'Le fichier n\'a pas pu être analysé. Sélectionnez une image JPEG ou PNG valide.',
56
- },
57
- seo: [
58
- { type: 'title', text: 'Comment analyser les métadonnées d\'image et les indices d\'authenticité', level: 2 },
59
- { type: 'paragraph', html: 'Un analyseur médico-légal de métadonnées d\'image aide les enquêteurs, journalistes, juristes, équipes conformité et experts à répondre à une question à forte intention: <strong>que peuvent réellement révéler les métadonnées d\'une photographie ?</strong> Les métadonnées peuvent fournir des indices utiles sur la capture, la localisation, le traitement logiciel et la structure du fichier, mais elles ne constituent pas une machine autonome à dire le vrai. Leur principale valeur réside dans le triage. Elles permettent d\'identifier les fichiers qui méritent un examen plus approfondi, les détails qui soutiennent l\'histoire revendiquée de l\'image et les contradictions qui nécessitent un suivi avant toute conclusion forte sur l\'authenticité.' },
60
- { type: 'paragraph', html: 'Cet outil navigateur s\'adresse aux utilisateurs qui veulent plus qu\'un simple dump EXIF brut. Il lit localement le JPEG ou le PNG sélectionné et réunit en un seul endroit les champs de l\'appareil, les horodatages de capture, les étiquettes logicielles, les coordonnées, les indices de conteneur et les premiers octets du fichier. Il répond ainsi à des intentions de recherche fréquentes derrière des requêtes comme <em>vérifier l\'authenticité d\'une photo</em>, <em>analyser les métadonnées EXIF</em>, <em>comment savoir si une image a été retouchée</em> ou <em>comment vérifier les métadonnées GPS d\'une image</em>. Les utilisateurs qui formulent ces recherches veulent généralement à la fois des éléments factuels et de l\'interprétation.' },
61
- { type: 'paragraph', html: 'Le principe essentiel est que le résultat doit être lu comme du contexte, pas comme un verdict. Un fichier peut contenir des métadonnées utiles et rester trompeur. Il peut contenir peu ou pas de métadonnées et demeurer authentique. Une signature logicielle peut indiquer un comportement normal d\'export plutôt qu\'une manipulation trompeuse. Une bonne pratique médico-légale traite donc les métadonnées comme une couche de preuve à comparer avec la provenance, les hashes, les témoignages, l\'historique de l\'appareil et des méthodes d\'examen validées.' },
62
- { type: 'title', text: 'Ce que l\'EXIF peut dire et ne peut pas dire', level: 3 },
63
- { type: 'paragraph', html: 'EXIF est une structure de métadonnées fondée sur TIFF couramment intégrée aux images JPEG. Elle peut enregistrer l\'appareil de prise de vue, la date et l\'heure originales, l\'orientation, les paramètres d\'exposition et la position GPS. Lorsque ces champs sont cohérents entre eux et compatibles avec les circonstances connues de l\'affaire, ils peuvent soutenir une chronologie ou une origine proposées. Lorsqu\'ils contredisent l\'histoire annoncée de l\'image, ils orientent l\'examinateur vers des questions précises.' },
64
- { type: 'paragraph', html: 'L\'une des plus grandes idées reçues derrière les recherches sur les métadonnées d\'image consiste à croire que l\'EXIF est fiable par défaut. Ce n\'est pas le cas. Les métadonnées peuvent être modifiées, copiées entre fichiers, supprimées par les réseaux sociaux, altérées lors de l\'export, normalisées par des plateformes cloud ou partiellement endommagées par réencodage. La bonne question n\'est donc pas seulement de savoir si des métadonnées existent, mais si elles sont techniquement cohérentes, contextuellement plausibles et corroborées par des éléments indépendants.' },
65
- { type: 'table', headers: ['Observation', 'Sens possible', 'Prudence requise'], rows: [
66
- ['Marque et modèle d\'appareil présents', 'Le fichier contient des balises d\'identification du dispositif.', 'Les balises peuvent être copiées ou réécrites et n\'identifient pas à elles seules l\'appareil physique.'],
67
- ['Coordonnées GPS présentes', 'Une localisation a été enregistrée dans les métadonnées.', 'Vérifiez le signe, le datum, l\'horodatage et la cohérence avec des preuves indépendantes.'],
68
- ['Le champ logiciel nomme un éditeur', 'L\'application indiquée a probablement écrit les métadonnées ou exporté le fichier.', 'Cela ne prouve pas un photomontage trompeur ni une altération du contenu.'],
69
- ['Date de capture absente', 'La balise concernée est absente ou illisible.', 'L\'absence peut provenir d\'un réglage de confidentialité, d\'une transcodification ou d\'une suppression de métadonnées.'],
70
- ] },
71
- { type: 'title', text: 'Ce que les utilisateurs veulent souvent dire par " cette photo est-elle authentique ? "', level: 3 },
72
- { type: 'paragraph', html: 'En pratique, les personnes qui recherchent une vérification d\'authenticité d\'image visent souvent des questions différentes. Elles veulent savoir si le fichier provient directement d\'un appareil photo, si un logiciel d\'édition l\'a touché, si la date ou le lieu revendiqués semblent crédibles, si la structure du fichier paraît normale ou s\'il existe des raisons immédiates de s\'en méfier. Un bon analyseur doit aider à séparer ces questions au lieu de tout réduire à un simple oui ou non.' },
73
- { type: 'paragraph', html: 'Cet outil distingue donc les <strong>observations</strong> des <strong>heuristiques</strong>. Les observations correspondent à ce que le fichier semble effectivement contenir, comme un champ logiciel lisible ou une paire de coordonnées. Les heuristiques sont des interprétations orientées risque, par exemple le fait qu\'une signature d\'édition mérite une revue. Cette distinction améliore à la fois l\'utilisabilité et la pertinence SEO, car elle répond à une vraie attente: comprendre ce que dit le fichier, ce que l\'outil infère et où le jugement humain reste indispensable.' },
74
- { type: 'title', text: 'Comment interpréter les signatures de logiciels d\'édition', level: 3 },
75
- { type: 'paragraph', html: 'Des noms comme Adobe Photoshop, Lightroom, GIMP, Snapseed ou ImageMagick peuvent apparaître en clair dans les métadonnées ou les segments applicatifs. Leur présence constitue un indice d\'attribution sur le traitement du fichier, pas une preuve que les pixels ont été modifiés de manière malveillante. C\'est l\'une des intentions de recherche les plus fréquentes autour des métadonnées médico-légales d\'image, car beaucoup d\'utilisateurs supposent que la présence d\'un éditeur signifie automatiquement manipulation. En réalité, un redimensionnement ordinaire, une conversion de format, une correction colorimétrique, un traitement éditorial, une rédaction ou une préparation probatoire peuvent laisser la même signature.' },
76
- { type: 'paragraph', html: 'Une meilleure lecture consiste à se demander quel rôle le logiciel indiqué a vraisemblablement joué. A-t-il redimensionné l\'image pour le web ? Supprimé des métadonnées à l\'export ? Enregistré une capture d\'écran ? Réencodé une copie issue des réseaux sociaux ? Ajouté un profil colorimétrique ? La même chaîne logicielle peut soutenir des récits très différents selon le workflow. Les examinateurs devraient comparer cette signature avec l\'historique de traitement attendu et, si l\'enjeu le justifie, recourir à des méthodes plus profondes comme l\'examen des tables de quantification, l\'analyse de l\'historique de compression, la comparaison des miniatures, l\'étude de motifs de capteur et les tests pixel par pixel.' },
77
- { type: 'title', text: 'Lire les métadonnées GPS avec prudence', level: 3 },
78
- { type: 'paragraph', html: 'Les métadonnées GPS peuvent être très utiles parce qu\'elles relient potentiellement une image à un lieu, mais il est facile de surévaluer leur certitude. Les coordonnées doivent être vérifiées au regard du signe d\'hémisphère, de la précision décimale, de la cohérence temporelle et de l\'ensemble du fichier. Une paire de coordonnées qui paraît précise n\'est pas automatiquement fiable. Elle peut refléter un ancien état du dispositif, une édition manuelle, un comportement d\'export ou un historique de média partagé. L\'absence de GPS ne signifie pas non plus forcément dissimulation, car beaucoup d\'appareils n\'enregistrent jamais la position et de nombreuses plateformes la suppriment automatiquement.' },
79
- { type: 'paragraph', html: 'Pour les utilisateurs arrivant via des recherches sur la géolocalisation photo ou la vérification d\'emplacement à partir des métadonnées, la méthode la plus fiable est la comparaison. Considérez les coordonnées comme une piste parmi d\'autres. Comparez-les avec les témoignages, l\'historique de déplacement, les repères de la scène, la météo, les journaux réseau, les sauvegardes cloud et les logs de l\'appareil lorsque cela est légalement possible. La vraie valeur des métadonnées réside dans leur capacité à s\'insérer de manière cohérente dans un tableau probatoire plus large.' },
80
- { type: 'title', text: 'Pourquoi la vue hexadécimale est importante', level: 3 },
81
- { type: 'paragraph', html: 'Un visualiseur hexadécimal expose les valeurs d\'octets et les offsets réels qui composent le fichier. C\'est important parce que beaucoup de questions d\'authenticité sont en réalité des questions de structure. Les fichiers JPEG commencent normalement par le marqueur SOI FF D8, suivi de segments comme APP0 ou APP1 ; l\'EXIF se trouve fréquemment dans APP1. Les fichiers PNG commencent par une signature de huit octets et se poursuivent sous forme de chunks nommés. Regarder les premiers octets aide à confirmer qu\'un fichier ressemble au conteneur qu\'il prétend être et donne aux examinateurs expérimentés un moyen rapide de documenter des offsets pour les rapports.' },
82
- { type: 'paragraph', html: 'Les anomalies structurelles ne signifient pas automatiquement manipulation, car les encodeurs légitimes diffèrent. Toutefois, la visibilité au niveau des octets est précieuse lorsqu\'un fichier semble endommagé, mal étiqueté, partiellement réécrit ou incohérent avec son extension. De nombreux utilisateurs qui recherchent un outil de criminalistique de l\'image veulent de la transparence plutôt qu\'une boîte noire. Montrer directement l\'en-tête et les zones de métadonnées aide à comprendre où commence l\'interprétation.' },
83
- { type: 'title', text: 'Un workflow pratique pour l\'examen des métadonnées', level: 3 },
84
- { type: 'paragraph', html: 'Un workflow solide commence avant même l\'examen EXIF. Conservez le fichier source, calculez un hash cryptographique et ne considérez jamais une copie de travail chargée dans le navigateur comme le maître probatoire. Examinez ensuite ensemble le conteneur, les propriétés du fichier, les champs de capture, les champs logiciels et les coordonnées GPS. Recherchez d\'abord la cohérence interne. Ensuite, comparez ce que dit le fichier avec ce que dit le dossier. Dans de nombreuses enquêtes, l\'idée la plus utile naît de l\'écart entre ces deux récits.' },
85
- { type: 'paragraph', html: 'Cela compte aussi pour l\'intention de recherche, car beaucoup d\'utilisateurs ne veulent pas seulement une liste de balises. Ils veulent savoir quoi faire après avoir vu une date, un nom de logiciel ou une paire de coordonnées. Dans la plupart des cas, cela signifie documenter l\'observation, consigner la limite et décider si le fichier nécessite une analyse plus poussée avec des méthodes approuvées en laboratoire. L\'analyse des métadonnées est une étape d\'entrée, pas l\'examen complet.' },
86
- { type: 'title', text: 'Checklist du workflow médico-légal', level: 3 },
87
- { type: 'list', items: [
88
- '<strong>Préserver :</strong> ne traitez jamais une copie de travail chargée dans le navigateur comme un maître probatoire.',
89
- '<strong>Hasher :</strong> enregistrez un hash cryptographique lors de l\'acquisition et après chaque transfert autorisé.',
90
- '<strong>Corroborer :</strong> comparez les métadonnées avec les traces de l\'appareil, les données cloud, les témoignages et les faits de la scène.',
91
- '<strong>Documenter :</strong> consignez versions logicielles, réglages, offsets, observations et captures nécessaires à la reproductibilité.',
92
- '<strong>Valider :</strong> utilisez des outils approuvés en laboratoire et une revue par les pairs avant de formuler une conclusion formelle sur l\'authenticité.',
93
- ] },
94
- { type: 'title', text: 'Quand l\'examen des métadonnées ne suffit pas', level: 3 },
95
- { type: 'paragraph', html: 'Parfois, les métadonnées paraissent propres alors que l\'image reste trompeuse. Parfois, elles semblent suspectes alors que l\'image est authentique. C\'est pourquoi les conclusions médico-légales avancées exigent plus que de simples balises de fichier. Selon les enjeux du dossier, les étapes suivantes peuvent inclure l\'analyse d\'artefacts de compression, la comparaison de tables de quantification, la vérification d\'incohérences de miniatures, l\'examen au niveau du pixel, la reconstruction de provenance et la revue de la chaîne de conservation. Un bon contenu SEO doit l\'énoncer clairement, car cela répond à la vraie question derrière la plupart des recherches Google: que peut faire cet outil pour moi et où commencent ses limites ?' },
96
- ],
97
- faq,
98
- bibliography,
99
- howTo,
100
- schemas: [
101
- { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'ForensicApplication', operatingSystem: 'Any' },
102
- { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
103
- { '@context': 'https://schema.org', '@type': 'HowTo', name: title, step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })) },
104
- ],
105
- };
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'analyseur-medico-legal-metadonnees-authenticite-image';
5
+ const title = 'Analyseur Médicolégal des Métadonnées et de l\'Authenticité des Images';
6
+ const description = 'Inspectez les en-têtes d\'image, les détails EXIF de prise de vue, les coordonnées GPS, les signatures de logiciels d\'édition et les octets bruts localement dans votre navigateur.';
7
+
8
+ const howTo = [
9
+ { name: 'Préserver la preuve originale', text: 'Travaillez à partir d\'une copie médico-légale et conservez le fichier source ainsi que son hash cryptographique en dehors de cet outil navigateur.' },
10
+ { name: 'Charger une image localement', text: 'Glissez-déposez ou sélectionnez un JPEG ou un PNG. Le fichier est lu dans la mémoire du navigateur et n\'est pas téléversé.' },
11
+ { name: 'Examiner les métadonnées et la localisation', text: 'Comparez l\'heure de capture, l\'identité de l\'appareil, le logiciel et les champs GPS avec le récit du dossier et les registres d\'acquisition.' },
12
+ { name: 'Interpréter les signaux d\'intégrité', text: 'Considérez les signatures d\'édition et les champs manquants comme des pistes d\'enquête, pas comme une preuve de manipulation.' },
13
+ { name: 'Examiner l\'aperçu hexadécimal', text: 'Utilisez les zones mises en évidence de l\'en-tête et des métadonnées pour identifier la structure du conteneur et documenter les offsets pour une analyse plus approfondie.' },
14
+ ];
15
+
16
+ const faq = [
17
+ { question: 'Les métadonnées peuvent-elles prouver qu\'une photo est authentique ?', answer: 'Non. Les métadonnées peuvent être supprimées, copiées ou modifiées. L\'authentification exige de combiner la structure du fichier, la provenance, les hashes, l\'examen visuel, l\'analyse de compression et des méthodes médico-légales validées.' },
18
+ { question: 'Une signature Adobe ou GIMP prouve-t-elle une retouche malveillante ?', answer: 'Non. Elle indique qu\'un logiciel a pu écrire les métadonnées ou exporter le fichier. Une correction colorimétrique légitime, un flux éditorial ou la préparation d\'éléments de preuve peuvent produire la même signature.' },
19
+ { question: 'L\'image est-elle téléversée ?', answer: 'Non. L\'analyse s\'effectue dans la mémoire du navigateur. Respectez néanmoins la politique de traitement des preuves de votre organisation avant d\'ouvrir un document sensible dans un logiciel quelconque.' },
20
+ { question: 'Pourquoi les données GPS peuvent-elles être absentes ?', answer: 'L\'appareil peut ne pas prendre en charge le GPS, l\'enregistrement de la position a pu être désactivé, une plateforme a pu supprimer les métadonnées, ou le fichier a pu être réencodé.' },
21
+ ];
22
+
23
+ export const content: ToolLocaleContent = {
24
+ slug,
25
+ title,
26
+ description,
27
+ ui: {
28
+ privacy: 'Examen binaire local uniquement',
29
+ dropTitle: 'Déposez une image sur la table de preuve',
30
+ dropHint: 'Déposez ici un JPEG ou un PNG, ou choisissez un fichier. Rien n\'est téléversé.',
31
+ chooseFile: 'Choisir une image',
32
+ replaceFile: 'Remplacer l\'image',
33
+ waiting: 'En attente d\'une pièce',
34
+ metadata: 'Métadonnées de capture',
35
+ integrity: 'Signaux d\'intégrité',
36
+ location: 'Localisation enregistrée',
37
+ hex: 'Fenêtre de preuve hexadécimale',
38
+ hexHint: '512 premiers octets · en-tête cyan · métadonnées ambre · données image neutres',
39
+ noData: 'Aucune valeur lisible',
40
+ noGps: 'Aucune coordonnée GPS lisible n\'a été trouvée.',
41
+ mapLink: 'Ouvrir les coordonnées dans OpenStreetMap',
42
+ score: 'Confiance heuristique',
43
+ disclaimer: 'Un score élevé n\'établit pas l\'authenticité. Conservez l\'original, calculez des hashes cryptographiques et utilisez des workflows de laboratoire validés pour les conclusions du dossier.',
44
+ fileName: 'Fichier',
45
+ fileSize: 'Taille',
46
+ fileType: 'Conteneur',
47
+ camera: 'Appareil',
48
+ captured: 'Capturé',
49
+ software: 'Logiciel',
50
+ coordinates: 'Coordonnées',
51
+ statusNoObvious: 'Aucun indice évident de retouche',
52
+ statusReview: 'Révision recommandée',
53
+ statusEditing: 'Signature d\'édition détectée',
54
+ processing: 'Lecture des preuves binaires...',
55
+ loadError: 'Le fichier n\'a pas pu être analysé. Sélectionnez une image JPEG ou PNG valide.',
56
+ },
57
+ seo: [
58
+ { type: 'title', text: 'Comment analyser les métadonnées d\'image et les indices d\'authenticité', level: 2 },
59
+ { type: 'paragraph', html: 'Un analyseur médico-légal de métadonnées d\'image aide les enquêteurs, journalistes, juristes, équipes conformité et experts à répondre à une question à forte intention: <strong>que peuvent réellement révéler les métadonnées d\'une photographie ?</strong> Les métadonnées peuvent fournir des indices utiles sur la capture, la localisation, le traitement logiciel et la structure du fichier, mais elles ne constituent pas une machine autonome à dire le vrai. Leur principale valeur réside dans le triage. Elles permettent d\'identifier les fichiers qui méritent un examen plus approfondi, les détails qui soutiennent l\'histoire revendiquée de l\'image et les contradictions qui nécessitent un suivi avant toute conclusion forte sur l\'authenticité.' },
60
+ { type: 'paragraph', html: 'Cet outil navigateur s\'adresse aux utilisateurs qui veulent plus qu\'un simple dump EXIF brut. Il lit localement le JPEG ou le PNG sélectionné et réunit en un seul endroit les champs de l\'appareil, les horodatages de capture, les étiquettes logicielles, les coordonnées, les indices de conteneur et les premiers octets du fichier. Il répond ainsi à des intentions de recherche fréquentes derrière des requêtes comme <em>vérifier l\'authenticité d\'une photo</em>, <em>analyser les métadonnées EXIF</em>, <em>comment savoir si une image a été retouchée</em> ou <em>comment vérifier les métadonnées GPS d\'une image</em>. Les utilisateurs qui formulent ces recherches veulent généralement à la fois des éléments factuels et de l\'interprétation.' },
61
+ { type: 'paragraph', html: 'Le principe essentiel est que le résultat doit être lu comme du contexte, pas comme un verdict. Un fichier peut contenir des métadonnées utiles et rester trompeur. Il peut contenir peu ou pas de métadonnées et demeurer authentique. Une signature logicielle peut indiquer un comportement normal d\'export plutôt qu\'une manipulation trompeuse. Une bonne pratique médico-légale traite donc les métadonnées comme une couche de preuve à comparer avec la provenance, les hashes, les témoignages, l\'historique de l\'appareil et des méthodes d\'examen validées.' },
62
+ { type: 'title', text: 'Ce que l\'EXIF peut dire et ne peut pas dire', level: 3 },
63
+ { type: 'paragraph', html: 'EXIF est une structure de métadonnées fondée sur TIFF couramment intégrée aux images JPEG. Elle peut enregistrer l\'appareil de prise de vue, la date et l\'heure originales, l\'orientation, les paramètres d\'exposition et la position GPS. Lorsque ces champs sont cohérents entre eux et compatibles avec les circonstances connues de l\'affaire, ils peuvent soutenir une chronologie ou une origine proposées. Lorsqu\'ils contredisent l\'histoire annoncée de l\'image, ils orientent l\'examinateur vers des questions précises.' },
64
+ { type: 'paragraph', html: 'L\'une des plus grandes idées reçues derrière les recherches sur les métadonnées d\'image consiste à croire que l\'EXIF est fiable par défaut. Ce n\'est pas le cas. Les métadonnées peuvent être modifiées, copiées entre fichiers, supprimées par les réseaux sociaux, altérées lors de l\'export, normalisées par des plateformes cloud ou partiellement endommagées par réencodage. La bonne question n\'est donc pas seulement de savoir si des métadonnées existent, mais si elles sont techniquement cohérentes, contextuellement plausibles et corroborées par des éléments indépendants.' },
65
+ { type: 'table', headers: ['Observation', 'Sens possible', 'Prudence requise'], rows: [
66
+ ['Marque et modèle d\'appareil présents', 'Le fichier contient des balises d\'identification du dispositif.', 'Les balises peuvent être copiées ou réécrites et n\'identifient pas à elles seules l\'appareil physique.'],
67
+ ['Coordonnées GPS présentes', 'Une localisation a été enregistrée dans les métadonnées.', 'Vérifiez le signe, le datum, l\'horodatage et la cohérence avec des preuves indépendantes.'],
68
+ ['Le champ logiciel nomme un éditeur', 'L\'application indiquée a probablement écrit les métadonnées ou exporté le fichier.', 'Cela ne prouve pas un photomontage trompeur ni une altération du contenu.'],
69
+ ['Date de capture absente', 'La balise concernée est absente ou illisible.', 'L\'absence peut provenir d\'un réglage de confidentialité, d\'une transcodification ou d\'une suppression de métadonnées.'],
70
+ ] },
71
+ { type: 'title', text: 'Ce que les utilisateurs veulent souvent dire par " cette photo est-elle authentique ? "', level: 3 },
72
+ { type: 'paragraph', html: 'En pratique, les personnes qui recherchent une vérification d\'authenticité d\'image visent souvent des questions différentes. Elles veulent savoir si le fichier provient directement d\'un appareil photo, si un logiciel d\'édition l\'a touché, si la date ou le lieu revendiqués semblent crédibles, si la structure du fichier paraît normale ou s\'il existe des raisons immédiates de s\'en méfier. Un bon analyseur doit aider à séparer ces questions au lieu de tout réduire à un simple oui ou non.' },
73
+ { type: 'paragraph', html: 'Cet outil distingue donc les <strong>observations</strong> des <strong>heuristiques</strong>. Les observations correspondent à ce que le fichier semble effectivement contenir, comme un champ logiciel lisible ou une paire de coordonnées. Les heuristiques sont des interprétations orientées risque, par exemple le fait qu\'une signature d\'édition mérite une revue. Cette distinction améliore à la fois l\'utilisabilité et la pertinence SEO, car elle répond à une vraie attente: comprendre ce que dit le fichier, ce que l\'outil infère et où le jugement humain reste indispensable.' },
74
+ { type: 'title', text: 'Comment interpréter les signatures de logiciels d\'édition', level: 3 },
75
+ { type: 'paragraph', html: 'Des noms comme Adobe Photoshop, Lightroom, GIMP, Snapseed ou ImageMagick peuvent apparaître en clair dans les métadonnées ou les segments applicatifs. Leur présence constitue un indice d\'attribution sur le traitement du fichier, pas une preuve que les pixels ont été modifiés de manière malveillante. C\'est l\'une des intentions de recherche les plus fréquentes autour des métadonnées médico-légales d\'image, car beaucoup d\'utilisateurs supposent que la présence d\'un éditeur signifie automatiquement manipulation. En réalité, un redimensionnement ordinaire, une conversion de format, une correction colorimétrique, un traitement éditorial, une rédaction ou une préparation probatoire peuvent laisser la même signature.' },
76
+ { type: 'paragraph', html: 'Une meilleure lecture consiste à se demander quel rôle le logiciel indiqué a vraisemblablement joué. A-t-il redimensionné l\'image pour le web ? Supprimé des métadonnées à l\'export ? Enregistré une capture d\'écran ? Réencodé une copie issue des réseaux sociaux ? Ajouté un profil colorimétrique ? La même chaîne logicielle peut soutenir des récits très différents selon le workflow. Les examinateurs devraient comparer cette signature avec l\'historique de traitement attendu et, si l\'enjeu le justifie, recourir à des méthodes plus profondes comme l\'examen des tables de quantification, l\'analyse de l\'historique de compression, la comparaison des miniatures, l\'étude de motifs de capteur et les tests pixel par pixel.' },
77
+ { type: 'title', text: 'Lire les métadonnées GPS avec prudence', level: 3 },
78
+ { type: 'paragraph', html: 'Les métadonnées GPS peuvent être très utiles parce qu\'elles relient potentiellement une image à un lieu, mais il est facile de surévaluer leur certitude. Les coordonnées doivent être vérifiées au regard du signe d\'hémisphère, de la précision décimale, de la cohérence temporelle et de l\'ensemble du fichier. Une paire de coordonnées qui paraît précise n\'est pas automatiquement fiable. Elle peut refléter un ancien état du dispositif, une édition manuelle, un comportement d\'export ou un historique de média partagé. L\'absence de GPS ne signifie pas non plus forcément dissimulation, car beaucoup d\'appareils n\'enregistrent jamais la position et de nombreuses plateformes la suppriment automatiquement.' },
79
+ { type: 'paragraph', html: 'Pour les utilisateurs arrivant via des recherches sur la géolocalisation photo ou la vérification d\'emplacement à partir des métadonnées, la méthode la plus fiable est la comparaison. Considérez les coordonnées comme une piste parmi d\'autres. Comparez-les avec les témoignages, l\'historique de déplacement, les repères de la scène, la météo, les journaux réseau, les sauvegardes cloud et les logs de l\'appareil lorsque cela est légalement possible. La vraie valeur des métadonnées réside dans leur capacité à s\'insérer de manière cohérente dans un tableau probatoire plus large.' },
80
+ { type: 'title', text: 'Pourquoi la vue hexadécimale est importante', level: 3 },
81
+ { type: 'paragraph', html: 'Un visualiseur hexadécimal expose les valeurs d\'octets et les offsets réels qui composent le fichier. C\'est important parce que beaucoup de questions d\'authenticité sont en réalité des questions de structure. Les fichiers JPEG commencent normalement par le marqueur SOI FF D8, suivi de segments comme APP0 ou APP1 ; l\'EXIF se trouve fréquemment dans APP1. Les fichiers PNG commencent par une signature de huit octets et se poursuivent sous forme de chunks nommés. Regarder les premiers octets aide à confirmer qu\'un fichier ressemble au conteneur qu\'il prétend être et donne aux examinateurs expérimentés un moyen rapide de documenter des offsets pour les rapports.' },
82
+ { type: 'paragraph', html: 'Les anomalies structurelles ne signifient pas automatiquement manipulation, car les encodeurs légitimes diffèrent. Toutefois, la visibilité au niveau des octets est précieuse lorsqu\'un fichier semble endommagé, mal étiqueté, partiellement réécrit ou incohérent avec son extension. De nombreux utilisateurs qui recherchent un outil de criminalistique de l\'image veulent de la transparence plutôt qu\'une boîte noire. Montrer directement l\'en-tête et les zones de métadonnées aide à comprendre où commence l\'interprétation.' },
83
+ { type: 'title', text: 'Un workflow pratique pour l\'examen des métadonnées', level: 3 },
84
+ { type: 'paragraph', html: 'Un workflow solide commence avant même l\'examen EXIF. Conservez le fichier source, calculez un hash cryptographique et ne considérez jamais une copie de travail chargée dans le navigateur comme le maître probatoire. Examinez ensuite ensemble le conteneur, les propriétés du fichier, les champs de capture, les champs logiciels et les coordonnées GPS. Recherchez d\'abord la cohérence interne. Ensuite, comparez ce que dit le fichier avec ce que dit le dossier. Dans de nombreuses enquêtes, l\'idée la plus utile naît de l\'écart entre ces deux récits.' },
85
+ { type: 'paragraph', html: 'Cela compte aussi pour l\'intention de recherche, car beaucoup d\'utilisateurs ne veulent pas seulement une liste de balises. Ils veulent savoir quoi faire après avoir vu une date, un nom de logiciel ou une paire de coordonnées. Dans la plupart des cas, cela signifie documenter l\'observation, consigner la limite et décider si le fichier nécessite une analyse plus poussée avec des méthodes approuvées en laboratoire. L\'analyse des métadonnées est une étape d\'entrée, pas l\'examen complet.' },
86
+ { type: 'title', text: 'Checklist du workflow médico-légal', level: 3 },
87
+ { type: 'list', items: [
88
+ '<strong>Préserver :</strong> ne traitez jamais une copie de travail chargée dans le navigateur comme un maître probatoire.',
89
+ '<strong>Hasher :</strong> enregistrez un hash cryptographique lors de l\'acquisition et après chaque transfert autorisé.',
90
+ '<strong>Corroborer :</strong> comparez les métadonnées avec les traces de l\'appareil, les données cloud, les témoignages et les faits de la scène.',
91
+ '<strong>Documenter :</strong> consignez versions logicielles, réglages, offsets, observations et captures nécessaires à la reproductibilité.',
92
+ '<strong>Valider :</strong> utilisez des outils approuvés en laboratoire et une revue par les pairs avant de formuler une conclusion formelle sur l\'authenticité.',
93
+ ] },
94
+ { type: 'title', text: 'Quand l\'examen des métadonnées ne suffit pas', level: 3 },
95
+ { type: 'paragraph', html: 'Parfois, les métadonnées paraissent propres alors que l\'image reste trompeuse. Parfois, elles semblent suspectes alors que l\'image est authentique. C\'est pourquoi les conclusions médico-légales avancées exigent plus que de simples balises de fichier. Selon les enjeux du dossier, les étapes suivantes peuvent inclure l\'analyse d\'artefacts de compression, la comparaison de tables de quantification, la vérification d\'incohérences de miniatures, l\'examen au niveau du pixel, la reconstruction de provenance et la revue de la chaîne de conservation. Un bon contenu SEO doit l\'énoncer clairement, car cela répond à la vraie question derrière la plupart des recherches Google: que peut faire cet outil pour moi et où commencent ses limites ?' },
96
+ ],
97
+ faq,
98
+ bibliography,
99
+ howTo,
100
+ schemas: [
101
+ { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'ForensicApplication', operatingSystem: 'Any' },
102
+ { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
103
+ { '@context': 'https://schema.org', '@type': 'HowTo', name: title, step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })) },
104
+ ],
105
+ };
@@ -1,95 +1,100 @@
1
- import { bibliography } from '../bibliography';
2
- import type { ToolLocaleContent } from '../../../types';
3
-
4
- const slug = 'penganalisis-forensik-metadata-dan-keaslian-gambar';
5
- const title = 'Penganalisis Forensik Metadata dan Keaslian Gambar';
6
- const description = 'Periksa header gambar, detail EXIF pengambilan, koordinat GPS, jejak perangkat lunak edit, dan byte mentah secara lokal di browser Anda.';
7
-
8
- const howTo = [
9
- { name: 'Pertahankan bukti asli', text: 'Bekerjalah dari salinan forensik dan simpan berkas sumber beserta hash kriptografinya di luar alat browser ini.' },
10
- { name: 'Muat gambar secara lokal', text: 'Seret atau pilih JPEG atau PNG. Berkas dibaca di memori browser dan tidak diunggah.' },
11
- { name: 'Tinjau metadata dan lokasi', text: 'Bandingkan waktu pengambilan, identitas kamera, perangkat lunak, dan kolom GPS dengan narasi kasus serta catatan akuisisi.' },
12
- { name: 'Tafsirkan sinyal integritas', text: 'Perlakukan tanda perangkat lunak edit dan kolom yang hilang sebagai petunjuk investigatif, bukan bukti manipulasi.' },
13
- { name: 'Periksa pratinjau heksadesimal', text: 'Gunakan area header dan metadata yang disorot untuk mengenali struktur kontainer dan mencatat offset untuk pemeriksaan lanjutan.' },
14
- ];
15
-
16
- const faq = [
17
- { question: 'Apakah metadata dapat membuktikan bahwa sebuah foto autentik?', answer: 'Tidak. Metadata dapat dihapus, disalin, atau diubah. Autentikasi memerlukan kombinasi struktur berkas, asal-usul, hash, pemeriksaan visual, analisis kompresi, dan metode forensik yang tervalidasi.' },
18
- { question: 'Apakah tanda Adobe atau GIMP membuktikan pengeditan berbahaya?', answer: 'Tidak. Itu hanya menunjukkan bahwa perangkat lunak mungkin menulis metadata atau mengekspor berkas. Koreksi warna yang sah, pemrosesan editorial, atau persiapan bukti dapat menghasilkan tanda yang sama.' },
19
- { question: 'Apakah gambar diunggah?', answer: 'Tidak. Analisis dilakukan di memori browser. Meski begitu, ikuti kebijakan penanganan barang bukti organisasi Anda sebelum membuka materi sensitif di perangkat lunak apa pun.' },
20
- { question: 'Mengapa data GPS bisa hilang?', answer: 'Kamera mungkin tidak mendukung GPS, perekaman lokasi mungkin dimatikan, platform mungkin menghapus metadata, atau berkas mungkin telah dikode ulang.' },
21
- ];
22
-
23
- export const content: ToolLocaleContent = {
24
- slug,
25
- title,
26
- description,
27
- ui: {
28
- privacy: 'Pemeriksaan biner hanya lokal',
29
- dropTitle: 'Tempatkan gambar di meja bukti',
30
- dropHint: 'Jatuhkan JPEG atau PNG di sini, atau pilih berkas. Tidak ada yang diunggah.',
31
- chooseFile: 'Pilih gambar',
32
- replaceFile: 'Ganti gambar',
33
- waiting: 'Menunggu bukti',
34
- metadata: 'Metadata pengambilan',
35
- integrity: 'Sinyal integritas',
36
- location: 'Lokasi terekam',
37
- hex: 'Jendela bukti heksadesimal',
38
- hexHint: '512 byte pertama · header sian · metadata amber · data gambar netral',
39
- noData: 'Tidak ada nilai yang terbaca',
40
- noGps: 'Koordinat GPS yang terbaca tidak ditemukan.',
41
- mapLink: 'Buka koordinat di OpenStreetMap',
42
- score: 'Keyakinan heuristik',
43
- disclaimer: 'Skor tinggi tidak menetapkan keaslian. Simpan berkas asli, hitung hash kriptografis, dan gunakan alur kerja laboratorium tervalidasi untuk kesimpulan kasus.',
44
- fileName: 'Berkas',
45
- fileSize: 'Ukuran',
46
- fileType: 'Kontainer',
47
- camera: 'Kamera',
48
- captured: 'Diambil',
49
- software: 'Perangkat lunak',
50
- coordinates: 'Koordinat',
51
- statusNoObvious: 'Tidak ada indikator edit yang jelas',
52
- statusReview: 'Peninjauan disarankan',
53
- statusEditing: 'Tanda pengeditan terdeteksi',
54
- processing: 'Membaca bukti biner...',
55
- loadError: 'Berkas tidak dapat dianalisis. Pilih gambar JPEG atau PNG yang valid.',
56
- },
57
- seo: [
58
- { type: 'title', text: 'Cara menganalisis metadata gambar dan indikator keaslian', level: 2 },
59
- { type: 'paragraph', html: 'Penganalisis metadata gambar forensik membantu penyidik, jurnalis, tim hukum, peninjau kepatuhan, dan peneliti menjawab pertanyaan berniat tinggi: <strong>apa yang sebenarnya dapat diungkap metadata gambar tentang sebuah foto?</strong> Metadata dapat memberi petunjuk tentang pengambilan, lokasi, pemrosesan perangkat lunak, dan struktur berkas, tetapi tidak berfungsi sebagai mesin kebenaran yang berdiri sendiri. Nilai terbesarnya ada pada triase: membantu mengidentifikasi berkas mana yang layak diperiksa lebih dalam dan kontradiksi mana yang memerlukan tindak lanjut.' },
60
- { type: 'paragraph', html: 'Alat berbasis browser ini dirancang untuk pengguna yang menginginkan lebih dari sekadar dump EXIF mentah. Alat ini membaca JPEG atau PNG yang dipilih secara lokal dan menampilkan bidang kamera, cap waktu pengambilan, tag perangkat lunak, koordinat, petunjuk kontainer, dan byte awal berkas di satu tempat. Ini sesuai dengan niat pencarian umum seperti <em>pemeriksa keaslian foto</em>, <em>analisis metadata EXIF</em>, atau <em>cara mengetahui apakah gambar diedit</em>.' },
61
- { type: 'paragraph', html: 'Prinsip utamanya adalah hasil harus dibaca sebagai konteks, bukan vonis. Berkas dapat memiliki metadata berguna dan tetap menyesatkan. Berkas juga dapat memiliki metadata sangat sedikit dan tetap autentik. Karena itu, praktik forensik yang baik memperlakukan metadata sebagai satu lapisan bukti yang harus dibandingkan dengan asal-usul, hash, keterangan saksi, riwayat perangkat, dan metode pemeriksaan tervalidasi.' },
62
- { type: 'title', text: 'Apa yang Bisa dan Tidak Bisa Dikatakan oleh EXIF', level: 3 },
63
- { type: 'paragraph', html: 'Data EXIF dapat memberi tahu merek dan model kamera, tanggal dan waktu pengambilan, panjang fokus, bukaan, kecepatan rana, ISO, apakah lampu kilat menyala, orientasi kamera, dan koordinat GPS jika perangkat merekamnya. Informasi ini sangat berguna untuk memverifikasi keterangan saksi, menyusun linimasa peristiwa, atau mengidentifikasi perangkat yang digunakan. Namun, EXIF tidak dapat membuktikan siapa yang membidikkan kamera, apakah subjek foto direkayasa, atau apakah gambar telah diedit sebelum dimasukkan ke dalam proses hukum. Metadata dapat dihapus dengan alat sederhana, disalin dari berkas lain, atau dimodifikasi dengan maksud menipu. Karena itu, bidang EXIF harus diperlakukan sebagai petunjuk awal, bukan putusan akhir.' },
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'penganalisis-forensik-metadata-dan-keaslian-gambar';
5
+ const title = 'Penganalisis Forensik Metadata dan Keaslian Gambar';
6
+ const description = 'Periksa header gambar, detail EXIF pengambilan, koordinat GPS, jejak perangkat lunak edit, dan byte mentah secara lokal di browser Anda.';
7
+
8
+ const howTo = [
9
+ { name: 'Pertahankan bukti asli', text: 'Bekerjalah dari salinan forensik dan simpan berkas sumber beserta hash kriptografinya di luar alat browser ini.' },
10
+ { name: 'Muat gambar secara lokal', text: 'Seret atau pilih JPEG atau PNG. Berkas dibaca di memori browser dan tidak diunggah.' },
11
+ { name: 'Tinjau metadata dan lokasi', text: 'Bandingkan waktu pengambilan, identitas kamera, perangkat lunak, dan kolom GPS dengan narasi kasus serta catatan akuisisi.' },
12
+ { name: 'Tafsirkan sinyal integritas', text: 'Perlakukan tanda perangkat lunak edit dan kolom yang hilang sebagai petunjuk investigatif, bukan bukti manipulasi.' },
13
+ { name: 'Periksa pratinjau heksadesimal', text: 'Gunakan area header dan metadata yang disorot untuk mengenali struktur kontainer dan mencatat offset untuk pemeriksaan lanjutan.' },
14
+ ];
15
+
16
+ const faq = [
17
+ { question: 'Apakah metadata dapat membuktikan bahwa sebuah foto autentik?', answer: 'Tidak. Metadata dapat dihapus, disalin, atau diubah. Autentikasi memerlukan kombinasi struktur berkas, asal-usul, hash, pemeriksaan visual, analisis kompresi, dan metode forensik yang tervalidasi.' },
18
+ { question: 'Apakah tanda Adobe atau GIMP membuktikan pengeditan berbahaya?', answer: 'Tidak. Itu hanya menunjukkan bahwa perangkat lunak mungkin menulis metadata atau mengekspor berkas. Koreksi warna yang sah, pemrosesan editorial, atau persiapan bukti dapat menghasilkan tanda yang sama.' },
19
+ { question: 'Apakah gambar diunggah?', answer: 'Tidak. Analisis dilakukan di memori browser. Meski begitu, ikuti kebijakan penanganan barang bukti organisasi Anda sebelum membuka materi sensitif di perangkat lunak apa pun.' },
20
+ { question: 'Mengapa data GPS bisa hilang?', answer: 'Kamera mungkin tidak mendukung GPS, perekaman lokasi mungkin dimatikan, platform mungkin menghapus metadata, atau berkas mungkin telah dikode ulang.' },
21
+ ];
22
+
23
+ export const content: ToolLocaleContent = {
24
+ slug,
25
+ title,
26
+ description,
27
+ ui: {
28
+ privacy: 'Pemeriksaan biner hanya lokal',
29
+ dropTitle: 'Tempatkan gambar di meja bukti',
30
+ dropHint: 'Jatuhkan JPEG atau PNG di sini, atau pilih berkas. Tidak ada yang diunggah.',
31
+ chooseFile: 'Pilih gambar',
32
+ replaceFile: 'Ganti gambar',
33
+ waiting: 'Menunggu bukti',
34
+ metadata: 'Metadata pengambilan',
35
+ integrity: 'Sinyal integritas',
36
+ location: 'Lokasi terekam',
37
+ hex: 'Jendela bukti heksadesimal',
38
+ hexHint: '512 byte pertama · header sian · metadata amber · data gambar netral',
39
+ noData: 'Tidak ada nilai yang terbaca',
40
+ noGps: 'Koordinat GPS yang terbaca tidak ditemukan.',
41
+ mapLink: 'Buka koordinat di OpenStreetMap',
42
+ score: 'Keyakinan heuristik',
43
+ disclaimer: 'Skor tinggi tidak menetapkan keaslian. Simpan berkas asli, hitung hash kriptografis, dan gunakan alur kerja laboratorium tervalidasi untuk kesimpulan kasus.',
44
+ fileName: 'Berkas',
45
+ fileSize: 'Ukuran',
46
+ fileType: 'Kontainer',
47
+ camera: 'Kamera',
48
+ captured: 'Diambil',
49
+ software: 'Perangkat lunak',
50
+ coordinates: 'Koordinat',
51
+ statusNoObvious: 'Tidak ada indikator edit yang jelas',
52
+ statusReview: 'Peninjauan disarankan',
53
+ statusEditing: 'Tanda pengeditan terdeteksi',
54
+ processing: 'Membaca bukti biner...',
55
+ loadError: 'Berkas tidak dapat dianalisis. Pilih gambar JPEG atau PNG yang valid.',
56
+ },
57
+ seo: [
58
+ { type: 'title', text: 'Cara menganalisis metadata gambar dan indikator keaslian', level: 2 },
59
+ { type: 'paragraph', html: 'Penganalisis metadata gambar forensik membantu penyidik, jurnalis, tim hukum, peninjau kepatuhan, dan peneliti menjawab pertanyaan berniat tinggi: <strong>apa yang sebenarnya dapat diungkap metadata gambar tentang sebuah foto?</strong> Metadata dapat memberi petunjuk tentang pengambilan, lokasi, pemrosesan perangkat lunak, dan struktur berkas, tetapi tidak berfungsi sebagai mesin kebenaran yang berdiri sendiri. Nilai terbesarnya ada pada triase: membantu mengidentifikasi berkas mana yang layak diperiksa lebih dalam dan kontradiksi mana yang memerlukan tindak lanjut.' },
60
+ { type: 'paragraph', html: 'Alat berbasis browser ini dirancang untuk pengguna yang menginginkan lebih dari sekadar dump EXIF mentah. Alat ini membaca JPEG atau PNG yang dipilih secara lokal dan menampilkan bidang kamera, cap waktu pengambilan, tag perangkat lunak, koordinat, petunjuk kontainer, dan byte awal berkas di satu tempat. Ini sesuai dengan niat pencarian umum seperti <em>pemeriksa keaslian foto</em>, <em>analisis metadata EXIF</em>, atau <em>cara mengetahui apakah gambar diedit</em>.' },
61
+ { type: 'paragraph', html: 'Prinsip utamanya adalah hasil harus dibaca sebagai konteks, bukan vonis. Berkas dapat memiliki metadata berguna dan tetap menyesatkan. Berkas juga dapat memiliki metadata sangat sedikit dan tetap autentik. Karena itu, praktik forensik yang baik memperlakukan metadata sebagai satu lapisan bukti yang harus dibandingkan dengan asal-usul, hash, keterangan saksi, riwayat perangkat, dan metode pemeriksaan tervalidasi.' },
62
+ { type: 'title', text: 'Apa yang Bisa dan Tidak Bisa Dikatakan oleh EXIF', level: 3 },
63
+ { type: 'paragraph', html: 'Data EXIF dapat memberi tahu merek dan model kamera, tanggal dan waktu pengambilan, panjang fokus, bukaan, kecepatan rana, ISO, apakah lampu kilat menyala, orientasi kamera, dan koordinat GPS jika perangkat merekamnya. Informasi ini sangat berguna untuk memverifikasi keterangan saksi, menyusun linimasa peristiwa, atau mengidentifikasi perangkat yang digunakan. Namun, EXIF tidak dapat membuktikan siapa yang membidikkan kamera, apakah subjek foto direkayasa, atau apakah gambar telah diedit sebelum dimasukkan ke dalam proses hukum. Metadata dapat dihapus dengan alat sederhana, disalin dari berkas lain, atau dimodifikasi dengan maksud menipu. Karena itu, bidang EXIF harus diperlakukan sebagai petunjuk awal, bukan putusan akhir.' },
64
64
  { type: 'title', text: 'Cara Membaca Metadata GPS dengan Bijak', level: 3 },
65
65
  { type: 'paragraph', html: 'Koordinat GPS yang tertanam dalam metadata dapat memberikan bukti lokasi yang kuat, tetapi hanya jika diperiksa secara kritis. Pertama, periksa presisi koordinat: format derajat desimal dengan enam angka desimal menunjukkan akurasi hingga sekitar sepuluh sentimeter, sementara data yang lebih kasar mungkin berasal dari IP geolokasi, bukan penerima GPS sungguhan. Kedua, bandingkan zona waktu dan arah hadap kamera dengan catatan akuisisi resmi. Ketiga, waspadai foto yang diunduh dari media sosial; platform seperti Facebook, Twitter, dan WhatsApp sering menghapus data lokasi, sehingga koordinat yang bertahan bisa menandakan gambar dibagikan sebelum diunggah alih-alih diambil di tempat tersebut. Akhirnya, gunakan alat eksternal seperti OpenStreetMap atau citra satelit untuk melakukan referensi silang visual antara koordinat dan deklarasi lokasi dalam berkas.' },
66
+ { type: 'title', text: 'Memeriksa Jejak Perangkat Lunak dan Struktur Berkas', level: 3 },
67
+ { type: 'paragraph', html: 'Tag perangkat lunak seperti editor foto atau layanan ekspor dapat menjelaskan bagaimana berkas terakhir disimpan, tetapi tidak menceritakan seluruh sejarah gambar. Bandingkan tag tersebut dengan ukuran piksel, profil warna, orientasi, thumbnail, dan urutan byte pada header. Ketidaksesuaian adalah alasan untuk melakukan pemeriksaan lanjutan, bukan bukti otomatis bahwa isi gambar telah dimanipulasi. Aplikasi kamera, sistem operasi, dan platform berbagi dapat menulis ulang metadata tanpa mengubah subjek visual.' },
68
+ { type: 'paragraph', html: 'Untuk menjaga nilai pembuktian, simpan berkas sumber dalam media yang terkontrol, hitung hash sebelum analisis, dan catat setiap salinan atau konversi. Pemeriksaan browser ini membantu triase secara lokal, sehingga gambar sensitif tidak perlu diunggah. Namun, hasil tampilan harus dapat diulang dari salinan yang sama dan dibandingkan dengan akuisisi asli, log perangkat, keterangan saksi, serta metode laboratorium yang tervalidasi.' },
69
+ { type: 'paragraph', html: 'Analisis kompresi, pola piksel, dan pemeriksaan visual dapat memberi sinyal tambahan, tetapi masing-masing memiliki asumsi dan tingkat kesalahan. Foto yang dikompresi ulang dapat meniru beberapa ciri pengeditan, sedangkan pengeditan ringan dapat meninggalkan jejak yang sangat kecil. Gunakan beberapa sumber bukti yang independen, jelaskan ketidakpastian, dan hindari mengubah skor heuristik menjadi klaim pasti tentang keaslian atau niat seseorang.' },
70
+ { type: 'paragraph', html: 'Jika sebuah gambar akan dipakai dalam penyelidikan, buat catatan pemeriksaan yang menyebutkan nama berkas, ukuran, hash, perangkat lunak, waktu analisis, dan temuan yang dapat diulang. Jelaskan pula apa yang tidak dapat diperiksa oleh alat ini. Transparansi tentang batasan membantu peninjau lain membedakan petunjuk teknis dari kesimpulan autentikasi.' },
66
71
 
67
72
  { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
68
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
69
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
70
- { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
71
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
72
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
73
- { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
74
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
75
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
76
- { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
77
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
78
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
79
- { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
80
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
81
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
82
- { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
83
- { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
84
- { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
73
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
74
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
75
+ { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
76
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
77
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
78
+ { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
79
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
80
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
81
+ { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
82
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
83
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
84
+ { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
85
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
86
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
87
+ { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },
88
+ { type: 'paragraph', html: "Tafsirkan hasil bersama asumsi yang ditampilkan kalkulator sebelum menggunakannya." },
89
+ { type: 'paragraph', html: "Periksa input, satuan, pembulatan, tanggal, dan yurisdiksi karena semuanya dapat mengubah estimasi." },
85
90
  { type: 'paragraph', html: "Gunakan hasil untuk perencanaan dan perbandingan skenario; hasil ini bukan pengganti perhitungan resmi atau nasihat ahli." },],
86
- faq,
87
- bibliography,
88
- howTo,
89
- schemas: [
90
- { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'ForensicApplication', operatingSystem: 'Any' },
91
- { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
92
- { '@context': 'https://schema.org', '@type': 'HowTo', name: title, step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })) },
93
- ],
94
- };
95
-
91
+ faq,
92
+ bibliography,
93
+ howTo,
94
+ schemas: [
95
+ { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'ForensicApplication', operatingSystem: 'Any' },
96
+ { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
97
+ { '@context': 'https://schema.org', '@type': 'HowTo', name: title, step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })) },
98
+ ],
99
+ };
100
+