mirror of
https://github.com/freemkv/libfreemkv.git
synced 2026-10-07 18:13:10 +00:00
decrypt: one content-detected decryption stage; keep going past damage
Every input decrypts through one stage that detects its content, with strict stale-CPI handling and partial units only at EOF. Damage no longer ends a rip where usable content remains (E7031, UDF FID, MPLS/CLPI truncation, whole-disc E7032). M2TS output declares tracks in an HDMV PMT and paces PCR; network:// allows LAN and loopback and is_blocked_ip is public; parity goldens pin today's outputs.
This commit is contained in:
@@ -20,13 +20,13 @@ fn css_descramble_sector_roundtrip_via_public_api() {
|
||||
};
|
||||
|
||||
let mut sector = vec![0xAAu8; 2048];
|
||||
// Real scrambled DVD sectors are MPEG-2 PS packs, and the public API now
|
||||
// requires the pack start code as well as the flag bits — byte 0x14 means
|
||||
// something else entirely in an IFO or UDF sector.
|
||||
// A real scrambled DVD-Video pack: pack header, then a PES whose MPEG-2 flags byte (0x14)
|
||||
// carries the scramble bits. Byte 0x14 means something else in an IFO or UDF sector.
|
||||
sector[0x00..0x04].copy_from_slice(&[0x00, 0x00, 0x01, 0xBA]);
|
||||
sector[4] = 0x44; // '01': a 13818-1 pack
|
||||
sector[0x0D] = 0xF8; // pack_stuffing_length 0
|
||||
sector[0x14] = 0x30;
|
||||
sector[0x0E..0x12].copy_from_slice(&[0x00, 0x00, 0x01, 0xE0]);
|
||||
sector[0x14] = 0xB0;
|
||||
sector[0x54..0x59].copy_from_slice(&[0xDE, 0xAD, 0xBE, 0xEF, 0x42]);
|
||||
let original = sector.clone();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user