mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-28 07:47:02 -05:00
34 lines
688 B
Rust
34 lines
688 B
Rust
// Password Safe V3
|
|
// Only a small part of the file is unencrypted.
|
|
|
|
#pragma endian little
|
|
#pragma description Password Safe V3
|
|
#pragma magic [ 50 57 53 33 ] @ 0x00
|
|
|
|
import std.mem;
|
|
import std.sys;
|
|
|
|
struct Prologue {
|
|
u8 SALT[32];
|
|
u32 ITER;
|
|
u8 HPP[32] [[name("H(P')")]];
|
|
u8 B1[16];
|
|
u8 B2[16];
|
|
u8 B3[16];
|
|
u8 B4[16];
|
|
u8 IV[16];
|
|
};
|
|
|
|
struct EOF {
|
|
u8 HMAC[32];
|
|
};
|
|
|
|
char magic[4] @ 0x00;
|
|
std::assert(magic == "PWS3", "Invalid file: bad tag!");
|
|
char marker[16] @ std::mem::size() - 48;
|
|
std::assert(marker == "PWS3-EOFPWS3-EOF", "Invalid file: bad end marker!");
|
|
|
|
Prologue prologue @ 0x04;
|
|
u8 HMAC[32] @ std::mem::size() - 32;
|
|
|
|
EOF eof @ std::mem::size() - 48; |