1 Commits

Author SHA1 Message Date
MechaCat02
4ed8fadd4c feat: show decrypted session key in inspect output
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 22:24:23 +01:00
3 changed files with 8 additions and 2 deletions

2
Cargo.lock generated
View File

@@ -288,7 +288,7 @@ dependencies = [
[[package]] [[package]]
name = "xex2tractor" name = "xex2tractor"
version = "0.6.0" version = "0.6.1"
dependencies = [ dependencies = [
"aes", "aes",
"cbc", "cbc",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "xex2tractor" name = "xex2tractor"
version = "0.6.0" version = "0.6.1"
edition = "2024" edition = "2024"
description = "A tool for extracting and inspecting Xbox 360 XEX2 executable files" description = "A tool for extracting and inspecting Xbox 360 XEX2 executable files"
license = "MIT" license = "MIT"

View File

@@ -1,4 +1,5 @@
/// Pretty-print formatting for parsed XEX2 structures. /// Pretty-print formatting for parsed XEX2 structures.
use crate::crypto;
use crate::header::Xex2Header; use crate::header::Xex2Header;
use crate::optional::{ use crate::optional::{
format_hex_bytes, format_rating, format_timestamp, CompressionInfo, HeaderKey, OptionalHeaders, format_hex_bytes, format_rating, format_timestamp, CompressionInfo, HeaderKey, OptionalHeaders,
@@ -266,6 +267,11 @@ pub fn display_security_info(security: &SecurityInfo) {
"AES Key (encrypted): {}", "AES Key (encrypted): {}",
format_hex_bytes(&security.aes_key) format_hex_bytes(&security.aes_key)
); );
let session_key = crypto::derive_session_key(&security.aes_key);
println!(
"AES Key (decrypted): {}",
format_hex_bytes(&session_key)
);
if security.export_table == 0 { if security.export_table == 0 {
println!("Export Table: 0x00000000 (none)"); println!("Export Table: 0x00000000 (none)");