feat: added randomization and XOR encoding

This commit is contained in:
Andrew Rioux 2025-02-02 12:21:35 -05:00
parent 0576c4fd3b
commit d8a277e769
Signed by: andrew.rioux
GPG Key ID: 9B8BAC47C17ABB94

View File

@ -48,10 +48,10 @@ pub async fn download_beacon_installer(
State(db): State<AppState> State(db): State<AppState>
) -> Result<impl IntoResponse, crate::error::Error> { ) -> Result<impl IntoResponse, crate::error::Error> {
use rand::{rngs::OsRng, TryRngCore}; use rand::{rngs::OsRng, TryRngCore};
use sparse_actions::payload_types::Parameters_t; use sparse_actions::payload_types::{Parameters_t, XOR_KEY};
let mut parameters_buffer = vec![0u8; std::mem::size_of::<Parameters_t>()]; let mut parameters_buffer = vec![0u8; std::mem::size_of::<Parameters_t>()];
//let _ = OsRng.try_fill_bytes(&mut parameters_buffer); let _ = OsRng.try_fill_bytes(&mut parameters_buffer);
let parameters: &mut Parameters_t = unsafe { std::mem::transmute(parameters_buffer.as_mut_ptr()) }; let parameters: &mut Parameters_t = unsafe { std::mem::transmute(parameters_buffer.as_mut_ptr()) };
@ -135,6 +135,11 @@ pub async fn download_beacon_installer(
let installer_bytes = get_installer(&template.operating_system).await?; let installer_bytes = get_installer(&template.operating_system).await?;
let parameters_bytes = parameters_buffer
.iter()
.map(|b| b ^ (XOR_KEY as u8))
.collect::<Vec<_>>();
use axum::http::header; use axum::http::header;
Ok(( Ok((
@ -157,7 +162,7 @@ pub async fn download_beacon_installer(
], ],
[ [
&installer_bytes[..], &installer_bytes[..],
&parameters_buffer[..] &parameters_bytes[..]
].concat() ].concat()
)) ))
} }