Python Bindings for udmp-parser
udmp-parser is a cross-platform C++ parser library for Windows user minidumps written by 0vercl0k. The Python bindings were added by hugsy. Refer to the project page on Github for documentation, issues and pull requests.
The library supports Intel 32-bit / 64-bit dumps and provides read access to things like:
- The thread list and their context records,
- The virtual memory,
- The loaded modules.
Installing from PyPI
The easiest way is simply to:
pip install udmp_parser
Usage
The Python API was built around the C++ code so the names were preserved. Everything lives within the module udmp_parser.
Note: For convenience, a simple pure Python script was added to generate minidumps ready to use:
$ python -i src/python/tests/utils.py
>>> pid, dmppath = generate_minidump_from_process_name("winver.exe")
Minidump generated successfully: PID=3232 -> minidump-winver.exe-1687024880.dmp
>>> pid
3232
>>> dmppath
WindowsPath('minidump-winver.exe-1687024880.dmp'))
Parsing a minidump object is as simple as:
>>> import udmp_parser
>>> udmp_parser.version.major, udmp_parser.version.minor, udmp_parser.version.release
(0, 4, '')
>>> dmp = udmp_parser.UserDumpParser()
>>> dmp.Parse(pathlib.Path("C:/temp/rundll32.dmp"))
True
Feature-wise, here are some examples of usage:
Threads
Get a hashmap of threads (as {TID: ThreadObject}), access their information:
>>> threads = dmp.Threads()
>>> len(threads)
14
>>> threads
{5292: Thread(Id=0x14ac, SuspendCount=0x1, Teb=0x2e8000),
5300: Thread(Id=0x14b4, SuspendCount=0x1, Teb=0x2e5000),
5316: Thread(Id=0x14c4, SuspendCount=0x1, Teb=0x2df000),
3136: Thread(Id=0xc40, SuspendCount=0x1, Teb=0x2ee000),
4204: Thread(Id=0x106c, SuspendCount=0x1, Teb=0x309000),
5328: Thread(Id=0x14d0, SuspendCount=0x1, Teb=0x2e2000),
1952: Thread(Id=0x7a0, SuspendCount=0x1, Teb=0x2f7000),
3888: Thread(Id=0xf30, SuspendCount=0x1, Teb=0x2eb000),
1760: Thread(Id=0x6e0, SuspendCount=0x1, Teb=0x2f4000),
792: Thread(Id=0x318, SuspendCount=0x1, Teb=0x300000),
1972: Thread(Id=0x7b4, SuspendCount=0x1, Teb=0x2fa000),
1228: Thread(Id=0x4cc, SuspendCount=0x1, Teb=0x2fd000),
516: Thread(Id=0x204, SuspendCount=0x1, Teb=0x303000),
2416: Thread(Id=0x970, SuspendCount=0x1, Teb=0x306000)}
And access invidual thread, including their register context:
>>> thread = threads[5292]
>>> print(f"RIP={thread.Context.Rip:#x} RBP={thread.Context.Rbp:#x} RSP={thread.Context.Rsp:#x}")
RIP=0x7ffc264b0ad4 RBP=0x404fecc RSP=0x7de628
Modules
Get a hashmap of modules (as {address: ModuleObject}), access their information:
>>> modules = dmp.Modules()
>>> modules
{1572864: Module_t(BaseOfImage=0x180000, SizeOfImage=0x3000, ModuleName=C:\Windows\SysWOW64\sfc.dll),
10813440: Module_t(BaseOfImage=0xa50000, SizeOfImage=0x14000, ModuleName=C:\Windows\SysWOW64\rundll32.exe),
1929052160: Module_t(BaseOfImage=0x72fb0000, SizeOfImage=0x11000, ModuleName=C:\Windows\SysWOW64\wkscli.dll),
1929183232: Module_t(BaseOfImage=0x72fd0000, SizeOfImage=0x52000, ModuleName=C:\Windows\SysWOW64\mswsock.dll),
1929576448: Module_t(BaseOfImage=0x73030000, SizeOfImage=0xf000, ModuleName=C:\Windows\SysWOW64\browcli.dll),
1929641984: Module_t(BaseOfImage=0x73040000, SizeOfImage=0xa000, ModuleName=C:\Windows\SysWOW64\davhlpr.dll),
1929707520: Module_t(BaseOfImage=0x73050000, SizeOfImage=0x19000, ModuleName=C:\Windows\SysWOW64\davclnt.dll),
1929838592: Module_t(BaseOfImage=0x73070000, SizeOfImage=0x18000, ModuleName=C:\Windows\SysWOW64\ntlanman.dll),
[...]
140720922427392: Module_t(BaseOfImage=0x7ffc24980000, SizeOfImage=0x83000, ModuleName=C:\Windows\System32\wow64win.dll),
140720923017216: Module_t(BaseOfImage=0x7ffc24a10000, SizeOfImage=0x59000, ModuleName=C:\Windows\System32\wow64.dll),
140720950280192: Module_t(BaseOfImage=0x7ffc26410000, SizeOfImage=0x1f8000, ModuleName=C:\Windows\System32\ntdll.dll)}
Access directly module info:
>>> ntdll_modules = [mod for addr, mod in dmp.Modules().items() if mod.ModuleName.lower().endswith("ntdll.dll")]
>>> len(ntdll_modules)
2
>>> for ntdll in ntdll_modules:
print(f"{ntdll.ModuleName=} {ntdll.BaseOfImage=:#x} {ntdll.SizeOfImage=:#x}")
ntdll.ModuleName='C:\\Windows\\SysWOW64\\ntdll.dll' ntdll.BaseOfImage=0x77430000 ntdll.SizeOfImage=0x1a4000
ntdll.ModuleName='C:\\Windows\\System32\\ntdll.dll' ntdll.BaseOfImage=0x7ffc26410000 ntdll.SizeOfImage=0x1f8000
A convenience function under udmp_parser.UserDumpParser.ReadMemory() can be used to directly read memory from the dump. The signature of the function is as follow: def ReadMemory(Address: int, Size: int) -> list[int]. So to dump for instance the wow64 module, it would go as follow:
>>> wow64 = [mod for addr, mod in dmp.Modules().items() if mod.ModuleName.lower() == r"c:\windows\system32\wow64.dll"][0]
>>> print(str(wow64))
Module_t(BaseOfImage=0x7ffc24a10000, SizeOfImage=0x59000, ModuleName=C:\Windows\System32\wow64.dll)
>>> wow64_module = bytearray(dmp.ReadMemory(wow64.BaseOfImage, wow64.SizeOfImage))
>>> assert wow64_module[:2] == b'MZ'
>>> import hexdump
>>> hexdump.hexdump(wow64_module[:128])
00000000: 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 MZ..............
00000010: B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@.......
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 ................
00000040: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 ........!..L.!Th
00000050: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F is program canno
00000060: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 t be run in DOS
00000070: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 mode....$.......
Memory
The memory blocks can also be enumerated in a hashmap {address: MemoryBlock}.
>>> memory = dmp.Memory()
>>> len(memory)
0x260
>>> memory
[...]
0x7ffc26410000: [MemBlock_t(BaseAddress=0x7ffc26410000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x1000)],
0x7ffc26411000: [MemBlock_t(BaseAddress=0x7ffc26411000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x11c000)],
0x7ffc2652d000: [MemBlock_t(BaseAddress=0x7ffc2652d000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x49000)],
0x7ffc26576000: [MemBlock_t(BaseAddress=0x7ffc26576000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x1000)],
0x7ffc26577000: [MemBlock_t(BaseAddress=0x7ffc26577000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x2000)],
0x7ffc26579000: [MemBlock_t(BaseAddress=0x7ffc26579000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x9000)],
0x7ffc26582000: [MemBlock_t(BaseAddress=0x7ffc26582000, AllocationBase=0x7ffc26410000, AllocationProtect=0x80, RegionSize=0x86000)],
0x7ffc26608000: [MemBlock_t(BaseAddress=0x7ffc26608000, AllocationBase=0x0, AllocationProtect=0x0, RegionSize=0x3d99e8000)]}
To facilitate the parsing in a human-friendly manner, some helper functions are provided:
udmp_parser.utils.TypeToString: convert the region type to its meaning (from MSDN)udmp_parser.utils.StateToString: convert the region state to its meaning (from MSDN)udmp_parser.utils.ProtectionToString: convert the region protection to its meaning (from MSDN)
This allows to search and filter in a more comprehensible way:
# Collect only executable memory regions
>>> exec_regions = [region for _, region in dmp.Memory().items() if "PAGE_EXECUTE_READ" in udmp_parser.utils.ProtectionToString(region.Protect)]
# Pick any, disassemble code using capstone
>>> exec_region = exec_regions[-1]
>>> mem = dmp.ReadMemory(exec_region.BaseAddress, 0x100)
>>> for insn in cs.disasm(bytearray(mem), exec_region.BaseAddress):
print(f"{insn=}")
insn=<CsInsn 0x7ffc26582000 [cc]: int3 >
insn=<CsInsn 0x7ffc26582001 [cc]: int3 >
insn=<CsInsn 0x7ffc26582002 [cc]: int3 >
insn=<CsInsn 0x7ffc26582003 [cc]: int3 >
insn=<CsInsn 0x7ffc26582004 [cc]: int3 >
insn=<CsInsn 0x7ffc26582005 [cc]: int3 >
insn=<CsInsn 0x7ffc26582006 [cc]: int3 >
insn=<CsInsn 0x7ffc26582007 [cc]: int3 >
insn=<CsInsn 0x7ffc26582008 [cc]: int3 >
insn=<CsInsn 0x7ffc26582009 [cc]: int3 >
insn=<CsInsn 0x7ffc2658200a [cc]: int3 >
insn=<CsInsn 0x7ffc2658200b [cc]: int3 >
insn=<CsInsn 0x7ffc2658200c [cc]: int3 >
insn=<CsInsn 0x7ffc2658200d [cc]: int3 >
insn=<CsInsn 0x7ffc2658200e [cc]: int3 >
insn=<CsInsn 0x7ffc2658200f [cc]: int3 >
insn=<CsInsn 0x7ffc26582010 [48895c2410]: mov qword ptr [rsp + 0x10], rbx>
insn=<CsInsn 0x7ffc26582015 [4889742418]: mov qword ptr [rsp + 0x18], rsi>
insn=<CsInsn 0x7ffc2658201a [57]: push rdi>
insn=<CsInsn 0x7ffc2658201b [4156]: push r14>
insn=<CsInsn 0x7ffc2658201d [4157]: push r15>
[...]
Authors
- Axel '@0vercl0k' Souchet
Contributors
Metadata
Release files for udmp-parser 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 4.8 MB
Release files / udmp_parser-0.7.0-cp313-abi3-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp313-abi3-win_amd64.whl |
|---|---|
| Size | 104.0 kB |
| Tags | CPython 3.13 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fa783b77d4aae026ce69178ecdc75cc825d0ce804ff604d60970969b3ed8d93f
|
|
BLAKE2b-256 checksum How to use checksums |
45a97e61f923285ba530b65863415b420f3a481c55ae06ddf0f1b31d9b808aa4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp313-abi3-win32.whl
| Download URL | udmp_parser-0.7.0-cp313-abi3-win32.whl |
|---|---|
| Size | 97.5 kB |
| Tags | CPython 3.13 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
875a55b8d21c7d92b256f5df9eecc65b6a0f240f87b62f38c1c94f63844747b5
|
|
BLAKE2b-256 checksum How to use checksums |
2eac11399d0ae2e4a5ed828696f0743160b254da89ae6674af39c04d8dd5b646
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 241.0 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
1167f538a5f2dd5f42d41cda5cb6fe0ea86455d1ad68346a10f543be342280ab
|
|
BLAKE2b-256 checksum How to use checksums |
2c4312ac98313cf8fdb4285e82468e629fe78ca8cfda331eb8ae4e64d07c72e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp313-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp313-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 259.9 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
e618e1e593dd40a55f11ad0c235220c8a7ffce7105548299a79c19fd1caead9e
|
|
BLAKE2b-256 checksum How to use checksums |
898c438afc021aeab4c32c1b4ba0152f3b0b84f0a39662a62082075e639cab78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp313-abi3-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp313-abi3-macosx_10_15_x86_64.whl |
|---|---|
| Size | 90.3 kB |
| Tags | CPython 3.13 abi3 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
13ec2c914f4ab5adb0f63cc9b5de12d2b6a1a1df9557bf1e4ef1e9a072bdd6c4
|
|
BLAKE2b-256 checksum How to use checksums |
bb64215f52bd4ac78d7f20ff1a79b1097ad06193158880a7861713b18c2bf6b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp312-cp312-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 104.0 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
91457388f5444790bddda0b731212246e64106d0d18677e03c327d89b1ae920f
|
|
BLAKE2b-256 checksum How to use checksums |
0e68388fe1198e1131d0ad6e3a898b3a8af67b8caa79f3088cb935f2d78c2f71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp312-cp312-win32.whl
| Download URL | udmp_parser-0.7.0-cp312-cp312-win32.whl |
|---|---|
| Size | 97.5 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
f90f8921ef7e4cb678728cb0dc86a1976a54b46fe4c831db94305ac73cb28c13
|
|
BLAKE2b-256 checksum How to use checksums |
349fabfb97574c4464c1fa5518d5f7ea525b2e1732e151795152813d41acb44c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 241.0 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
008e33fcda20e8eabe6641b1a72da46f6c9c1e1ea5e2fd22d2871d4f3a333ade
|
|
BLAKE2b-256 checksum How to use checksums |
2ffd9d8a20d15d2d13eacc027b6ccbdd78b1fb8b9a55fbb1a3fe629048123df5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 260.0 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
f4f08d70236f34e556d74175a9d66a16ce58ef6eaf17b860090698dcf741b6da
|
|
BLAKE2b-256 checksum How to use checksums |
78eb680650bc6602673bb40b23c8aa681b8301482dbac3b2e51dca0a3eadfc90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp312-cp312-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp312-cp312-macosx_10_15_x86_64.whl |
|---|---|
| Size | 90.3 kB |
| Tags | CPython 3.12 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
86a14c132d8a3a5dd5fc8417d26e816185468bbbf4e5d66805e3050825ddd127
|
|
BLAKE2b-256 checksum How to use checksums |
ead07a9f953591c87141e23a4382ff09cf967f3a96c2cb80c53ad07c3e86dc95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp311-cp311-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 104.5 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1f2b9e72999cb8af46a32525017358ee67dd1b50d38fc2c61c4b8a21ee3f69c7
|
|
BLAKE2b-256 checksum How to use checksums |
0f1954f067b7061b49ccd33cfb882c396661e20aa7d5ac5d68f43f3118b29b3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp311-cp311-win32.whl
| Download URL | udmp_parser-0.7.0-cp311-cp311-win32.whl |
|---|---|
| Size | 97.7 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
794f03d1e5a9975b985a8fd26f1604bbf99bb37f4cc621af6194522bfb0eed80
|
|
BLAKE2b-256 checksum How to use checksums |
6f4514f0c95f1e4db056adc2729688afd402b6b6252ecdfd09e9651f968b6a84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 242.0 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c51dce289758520f2601e1ddc319f8a4732c8c6343ae0c049fafaa8e60b0b72
|
|
BLAKE2b-256 checksum How to use checksums |
fde2231337887d63acd8ff9579281ee85092369cdc42c33d362bfff3ab2b1158
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 260.9 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
dfa5f469a9fe796bcae59d0a91a0e645ac318a4b449922030bb0c7fbab1aaaf3
|
|
BLAKE2b-256 checksum How to use checksums |
143b83db65138cbc1fb29cb348c6e2a3ce827658d0e6c086cafd14128c7fd257
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp311-cp311-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp311-cp311-macosx_10_15_x86_64.whl |
|---|---|
| Size | 90.6 kB |
| Tags | CPython 3.11 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
3078fb7e70f54d829f0969919c3675c24317a76ba52242b9c5137b4422c3b877
|
|
BLAKE2b-256 checksum How to use checksums |
111a632c26944982b5bd6acd91eb7efa684f78acc980fd250c7c090e7892b088
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp310-cp310-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 104.3 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fe21ede934f611b3fb468903ff6decaafa76556f6e91bd2a76ae285ee6fd13ec
|
|
BLAKE2b-256 checksum How to use checksums |
7f7497b6245fbdb5c2fe4237380632cce54c1b79691b1b3cc6dc46c0fe117c1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp310-cp310-win32.whl
| Download URL | udmp_parser-0.7.0-cp310-cp310-win32.whl |
|---|---|
| Size | 97.5 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
aa05e15a6965c639dda5adf6daaaa03771d9db442eef5add4e7fdfd7cb342361
|
|
BLAKE2b-256 checksum How to use checksums |
94dc96f5815387c22c1e21d28eaa24c341c2cbb201d69e64a2e2f170798cbe3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 241.7 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f7bd12b7f4f98f8d54d924d6158128d7a1f25795b46b575a8bcd982bd1bc3043
|
|
BLAKE2b-256 checksum How to use checksums |
8d646e3795d35a4a0ff1a29d1868bcb3528f8c4c2567eea15dfa74c47da4f8ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 260.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
1025fd48b5de82a783cbb2dad16ccca1d6701662b95cbfc2f11ae4b09362de95
|
|
BLAKE2b-256 checksum How to use checksums |
5077ce6505b46c2f7725b378fbd3ecefb6a3092a0ea08060035b55f5309d7c1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp310-cp310-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp310-cp310-macosx_10_15_x86_64.whl |
|---|---|
| Size | 90.3 kB |
| Tags | CPython 3.10 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
687d64991af15e0ef0edf0b2a614d463821eb4da51eb1f0d9c921dde06509f10
|
|
BLAKE2b-256 checksum How to use checksums |
10a01ef5e8d25dcb3cb59b30ca34824098c7b6f591ba6c395b02dc30a6249711
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp39-cp39-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 104.7 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3078bf84ce41267ce48b0cdbaa734ee0875a9e10c20b342f65d47da677a54ba4
|
|
BLAKE2b-256 checksum How to use checksums |
fdb4fa4db3c82878efcc8147b534988f3fd3f4b62ae0f8cabcc02758674e3c27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp39-cp39-win32.whl
| Download URL | udmp_parser-0.7.0-cp39-cp39-win32.whl |
|---|---|
| Size | 98.0 kB |
| Tags | CPython 3.9 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
097e0c0dc03ba43c0c16a5c2853c34dfae3a63b82db17809a89b5f4f38238d02
|
|
BLAKE2b-256 checksum How to use checksums |
10940b17ca2979b2777c5fb1b35529fd6670a9fc60152122d740b752bd573e26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 241.9 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
82c13ed923ea8e0fe83299eb6475cc2106ddcb08dff1bbd0036091d5587813e7
|
|
BLAKE2b-256 checksum How to use checksums |
47b632ac3556d671778ae69caf8fb32662d67c58d5e1cc7baa2979d9164c0db3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 260.8 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
e6a42a929e03ff051b3d3121a5efe700071726efbd46ada0eaca6b923b1624b4
|
|
BLAKE2b-256 checksum How to use checksums |
45e9ee9f5109961306b5c8b7c7d4c01d7f23a906d1c612c71e207918b42b9cb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp39-cp39-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp39-cp39-macosx_10_15_x86_64.whl |
|---|---|
| Size | 90.5 kB |
| Tags | CPython 3.9 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
0ff65c317ceefff6c317e156b701d868757b3bd51809852019f6531d084bf56b
|
|
BLAKE2b-256 checksum How to use checksums |
f3e185ea5515368feca611b31cefb54db03bdaec12da5d56466751504c27edb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp38-cp38-win_amd64.whl
| Download URL | udmp_parser-0.7.0-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 104.1 kB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d9d9ef1ec96502a8b0ad098892b47d06159ad3ee0cee3bb199877f16dd1b6c16
|
|
BLAKE2b-256 checksum How to use checksums |
6803697f4b2f8e7819308db36d9c1e786aae2fa9754a5843cdab77ba0c80f6db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp38-cp38-win32.whl
| Download URL | udmp_parser-0.7.0-cp38-cp38-win32.whl |
|---|---|
| Size | 97.3 kB |
| Tags | CPython 3.8 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
65b43ef90186564293bfcf48761cf0ea00249241e2668ece87766837a6eab60d
|
|
BLAKE2b-256 checksum How to use checksums |
675dfe8301b876047f259ca118dd5937516cf489f99df5adad3133a88ca845ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 241.1 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
37ccf6d96817407c8c3a73712e6eb782cb0daa0f41beff6da94e90ad3b6c8cb7
|
|
BLAKE2b-256 checksum How to use checksums |
0a85276f6bce9d00f440a548d180d754315a3cfeb162231f8dcd6e74ea9a32ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | udmp_parser-0.7.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 259.7 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
52bc653e83e68d1e5a2e87677bb65fce4948e67ae272879da5742fa4de6c0df4
|
|
BLAKE2b-256 checksum How to use checksums |
e47d1e3a4b31e238cf37f0826d6c571e1782e017d8e9e7bfa35bd213b2c1ce84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / udmp_parser-0.7.0-cp38-cp38-macosx_10_15_x86_64.whl
| Download URL | udmp_parser-0.7.0-cp38-cp38-macosx_10_15_x86_64.whl |
|---|---|
| Size | 89.5 kB |
| Tags | CPython 3.8 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
3b614ad068945978ace20c0bf178a2d7655661ab2d572da0b87fa746e5a3490a
|
|
BLAKE2b-256 checksum How to use checksums |
701c72acd710f048c0747fd8fc87be740e96e5c8a0444fc68dce33f9e81dade2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Security for udmp-parser 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.