add sub utn, decrease verbosity

This commit is contained in:
eta 2022-12-31 15:08:25 +00:00
parent 1bb6e5cff8
commit 7a8648da9c
2 changed files with 4 additions and 12 deletions

View File

@ -71,7 +71,6 @@ fn main() -> anyhow::Result<()> {
let issuer_id = &ticket_str[13..15]; let issuer_id = &ticket_str[13..15];
let ticket_reference = format!("{}{}", issuer_id, &ticket_str[2..11]); let ticket_reference = format!("{}{}", issuer_id, &ticket_str[2..11]);
eprintln!("[+] RSP6 ticket, reference {}", ticket_reference); eprintln!("[+] RSP6 ticket, reference {}", ticket_reference);
eprintln!("[+] Ticket issuer: {}", issuer_id);
let ticket = base26_decode(&ticket_str[15..]); let ticket = base26_decode(&ticket_str[15..]);
let keys = iks let keys = iks
.keys .keys
@ -82,16 +81,7 @@ fn main() -> anyhow::Result<()> {
let message = message.to_bytes_be(); let message = message.to_bytes_be();
if let Some(unpadded) = strip_padding(&message) { if let Some(unpadded) = strip_padding(&message) {
eprintln!("[+] decrypt done!"); eprintln!("[+] decrypt done!");
let ticket_ref_inner = Rsp6Ticket::base64(unpadded, 8, 62); let ticket = Rsp6Ticket::decode(unpadded, issuer_id.into(), ticket_str[11..13].into())?;
let extra_bit = Rsp6Ticket::base64(unpadded, 62, 68);
let inner_data = format!("{}{}", ticket_ref_inner, extra_bit);
let outer_data = &ticket_str[2..12];
if inner_data != outer_data {
eprintln!("[-] checksum mismatch: {} vs {}", inner_data, outer_data);
} else {
eprintln!("[+] checksum ok");
}
let ticket = Rsp6Ticket::decode(unpadded, issuer_id.into())?;
serde_json::to_writer_pretty(std::io::stdout(), &ticket)?; serde_json::to_writer_pretty(std::io::stdout(), &ticket)?;
return Ok(()); return Ok(());
} else { } else {

View File

@ -67,6 +67,7 @@ pub struct Rsp6Ticket {
pub manually_inspect: bool, pub manually_inspect: bool,
pub issuer_id: String, pub issuer_id: String,
pub ticket_reference: String, pub ticket_reference: String,
pub sub_utn: String,
pub checksum: char, pub checksum: char,
pub version: u8, pub version: u8,
pub standard_class: bool, pub standard_class: bool,
@ -144,7 +145,7 @@ impl Rsp6Ticket {
Some(format!("{}{:04}", prefix, (id % 10000))) Some(format!("{}{:04}", prefix, (id % 10000)))
} }
pub fn decode(tkt: &[u8], issuer_id: String) -> anyhow::Result<Self> { pub fn decode(tkt: &[u8], issuer_id: String, sub_utn: String) -> anyhow::Result<Self> {
let bit_tkt = tkt.view_bits::<Msb0>(); let bit_tkt = tkt.view_bits::<Msb0>();
let manually_inspect = bit_tkt[0]; let manually_inspect = bit_tkt[0];
@ -281,6 +282,7 @@ impl Rsp6Ticket {
osi_nlc, osi_nlc,
mystery_flag, mystery_flag,
mystery_header, mystery_header,
sub_utn,
}) })
} }
} }