From 088c1dbfa0a4d8f74296c1fbf88cac81fd67a7b3 Mon Sep 17 00:00:00 2001 From: alterwain Date: Thu, 6 Feb 2025 01:40:55 +0300 Subject: [PATCH] modified: outdb modified: src/main.rs --- outdb | Bin 886 -> 886 bytes src/main.rs | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/outdb b/outdb index 59bfd87b98755825098baa2100120bee7510a4e3..da2cdc4e3ca93ff8399021e8ba31a049280c3894 100644 GIT binary patch delta 77 zcmeyy_Kl4*HzO$}j)8&U#6-?gRs|qKVe&*q@riLf6PJmw8Za_2xNO|7&&ZfI`8{JQ gquboXcm_GeZH08OqGMgRZ+ delta 77 zcmeyy_Kl4*HzO$}g@J+L+(gb&Ruv#aW%5Ku@riLf6PJmwnlLgjcx>FS&&U`y`8{JQ gquJz8CRfIY$+Ma2SxtayQzpwZ>oY1$_GeZH08ZW%DgXcg diff --git a/src/main.rs b/src/main.rs index e03961c..6aaad15 100644 --- a/src/main.rs +++ b/src/main.rs @@ -393,7 +393,7 @@ fn x_args_to_bytes(args: &Vec) -> Vec { let h = bincode::serialize(&ChunkHeader { chunk_type: ChunkType::StringTypes.into(), end_of_chunk: 0x18, - children_count: 0x18 + s.len() as u32 + children_count: 16 + 0x18 + s.len() as u32 }).unwrap(); b = [h, b, s].concat(); return b; @@ -422,7 +422,7 @@ fn to_bytes(xdb: XDatabase) -> Vec { for u in 0..playlists.len() { let playlist = playlists.get(u).unwrap(); let mut args = x_args_to_bytes(&playlist.args); - pl_bytes.append(&mut generate_header(ChunkType::Playlist, std::mem::size_of::(),args.len())); + pl_bytes.append(&mut generate_header(ChunkType::Playlist, 36,args.len())); pl_bytes.append(&mut bincode::serialize(&playlist.data).unwrap()); pl_bytes.append(&mut args); } @@ -438,7 +438,7 @@ fn to_bytes(xdb: XDatabase) -> Vec { for u in 0..albums.len() { let album = albums.get(u).unwrap(); let mut args = x_args_to_bytes(&album.args); - al_bytes.append(&mut generate_header(ChunkType::AlbumItem, std::mem::size_of::(),args.len())); + al_bytes.append(&mut generate_header(ChunkType::AlbumItem, 20,args.len())); al_bytes.append(&mut bincode::serialize(&album.data).unwrap()); al_bytes.append(&mut args); } @@ -454,7 +454,7 @@ fn to_bytes(xdb: XDatabase) -> Vec { for u in 0..tracks.len() { let track = tracks.get(u).unwrap(); let mut args = x_args_to_bytes(&track.args); - tr_bytes.append(&mut generate_header(ChunkType::TrackItem, std::mem::size_of::(),args.len())); + tr_bytes.append(&mut generate_header(ChunkType::TrackItem, 292,args.len())); tr_bytes.append(&mut bincode::serialize(&track.data).unwrap()); tr_bytes.append(&mut args); } @@ -467,8 +467,10 @@ fn to_bytes(xdb: XDatabase) -> Vec { } } } - bytes = [bincode::serialize(&xdb.data.unwrap()).unwrap(), bytes].concat(); - bytes = [generate_header(ChunkType::Database, std::mem::size_of::(), bytes.len()), bytes].concat(); + let sdb = bincode::serialize(&xdb.data.unwrap()).unwrap(); + let sdb_len = sdb.len(); + bytes = [sdb, bytes].concat(); + bytes = [generate_header(ChunkType::Database, sdb_len, bytes.len()), bytes].concat(); bytes } @@ -479,7 +481,7 @@ fn main() { .filter(None, LevelFilter::Info) .init(); - let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap(); + let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap(); // D:\\Documents\\iTunes\\iTunesDB let mut buf = Vec::new(); match f.read_to_end(&mut buf) { Ok(n) => {