dfindexeddb 20240402__tar.gz → 20240501__tar.gz

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 (41) hide show
  1. {dfindexeddb-20240402/dfindexeddb.egg-info → dfindexeddb-20240501}/PKG-INFO +69 -34
  2. {dfindexeddb-20240402 → dfindexeddb-20240501}/README.md +68 -33
  3. dfindexeddb-20240501/dfindexeddb/indexeddb/chromium/blink.py +1013 -0
  4. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/chromium/definitions.py +66 -0
  5. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/chromium/record.py +108 -22
  6. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/chromium/v8.py +8 -3
  7. dfindexeddb-20240501/dfindexeddb/indexeddb/cli.py +204 -0
  8. dfindexeddb-20240501/dfindexeddb/indexeddb/safari/definitions.py +123 -0
  9. dfindexeddb-20240501/dfindexeddb/indexeddb/safari/record.py +238 -0
  10. dfindexeddb-20240501/dfindexeddb/indexeddb/safari/webkit.py +693 -0
  11. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/cli.py +8 -4
  12. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/definitions.py +2 -0
  13. dfindexeddb-20240501/dfindexeddb/leveldb/record.py +317 -0
  14. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/version.py +1 -1
  15. {dfindexeddb-20240402 → dfindexeddb-20240501/dfindexeddb.egg-info}/PKG-INFO +69 -34
  16. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb.egg-info/SOURCES.txt +3 -0
  17. {dfindexeddb-20240402 → dfindexeddb-20240501}/pyproject.toml +1 -1
  18. dfindexeddb-20240402/dfindexeddb/indexeddb/chromium/blink.py +0 -116
  19. dfindexeddb-20240402/dfindexeddb/indexeddb/cli.py +0 -112
  20. dfindexeddb-20240402/dfindexeddb/leveldb/record.py +0 -102
  21. {dfindexeddb-20240402 → dfindexeddb-20240501}/AUTHORS +0 -0
  22. {dfindexeddb-20240402 → dfindexeddb-20240501}/LICENSE +0 -0
  23. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/__init__.py +0 -0
  24. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/errors.py +0 -0
  25. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/__init__.py +0 -0
  26. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/chromium/__init__.py +0 -0
  27. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/firefox/__init__.py +0 -0
  28. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/safari/__init__.py +0 -0
  29. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/indexeddb/utils.py +0 -0
  30. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/__init__.py +0 -0
  31. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/descriptor.py +0 -0
  32. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/ldb.py +0 -0
  33. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/log.py +0 -0
  34. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/leveldb/utils.py +0 -0
  35. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb/utils.py +0 -0
  36. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb.egg-info/dependency_links.txt +0 -0
  37. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb.egg-info/entry_points.txt +0 -0
  38. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb.egg-info/requires.txt +0 -0
  39. {dfindexeddb-20240402 → dfindexeddb-20240501}/dfindexeddb.egg-info/top_level.txt +0 -0
  40. {dfindexeddb-20240402 → dfindexeddb-20240501}/setup.cfg +0 -0
  41. {dfindexeddb-20240402 → dfindexeddb-20240501}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dfindexeddb
3
- Version: 20240402
3
+ Version: 20240501
4
4
  Summary: dfindexeddb is an experimental Python tool for performing digital forensic analysis of IndexedDB and leveldb files.
5
5
  Author-email: Syd Pleno <sydp@google.com>
6
6
  Maintainer-email: dfIndexeddb Developers <dfindexeddb-dev@googlegroups.com>
@@ -223,12 +223,12 @@ Requires-Dist: zstd==1.5.5.1
223
223
  # dfIndexeddb
224
224
 
225
225
  dfindexeddb is an experimental Python tool for performing digital forensic
226
- analysis of IndexedDB and leveldb files.
226
+ analysis of IndexedDB and LevelDB files.
227
227
 
228
- It parses leveldb, IndexedDB and javascript structures from these files without
228
+ It parses LevelDB, IndexedDB and JavaScript structures from these files without
229
229
  requiring native libraries. (Note: only a subset of IndexedDB key types and
230
- Javascript types for Chromium-based browsers are currently supported. Safari
231
- and Firefox are under development).
230
+ JavaScript types for Safari and Chromium-based browsers are currently supported.
231
+ Firefox is under development).
232
232
 
233
233
  The content of IndexedDB files is dependent on what a web application stores
234
234
  locally/offline using the web browser's
@@ -275,7 +275,7 @@ include:
275
275
 
276
276
  ## Usage
277
277
 
278
- Two CLI tools for parsing IndexedDB/leveldb files are available after
278
+ Two CLI tools for parsing IndexedDB/LevelDB files are available after
279
279
  installation:
280
280
 
281
281
 
@@ -283,16 +283,56 @@ installation:
283
283
 
284
284
  ```
285
285
  $ dfindexeddb -h
286
- usage: dfindexeddb [-h] -s SOURCE [-o {json,jsonl,repr}]
286
+ usage: dfindexeddb [-h] {db,ldb,log} ...
287
287
 
288
288
  A cli tool for parsing indexeddb files
289
289
 
290
+ positional arguments:
291
+ {db,ldb,log}
292
+ db Parse a directory as indexeddb.
293
+ ldb Parse a ldb file as indexeddb.
294
+ log Parse a log file as indexeddb.
295
+
290
296
  options:
291
- -h, --help show this help message and exit
292
- -s SOURCE, --source SOURCE
293
- The source leveldb folder
294
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
295
- Output format. Default is json
297
+ -h, --help show this help message and exit
298
+ ```
299
+
300
+ #### Examples:
301
+
302
+ To parse IndexedDB records from an sqlite file for Safari and output the
303
+ results as JSON-L, use the following command:
304
+
305
+ ```
306
+ dfindexeddb db -s SOURCE --format safari -o jsonl
307
+ ```
308
+
309
+ To parse IndexedDB records from a LevelDB folder for Chrome/Chromium, using the
310
+ manifest file to determine recovered records and output as JSON, use the
311
+ following command:
312
+
313
+ ```
314
+ dfindexeddb db -s SOURCE --format chrome --use_manifest
315
+ ```
316
+
317
+ To parse IndexedDB records from a LevelDB ldb (.ldb) file and output the
318
+ results as JSON-L, use the following command:
319
+
320
+ ```
321
+ dfindexeddb ldb -s SOURCE -o jsonl
322
+ ```
323
+
324
+ To parse IndexedDB records from a LevelDB log (.log) file and output the
325
+ results as the Python printable representation, use the following command:
326
+
327
+ ```
328
+ dfindexeddb log -s SOURCE -o repr
329
+ ```
330
+
331
+ To parse a file as a Chrome/Chromium IndexedDB blink value and output the
332
+ results as JSON:
333
+
334
+ ```
335
+ dfindexeddb blink -s SOURCE
296
336
  ```
297
337
 
298
338
  ### LevelDB
@@ -314,37 +354,32 @@ options:
314
354
  -h, --help show this help message and exit
315
355
  ```
316
356
 
317
- To parse records from a LevelDB log (.log) file, use the following command:
357
+ #### Examples
318
358
 
319
- ```
320
- $ dfleveldb log -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,physical_records,write_batches,parsed_internal_key}]
359
+ To parse records from a LevelDB folder, use the following command:
321
360
 
322
- options:
323
- -h, --help show this help message and exit
324
- -s SOURCE, --source SOURCE
325
- The source leveldb file
326
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
327
- Output format. Default is json
328
- -t {blocks,physical_records,write_batches,parsed_internal_key}, --structure_type {blocks,physical_records,write_batches,parsed_internal_key}
329
- Parses the specified structure. Default is parsed_internal_key.
361
+ ```
362
+ dfindexeddb db -s SOURCE
330
363
  ```
331
364
 
332
- To parse records from a LevelDB table (.ldb) file, use the following command:
365
+ To parse blocks / physical records/ write batches / internal key records from a
366
+ LevelDB log (.log) file, use the following command, specifying the type (block,
367
+ physical_records, etc) via the `-t` option. By default, internal key records are parsed:
333
368
 
334
369
  ```
335
- $ dfleveldb ldb -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,records}]
370
+ $ dfleveldb log -s SOURCE [-t {blocks,physical_records,write_batches,parsed_internal_key}]
371
+ ```
336
372
 
337
- options:
338
- -h, --help show this help message and exit
339
- -s SOURCE, --source SOURCE
340
- The source leveldb file
341
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
342
- Output format. Default is json
343
- -t {blocks,records}, --structure_type {blocks,records}
344
- Parses the specified structure. Default is records.
373
+ To parse blocks / records from a LevelDB table (.ldb) file, use the following
374
+ command, specifying the type (blocks, records) via the `-t` option. By
375
+ default, records are parsed:
376
+
377
+ ```
378
+ $ dfleveldb ldb -s SOURCE [-t {blocks,records}]
345
379
  ```
346
380
 
347
- To parse version edit records from a Descriptor (MANIFEST) file:
381
+ To parse version edit records from a Descriptor (MANIFEST) file, use the
382
+ following command:
348
383
 
349
384
  ```
350
385
  $ dfleveldb descriptor -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,physical_records,versionedit} | -v]
@@ -1,12 +1,12 @@
1
1
  # dfIndexeddb
2
2
 
3
3
  dfindexeddb is an experimental Python tool for performing digital forensic
4
- analysis of IndexedDB and leveldb files.
4
+ analysis of IndexedDB and LevelDB files.
5
5
 
6
- It parses leveldb, IndexedDB and javascript structures from these files without
6
+ It parses LevelDB, IndexedDB and JavaScript structures from these files without
7
7
  requiring native libraries. (Note: only a subset of IndexedDB key types and
8
- Javascript types for Chromium-based browsers are currently supported. Safari
9
- and Firefox are under development).
8
+ JavaScript types for Safari and Chromium-based browsers are currently supported.
9
+ Firefox is under development).
10
10
 
11
11
  The content of IndexedDB files is dependent on what a web application stores
12
12
  locally/offline using the web browser's
@@ -53,7 +53,7 @@ include:
53
53
 
54
54
  ## Usage
55
55
 
56
- Two CLI tools for parsing IndexedDB/leveldb files are available after
56
+ Two CLI tools for parsing IndexedDB/LevelDB files are available after
57
57
  installation:
58
58
 
59
59
 
@@ -61,16 +61,56 @@ installation:
61
61
 
62
62
  ```
63
63
  $ dfindexeddb -h
64
- usage: dfindexeddb [-h] -s SOURCE [-o {json,jsonl,repr}]
64
+ usage: dfindexeddb [-h] {db,ldb,log} ...
65
65
 
66
66
  A cli tool for parsing indexeddb files
67
67
 
68
+ positional arguments:
69
+ {db,ldb,log}
70
+ db Parse a directory as indexeddb.
71
+ ldb Parse a ldb file as indexeddb.
72
+ log Parse a log file as indexeddb.
73
+
68
74
  options:
69
- -h, --help show this help message and exit
70
- -s SOURCE, --source SOURCE
71
- The source leveldb folder
72
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
73
- Output format. Default is json
75
+ -h, --help show this help message and exit
76
+ ```
77
+
78
+ #### Examples:
79
+
80
+ To parse IndexedDB records from an sqlite file for Safari and output the
81
+ results as JSON-L, use the following command:
82
+
83
+ ```
84
+ dfindexeddb db -s SOURCE --format safari -o jsonl
85
+ ```
86
+
87
+ To parse IndexedDB records from a LevelDB folder for Chrome/Chromium, using the
88
+ manifest file to determine recovered records and output as JSON, use the
89
+ following command:
90
+
91
+ ```
92
+ dfindexeddb db -s SOURCE --format chrome --use_manifest
93
+ ```
94
+
95
+ To parse IndexedDB records from a LevelDB ldb (.ldb) file and output the
96
+ results as JSON-L, use the following command:
97
+
98
+ ```
99
+ dfindexeddb ldb -s SOURCE -o jsonl
100
+ ```
101
+
102
+ To parse IndexedDB records from a LevelDB log (.log) file and output the
103
+ results as the Python printable representation, use the following command:
104
+
105
+ ```
106
+ dfindexeddb log -s SOURCE -o repr
107
+ ```
108
+
109
+ To parse a file as a Chrome/Chromium IndexedDB blink value and output the
110
+ results as JSON:
111
+
112
+ ```
113
+ dfindexeddb blink -s SOURCE
74
114
  ```
75
115
 
76
116
  ### LevelDB
@@ -92,37 +132,32 @@ options:
92
132
  -h, --help show this help message and exit
93
133
  ```
94
134
 
95
- To parse records from a LevelDB log (.log) file, use the following command:
135
+ #### Examples
96
136
 
97
- ```
98
- $ dfleveldb log -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,physical_records,write_batches,parsed_internal_key}]
137
+ To parse records from a LevelDB folder, use the following command:
99
138
 
100
- options:
101
- -h, --help show this help message and exit
102
- -s SOURCE, --source SOURCE
103
- The source leveldb file
104
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
105
- Output format. Default is json
106
- -t {blocks,physical_records,write_batches,parsed_internal_key}, --structure_type {blocks,physical_records,write_batches,parsed_internal_key}
107
- Parses the specified structure. Default is parsed_internal_key.
139
+ ```
140
+ dfindexeddb db -s SOURCE
108
141
  ```
109
142
 
110
- To parse records from a LevelDB table (.ldb) file, use the following command:
143
+ To parse blocks / physical records/ write batches / internal key records from a
144
+ LevelDB log (.log) file, use the following command, specifying the type (block,
145
+ physical_records, etc) via the `-t` option. By default, internal key records are parsed:
111
146
 
112
147
  ```
113
- $ dfleveldb ldb -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,records}]
148
+ $ dfleveldb log -s SOURCE [-t {blocks,physical_records,write_batches,parsed_internal_key}]
149
+ ```
114
150
 
115
- options:
116
- -h, --help show this help message and exit
117
- -s SOURCE, --source SOURCE
118
- The source leveldb file
119
- -o {json,jsonl,repr}, --output {json,jsonl,repr}
120
- Output format. Default is json
121
- -t {blocks,records}, --structure_type {blocks,records}
122
- Parses the specified structure. Default is records.
151
+ To parse blocks / records from a LevelDB table (.ldb) file, use the following
152
+ command, specifying the type (blocks, records) via the `-t` option. By
153
+ default, records are parsed:
154
+
155
+ ```
156
+ $ dfleveldb ldb -s SOURCE [-t {blocks,records}]
123
157
  ```
124
158
 
125
- To parse version edit records from a Descriptor (MANIFEST) file:
159
+ To parse version edit records from a Descriptor (MANIFEST) file, use the
160
+ following command:
126
161
 
127
162
  ```
128
163
  $ dfleveldb descriptor -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,physical_records,versionedit} | -v]