dfindexeddb 20240519__py3-none-any.whl → 20241105__py3-none-any.whl
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.
- dfindexeddb/indexeddb/chromium/definitions.py +5 -0
- dfindexeddb/indexeddb/chromium/record.py +181 -95
- dfindexeddb/indexeddb/chromium/v8.py +30 -61
- dfindexeddb/indexeddb/cli.py +62 -22
- dfindexeddb/indexeddb/firefox/definitions.py +143 -0
- dfindexeddb/indexeddb/firefox/gecko.py +600 -0
- dfindexeddb/indexeddb/firefox/record.py +180 -0
- dfindexeddb/indexeddb/safari/definitions.py +7 -7
- dfindexeddb/indexeddb/safari/webkit.py +31 -98
- dfindexeddb/indexeddb/types.py +71 -0
- dfindexeddb/leveldb/cli.py +18 -11
- dfindexeddb/leveldb/descriptor.py +24 -7
- dfindexeddb/leveldb/ldb.py +5 -2
- dfindexeddb/leveldb/log.py +11 -5
- dfindexeddb/leveldb/plugins/manager.py +2 -2
- dfindexeddb/utils.py +2 -2
- dfindexeddb/version.py +1 -1
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/METADATA +12 -6
- dfindexeddb-20241105.dist-info/RECORD +41 -0
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/WHEEL +1 -1
- dfindexeddb-20240519.dist-info/RECORD +0 -37
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/AUTHORS +0 -0
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/LICENSE +0 -0
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/entry_points.txt +0 -0
- {dfindexeddb-20240519.dist-info → dfindexeddb-20241105.dist-info}/top_level.txt +0 -0
|
@@ -41,7 +41,10 @@ class InternalKey:
|
|
|
41
41
|
|
|
42
42
|
@classmethod
|
|
43
43
|
def FromDecoder(
|
|
44
|
-
cls,
|
|
44
|
+
cls,
|
|
45
|
+
decoder: utils.LevelDBDecoder,
|
|
46
|
+
base_offset: int = 0
|
|
47
|
+
) -> InternalKey:
|
|
45
48
|
"""Decodes an InternalKey from the current position of a LevelDBDecoder.
|
|
46
49
|
|
|
47
50
|
Args:
|
|
@@ -91,7 +94,10 @@ class NewFile(utils.FromDecoderMixin):
|
|
|
91
94
|
|
|
92
95
|
@classmethod
|
|
93
96
|
def FromDecoder(
|
|
94
|
-
cls,
|
|
97
|
+
cls,
|
|
98
|
+
decoder: utils.LevelDBDecoder,
|
|
99
|
+
base_offset: int = 0
|
|
100
|
+
) -> NewFile:
|
|
95
101
|
"""Decodes a NewFile from the current position of a LevelDBDecoder.
|
|
96
102
|
|
|
97
103
|
Args:
|
|
@@ -131,7 +137,9 @@ class CompactPointer(utils.FromDecoderMixin):
|
|
|
131
137
|
|
|
132
138
|
@classmethod
|
|
133
139
|
def FromDecoder(
|
|
134
|
-
cls,
|
|
140
|
+
cls,
|
|
141
|
+
decoder: utils.LevelDBDecoder,
|
|
142
|
+
base_offset: int = 0
|
|
135
143
|
) -> CompactPointer:
|
|
136
144
|
"""Decodes a CompactPointer from the current position of a LevelDBDecoder.
|
|
137
145
|
|
|
@@ -162,7 +170,10 @@ class DeletedFile(utils.FromDecoderMixin):
|
|
|
162
170
|
|
|
163
171
|
@classmethod
|
|
164
172
|
def FromDecoder(
|
|
165
|
-
cls,
|
|
173
|
+
cls,
|
|
174
|
+
decoder: utils.LevelDBDecoder,
|
|
175
|
+
base_offset: int = 0
|
|
176
|
+
) -> DeletedFile:
|
|
166
177
|
"""Decodes a DeletedFile from the current position of a LevelDBDecoder.
|
|
167
178
|
|
|
168
179
|
Args:
|
|
@@ -204,7 +215,10 @@ class VersionEdit(utils.FromDecoderMixin):
|
|
|
204
215
|
|
|
205
216
|
@classmethod
|
|
206
217
|
def FromDecoder(
|
|
207
|
-
cls,
|
|
218
|
+
cls,
|
|
219
|
+
decoder: utils.LevelDBDecoder,
|
|
220
|
+
base_offset: int = 0
|
|
221
|
+
) -> VersionEdit:
|
|
208
222
|
"""Decodes a VersionEdit from the current position of a LevelDBDecoder.
|
|
209
223
|
|
|
210
224
|
Args:
|
|
@@ -332,6 +346,7 @@ class FileReader:
|
|
|
332
346
|
VersionEdit
|
|
333
347
|
"""
|
|
334
348
|
buffer = bytearray()
|
|
349
|
+
offset = None
|
|
335
350
|
for physical_record in self.GetPhysicalRecords():
|
|
336
351
|
if (physical_record.record_type ==
|
|
337
352
|
definitions.LogFilePhysicalRecordType.FULL):
|
|
@@ -382,7 +397,9 @@ class FileReader:
|
|
|
382
397
|
version_edit_offset=version_edit.offset,
|
|
383
398
|
last_sequence=version_edit.last_sequence)
|
|
384
399
|
|
|
385
|
-
def GetLatestVersion(self) -> LevelDBVersion:
|
|
400
|
+
def GetLatestVersion(self) -> Optional[LevelDBVersion]:
|
|
386
401
|
"""Returns the latest LevelDBVersion instance."""
|
|
387
|
-
|
|
402
|
+
latest = None
|
|
403
|
+
for version in self.GetVersions():
|
|
404
|
+
latest = version
|
|
388
405
|
return latest
|
dfindexeddb/leveldb/ldb.py
CHANGED
|
@@ -46,7 +46,10 @@ class KeyValueRecord:
|
|
|
46
46
|
|
|
47
47
|
@classmethod
|
|
48
48
|
def FromDecoder(
|
|
49
|
-
cls,
|
|
49
|
+
cls,
|
|
50
|
+
decoder: utils.LevelDBDecoder,
|
|
51
|
+
block_offset: int,
|
|
52
|
+
shared_key: bytes
|
|
50
53
|
) -> Tuple[KeyValueRecord, bytes]:
|
|
51
54
|
"""Decodes a ldb key value record.
|
|
52
55
|
|
|
@@ -259,4 +262,4 @@ class FileReader:
|
|
|
259
262
|
A tuple of key and value as bytes.
|
|
260
263
|
"""
|
|
261
264
|
for record in self.GetKeyValueRecords():
|
|
262
|
-
yield
|
|
265
|
+
yield record.key, record.value
|
dfindexeddb/leveldb/log.py
CHANGED
|
@@ -98,7 +98,9 @@ class WriteBatch(utils.FromDecoderMixin):
|
|
|
98
98
|
|
|
99
99
|
@classmethod
|
|
100
100
|
def FromDecoder(
|
|
101
|
-
cls,
|
|
101
|
+
cls,
|
|
102
|
+
decoder: utils.LevelDBDecoder,
|
|
103
|
+
base_offset: int = 0
|
|
102
104
|
) -> WriteBatch:
|
|
103
105
|
"""Parses a WriteBatch from a binary stream.
|
|
104
106
|
|
|
@@ -132,10 +134,11 @@ class PhysicalRecord(utils.FromDecoderMixin):
|
|
|
132
134
|
"""A physical record from a leveldb log file.
|
|
133
135
|
|
|
134
136
|
Attributes:
|
|
135
|
-
|
|
137
|
+
base_offset: the base offset.
|
|
136
138
|
checksum: the record checksum.
|
|
137
139
|
length: the length of the record in bytes.
|
|
138
|
-
|
|
140
|
+
offset: the record offset.
|
|
141
|
+
record_type: the record type.
|
|
139
142
|
contents: the record contents.
|
|
140
143
|
contents_offset: the offset of where the record contents are stored.
|
|
141
144
|
"""
|
|
@@ -151,7 +154,9 @@ class PhysicalRecord(utils.FromDecoderMixin):
|
|
|
151
154
|
|
|
152
155
|
@classmethod
|
|
153
156
|
def FromDecoder(
|
|
154
|
-
cls,
|
|
157
|
+
cls,
|
|
158
|
+
decoder: utils.LevelDBDecoder,
|
|
159
|
+
base_offset: int = 0
|
|
155
160
|
) -> Optional[PhysicalRecord]:
|
|
156
161
|
"""Decodes a PhysicalRecord from the current position of a LevelDBDecoder.
|
|
157
162
|
|
|
@@ -237,7 +242,7 @@ class FileReader:
|
|
|
237
242
|
A Log FileReader provides read-only sequential iteration of serialized
|
|
238
243
|
structures in a leveldb logfile. These structures include:
|
|
239
244
|
* blocks (Block)
|
|
240
|
-
*
|
|
245
|
+
* physical records (PhysicalRecord)
|
|
241
246
|
* batches (WriteBatch) and
|
|
242
247
|
* key/value records (ParsedInternalKey).
|
|
243
248
|
|
|
@@ -288,6 +293,7 @@ class FileReader:
|
|
|
288
293
|
WriteBatch
|
|
289
294
|
"""
|
|
290
295
|
buffer = bytearray()
|
|
296
|
+
offset = None
|
|
291
297
|
for physical_record in self.GetPhysicalRecords():
|
|
292
298
|
if (physical_record.record_type ==
|
|
293
299
|
definitions.LogFilePhysicalRecordType.FULL):
|
|
@@ -49,8 +49,8 @@ class LeveldbPluginManager:
|
|
|
49
49
|
"""
|
|
50
50
|
try:
|
|
51
51
|
return cls._class_registry[plugin_name]
|
|
52
|
-
except KeyError:
|
|
53
|
-
raise KeyError(f'Plugin not found: {plugin_name}')
|
|
52
|
+
except KeyError as exc:
|
|
53
|
+
raise KeyError(f'Plugin not found: {plugin_name}') from exc
|
|
54
54
|
|
|
55
55
|
@classmethod
|
|
56
56
|
def RegisterPlugin(cls, plugin_class: Type[interface.LeveldbPlugin]):
|
dfindexeddb/utils.py
CHANGED
|
@@ -213,7 +213,7 @@ T = TypeVar('T')
|
|
|
213
213
|
|
|
214
214
|
|
|
215
215
|
class FromDecoderMixin:
|
|
216
|
-
"""A mixin for parsing dataclass attributes using a
|
|
216
|
+
"""A mixin for parsing dataclass attributes using a StreamDecoder."""
|
|
217
217
|
|
|
218
218
|
@classmethod
|
|
219
219
|
def FromDecoder(
|
|
@@ -268,7 +268,7 @@ def asdict(obj, *, dict_factory=dict): # pylint: disable=invalid-name
|
|
|
268
268
|
class name under the __type__ attribute name.
|
|
269
269
|
"""
|
|
270
270
|
if not dataclasses.is_dataclass(obj):
|
|
271
|
-
raise TypeError(
|
|
271
|
+
raise TypeError('asdict() should be called on dataclass instances')
|
|
272
272
|
return _asdict_inner(obj, dict_factory)
|
|
273
273
|
|
|
274
274
|
|
dfindexeddb/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dfindexeddb
|
|
3
|
-
Version:
|
|
3
|
+
Version: 20241105
|
|
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>
|
|
@@ -230,8 +230,7 @@ analysis of IndexedDB and LevelDB files.
|
|
|
230
230
|
|
|
231
231
|
It parses LevelDB, IndexedDB and JavaScript structures from these files without
|
|
232
232
|
requiring native libraries. (Note: only a subset of IndexedDB key types and
|
|
233
|
-
JavaScript types for Safari and Chromium-based browsers are currently supported.
|
|
234
|
-
Firefox is under development).
|
|
233
|
+
JavaScript types for Firefox, Safari and Chromium-based browsers are currently supported).
|
|
235
234
|
|
|
236
235
|
The content of IndexedDB files is dependent on what a web application stores
|
|
237
236
|
locally/offline using the web browser's
|
|
@@ -313,6 +312,13 @@ options:
|
|
|
313
312
|
|
|
314
313
|
#### Examples:
|
|
315
314
|
|
|
315
|
+
To parse IndexedDB records from an sqlite file for Firefox and output the
|
|
316
|
+
results as JSON, use the following command:
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
dfindexeddb db -s SOURCE --format firefox -o json
|
|
320
|
+
```
|
|
321
|
+
|
|
316
322
|
To parse IndexedDB records from an sqlite file for Safari and output the
|
|
317
323
|
results as JSON-L, use the following command:
|
|
318
324
|
|
|
@@ -376,7 +382,7 @@ To parse records from a LevelDB folder, use the following command:
|
|
|
376
382
|
dfleveldb db -s SOURCE
|
|
377
383
|
```
|
|
378
384
|
|
|
379
|
-
To parse records from a LevelDB folder, and use the sequence number to
|
|
385
|
+
To parse records from a LevelDB folder, and use the sequence number to
|
|
380
386
|
determine recovered records and output as JSON, use the
|
|
381
387
|
following command:
|
|
382
388
|
|
|
@@ -409,8 +415,8 @@ $ dfleveldb descriptor -s SOURCE [-o {json,jsonl,repr}] [-t {blocks,physical_rec
|
|
|
409
415
|
|
|
410
416
|
#### Plugins
|
|
411
417
|
|
|
412
|
-
To apply a plugin parser for a leveldb file/folder, add the
|
|
413
|
-
`--plugin [Plugin Name]` argument. Currently, there is support for the
|
|
418
|
+
To apply a plugin parser for a leveldb file/folder, add the
|
|
419
|
+
`--plugin [Plugin Name]` argument. Currently, there is support for the
|
|
414
420
|
following artifacts:
|
|
415
421
|
|
|
416
422
|
| Plugin Name | Artifact Name |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
dfindexeddb/__init__.py,sha256=KPYL9__l8od6_OyDfGRTgaJ6iy_fqIgZ-dS2S-e3Rac,599
|
|
2
|
+
dfindexeddb/errors.py,sha256=PNpwyf_lrPc4TE77oAakX3mu5D_YcP3f80wq8Y1LkvY,749
|
|
3
|
+
dfindexeddb/utils.py,sha256=_Pee0qy3w6d-SWx59wVTq4PBUBZ1F-DlBkSquLNr3r4,9997
|
|
4
|
+
dfindexeddb/version.py,sha256=NO-YKjHh-Fvil-z8ILAhBuyQ0UHcdHiPVKJwuRbDvvE,751
|
|
5
|
+
dfindexeddb/indexeddb/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
6
|
+
dfindexeddb/indexeddb/cli.py,sha256=bjSQ0L-sQlYOk7v7_L8_XkrSBLXnPIcEhVfQWrxj6Ws,7533
|
|
7
|
+
dfindexeddb/indexeddb/types.py,sha256=Gx9b9TxDCPoz3Xc8J_NPfDxCLoyX5z_lLcSlO4W433k,1892
|
|
8
|
+
dfindexeddb/indexeddb/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
dfindexeddb/indexeddb/chromium/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
10
|
+
dfindexeddb/indexeddb/chromium/blink.py,sha256=kwhPfzcWOOxYyXUWfV6f4grQwXzS2ABFaNVMIVhol3c,32268
|
|
11
|
+
dfindexeddb/indexeddb/chromium/definitions.py,sha256=KruZLv3U_93Sc_qedhd6hd9vuRCy6nkovnUtqW6Kz4o,8842
|
|
12
|
+
dfindexeddb/indexeddb/chromium/record.py,sha256=5HAtTTyIgw1gTJBq419Zq0w1aImd3nUkwAZByVCMuaM,48362
|
|
13
|
+
dfindexeddb/indexeddb/chromium/v8.py,sha256=rxvrqhHVww-tLsaqk4P0FJtnLR9FI9lAkgXmigBJW2Y,21557
|
|
14
|
+
dfindexeddb/indexeddb/firefox/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
15
|
+
dfindexeddb/indexeddb/firefox/definitions.py,sha256=xkvlYaaFR2IDQBGJGnrhVIOUce6VuMq-kWXe2CLX3Aw,4306
|
|
16
|
+
dfindexeddb/indexeddb/firefox/gecko.py,sha256=sPPBYSq3Mnjv_somkrZJx1IRxTMwmgRbBVj7jwuBtXQ,19598
|
|
17
|
+
dfindexeddb/indexeddb/firefox/record.py,sha256=yB7dYiwzCx1c67Sf6ViMSX51SCrcgU8OBUaVYczqTik,5766
|
|
18
|
+
dfindexeddb/indexeddb/safari/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
19
|
+
dfindexeddb/indexeddb/safari/definitions.py,sha256=zCXF06ugcAmYTDPumL_VqNB-TgnrPfmAyUYz3wsBwmQ,2795
|
|
20
|
+
dfindexeddb/indexeddb/safari/record.py,sha256=bzoMSgpXs2SsEOKHjVh9tkJDZtzGkQByq3G5dK_Yd7Q,8010
|
|
21
|
+
dfindexeddb/indexeddb/safari/webkit.py,sha256=oTZNPVIIIVG7iGyR-aJhvwaenwb1bsFrDZRmFaZRYxs,20481
|
|
22
|
+
dfindexeddb/leveldb/__init__.py,sha256=KPYL9__l8od6_OyDfGRTgaJ6iy_fqIgZ-dS2S-e3Rac,599
|
|
23
|
+
dfindexeddb/leveldb/cli.py,sha256=cuMMJAC1bLR_dL1WT2rrKt7ayqArj_D1Q_7ockYi9wk,9970
|
|
24
|
+
dfindexeddb/leveldb/definitions.py,sha256=lPW_kjc47vyoGOoEWfgWvKcpGbN-0h7XXwCeMoFmYKk,1486
|
|
25
|
+
dfindexeddb/leveldb/descriptor.py,sha256=5P-dCLp0qDNHrRbCF9yvuUj1u0B_KhQEVAWfuRwe0Wo,12355
|
|
26
|
+
dfindexeddb/leveldb/ldb.py,sha256=R6wQN5r0h_BpdFvZ2mIsz6rRNWU_2JozeQdl4uRuOBk,8103
|
|
27
|
+
dfindexeddb/leveldb/log.py,sha256=YtXqwy_qrA2_PDG-119oHQkDykXNn6TG4Vr285dTWgo,9480
|
|
28
|
+
dfindexeddb/leveldb/record.py,sha256=j7ZnU6VDVcYVpJRGFRb5Sr2edhC3aGp3U0kPNcoZgng,11912
|
|
29
|
+
dfindexeddb/leveldb/utils.py,sha256=RgEEZ7Z35m3CcOUypAiViQSzKjBgSXZ3aeJhQjY3H9w,3748
|
|
30
|
+
dfindexeddb/leveldb/plugins/__init__.py,sha256=RoC6tRkq8FhqIaFs6jwu1fao_qaSvlSfIFxQVjWregI,690
|
|
31
|
+
dfindexeddb/leveldb/plugins/chrome_notifications.py,sha256=-dyb_AJbUPE2wPJg_Y1Ns5CMtg4udi9Fqo5WKh6f3Z4,5354
|
|
32
|
+
dfindexeddb/leveldb/plugins/interface.py,sha256=QlNEvVvU8K9ChE2kblM97cOvXwvmCh9NuSf2b6WwezQ,1257
|
|
33
|
+
dfindexeddb/leveldb/plugins/manager.py,sha256=Slcj3l3E4ObDdaZeylUv7NldgWgYv6AMgsNl8vanDTc,2155
|
|
34
|
+
dfindexeddb/leveldb/plugins/notification_database_data_pb2.py,sha256=DCPZHbyq2szLgrBprOKrJKycKJma8Z_SnAQM6Jx9bZg,4389
|
|
35
|
+
dfindexeddb-20241105.dist-info/AUTHORS,sha256=QbvjbAom57fpEkekkCVFUj0B9KUMGraR510aUMBC-PE,286
|
|
36
|
+
dfindexeddb-20241105.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
37
|
+
dfindexeddb-20241105.dist-info/METADATA,sha256=rMt3-NhkLi4FW2KOEBn6O5nfrKxVNmNV1nNIBPR5c2U,18972
|
|
38
|
+
dfindexeddb-20241105.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
39
|
+
dfindexeddb-20241105.dist-info/entry_points.txt,sha256=WG9YNLZ9lBx4Q9QF6wS4dZdZfADT3Zs4_-MV5TcA0ls,102
|
|
40
|
+
dfindexeddb-20241105.dist-info/top_level.txt,sha256=X9OTaub1c8S_JJ7g-f8JdkhhdiZ4x1j4eni1hdUCwE4,12
|
|
41
|
+
dfindexeddb-20241105.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
dfindexeddb/__init__.py,sha256=KPYL9__l8od6_OyDfGRTgaJ6iy_fqIgZ-dS2S-e3Rac,599
|
|
2
|
-
dfindexeddb/errors.py,sha256=PNpwyf_lrPc4TE77oAakX3mu5D_YcP3f80wq8Y1LkvY,749
|
|
3
|
-
dfindexeddb/utils.py,sha256=NEqnBNgAmSrZ7iwhEZx8PYlDrT8c-NnTLbm86ZLsOsc,9998
|
|
4
|
-
dfindexeddb/version.py,sha256=PzaqD9kWSx3q6RDQLgClQ7dmnrp2h8nqJcq5jprK2uY,751
|
|
5
|
-
dfindexeddb/indexeddb/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
6
|
-
dfindexeddb/indexeddb/cli.py,sha256=WeOaQXFZglkI9Mwc97rCnVsCX32Dw0CgMQX3RKutwIA,6339
|
|
7
|
-
dfindexeddb/indexeddb/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
dfindexeddb/indexeddb/chromium/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
9
|
-
dfindexeddb/indexeddb/chromium/blink.py,sha256=kwhPfzcWOOxYyXUWfV6f4grQwXzS2ABFaNVMIVhol3c,32268
|
|
10
|
-
dfindexeddb/indexeddb/chromium/definitions.py,sha256=1a-AmHVZ95uDB6se_fdarwJR8q0tFMQNh2xrZ2-VxN8,8739
|
|
11
|
-
dfindexeddb/indexeddb/chromium/record.py,sha256=LIuTwwQeQbn6CBXdo0AZZHounOWcnXRg6W082yxmNBo,47578
|
|
12
|
-
dfindexeddb/indexeddb/chromium/v8.py,sha256=NsbMgA6nRcAfdLg6CFwWadwsDS6TJ95-4MrgphaTuLw,22102
|
|
13
|
-
dfindexeddb/indexeddb/firefox/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
14
|
-
dfindexeddb/indexeddb/safari/__init__.py,sha256=kExXSVBCTKCD5BZJkdMfUMqGksH-DMJxP2_lI0gq-BE,575
|
|
15
|
-
dfindexeddb/indexeddb/safari/definitions.py,sha256=nW8MmYx9Ob86W4pxm4QD4Xvr5QjoV34-U7wDhm2GIr0,2779
|
|
16
|
-
dfindexeddb/indexeddb/safari/record.py,sha256=bzoMSgpXs2SsEOKHjVh9tkJDZtzGkQByq3G5dK_Yd7Q,8010
|
|
17
|
-
dfindexeddb/indexeddb/safari/webkit.py,sha256=SmmwuJKF8NfHCiAaz1Zc1LsVm6IF3bTkaEzi6M0-HdM,21969
|
|
18
|
-
dfindexeddb/leveldb/__init__.py,sha256=KPYL9__l8od6_OyDfGRTgaJ6iy_fqIgZ-dS2S-e3Rac,599
|
|
19
|
-
dfindexeddb/leveldb/cli.py,sha256=e2C94FSP28dh83FWQXD5N44ymUDwkfFeX0Tfk9YLCTo,9913
|
|
20
|
-
dfindexeddb/leveldb/definitions.py,sha256=lPW_kjc47vyoGOoEWfgWvKcpGbN-0h7XXwCeMoFmYKk,1486
|
|
21
|
-
dfindexeddb/leveldb/descriptor.py,sha256=WR3irG16oIE6VbaP9UPnzOD3KlHR8GYFnoeG6ySJUzU,12211
|
|
22
|
-
dfindexeddb/leveldb/ldb.py,sha256=mN-M7PLtE_VLZCbCbzRgjkSezbMUhgDjgWgPgIxJ1jM,8087
|
|
23
|
-
dfindexeddb/leveldb/log.py,sha256=ofw0r2f_3Ll5oHzssvp61nmjhIPdt3tmb9UeNiGLHXk,9401
|
|
24
|
-
dfindexeddb/leveldb/record.py,sha256=j7ZnU6VDVcYVpJRGFRb5Sr2edhC3aGp3U0kPNcoZgng,11912
|
|
25
|
-
dfindexeddb/leveldb/utils.py,sha256=RgEEZ7Z35m3CcOUypAiViQSzKjBgSXZ3aeJhQjY3H9w,3748
|
|
26
|
-
dfindexeddb/leveldb/plugins/__init__.py,sha256=RoC6tRkq8FhqIaFs6jwu1fao_qaSvlSfIFxQVjWregI,690
|
|
27
|
-
dfindexeddb/leveldb/plugins/chrome_notifications.py,sha256=-dyb_AJbUPE2wPJg_Y1Ns5CMtg4udi9Fqo5WKh6f3Z4,5354
|
|
28
|
-
dfindexeddb/leveldb/plugins/interface.py,sha256=QlNEvVvU8K9ChE2kblM97cOvXwvmCh9NuSf2b6WwezQ,1257
|
|
29
|
-
dfindexeddb/leveldb/plugins/manager.py,sha256=jisYyks3OQQQUVACoGcWN81UCGQEa537YvYL7v3CiFs,2139
|
|
30
|
-
dfindexeddb/leveldb/plugins/notification_database_data_pb2.py,sha256=DCPZHbyq2szLgrBprOKrJKycKJma8Z_SnAQM6Jx9bZg,4389
|
|
31
|
-
dfindexeddb-20240519.dist-info/AUTHORS,sha256=QbvjbAom57fpEkekkCVFUj0B9KUMGraR510aUMBC-PE,286
|
|
32
|
-
dfindexeddb-20240519.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
33
|
-
dfindexeddb-20240519.dist-info/METADATA,sha256=aDy87_6iqVwvkSI4teKm-Sq8DKb6GHpuydePrZXsydA,18818
|
|
34
|
-
dfindexeddb-20240519.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
35
|
-
dfindexeddb-20240519.dist-info/entry_points.txt,sha256=WG9YNLZ9lBx4Q9QF6wS4dZdZfADT3Zs4_-MV5TcA0ls,102
|
|
36
|
-
dfindexeddb-20240519.dist-info/top_level.txt,sha256=X9OTaub1c8S_JJ7g-f8JdkhhdiZ4x1j4eni1hdUCwE4,12
|
|
37
|
-
dfindexeddb-20240519.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|