bruteforce
This commit is contained in:
parent
b1c6045d9e
commit
a8691c5ca2
4 changed files with 146 additions and 0 deletions
52
Cargo.lock
generated
52
Cargo.lock
generated
|
@ -2,6 +2,37 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 4
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.8.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-epoch",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.9.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-utils"
|
||||||
|
version = "0.8.21"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.15.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getopts"
|
name = "getopts"
|
||||||
version = "0.2.21"
|
version = "0.2.21"
|
||||||
|
@ -35,6 +66,26 @@ dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon"
|
||||||
|
version = "1.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"rayon-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon-core"
|
||||||
|
version = "1.12.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-deque",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.100"
|
version = "2.0.100"
|
||||||
|
@ -72,6 +123,7 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getopts",
|
"getopts",
|
||||||
"obfstr",
|
"obfstr",
|
||||||
|
"rayon",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -13,4 +13,13 @@ repository = "https://git.cscherr.de/PlexSheep/rs-base"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
getopts = "0.2.21"
|
getopts = "0.2.21"
|
||||||
obfstr = "0.4.4"
|
obfstr = "0.4.4"
|
||||||
|
rayon = { version = "1.10.0", optional = true }
|
||||||
thiserror = "2.0.12"
|
thiserror = "2.0.12"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "bf"
|
||||||
|
path = "src/bf.rs"
|
||||||
|
required-features = ["rayon"]
|
||||||
|
|
||||||
|
[features]
|
||||||
|
rayon = ["dep:rayon"]
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
EXPORT_DIR="challenge"
|
EXPORT_DIR="challenge"
|
||||||
|
|
||||||
mkdir -p $EXPORT_DIR
|
mkdir -p $EXPORT_DIR
|
||||||
|
rm -rf $EXPORT_DIR/*
|
||||||
cargo build --release --locked
|
cargo build --release --locked
|
||||||
cp ./target/release/timars $EXPORT_DIR/timars
|
cp ./target/release/timars $EXPORT_DIR/timars
|
||||||
strip $EXPORT_DIR/timars
|
strip $EXPORT_DIR/timars
|
||||||
|
|
84
src/bf.rs
Normal file
84
src/bf.rs
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
use std::io;
|
||||||
|
use std::process::Command;
|
||||||
|
use std::sync::atomic::AtomicBool;
|
||||||
|
use std::thread::sleep;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
const IGNORE_LENGTH: &[usize] = &[60usize, 61usize];
|
||||||
|
static WAIT: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
|
fn format_time(hour: i32, minute: i32) -> String {
|
||||||
|
format!("{:02}:{:02}", hour, minute)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn execute(cth: i32, ctm: i32, cfh: i32, cfm: i32, cph: i32, cpm: i32, i: usize) {
|
||||||
|
while WAIT.load(std::sync::atomic::Ordering::SeqCst) {
|
||||||
|
sleep(Duration::from_millis(50));
|
||||||
|
}
|
||||||
|
|
||||||
|
let to = format_time(cth, ctm);
|
||||||
|
let fr = format_time(cfh, cfm);
|
||||||
|
let pa = format_time(cph, cpm);
|
||||||
|
let cmd = format!("./timars -f {} -t {} -p {}", fr, to, pa);
|
||||||
|
|
||||||
|
let output = Command::new("sh")
|
||||||
|
.arg("-c")
|
||||||
|
.arg(&cmd)
|
||||||
|
.output()
|
||||||
|
.expect("Failed to execute command");
|
||||||
|
|
||||||
|
let output_str = String::from_utf8_lossy(&output.stdout);
|
||||||
|
if output.status.success() && IGNORE_LENGTH.contains(&output_str.len()) {
|
||||||
|
if i % 53 == 0 {
|
||||||
|
println!(
|
||||||
|
"to: {} from: {} pause: {} => len: {}",
|
||||||
|
to,
|
||||||
|
fr,
|
||||||
|
pa,
|
||||||
|
output_str.len()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!(
|
||||||
|
"\n\
|
||||||
|
{}\n\
|
||||||
|
{}\n\
|
||||||
|
==================\n\
|
||||||
|
SOMETHING UNUSUAL!\n\
|
||||||
|
LEN: {}\n\
|
||||||
|
",
|
||||||
|
cmd,
|
||||||
|
output_str,
|
||||||
|
output_str.len()
|
||||||
|
);
|
||||||
|
WAIT.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
let mut input = String::new();
|
||||||
|
println!("Input anything to continue");
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut input)
|
||||||
|
.expect("Failed to read input");
|
||||||
|
WAIT.store(false, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let cph = 13; // NOTE: fix pause to 1337 to make it faster
|
||||||
|
let cpm = 37; // in a real ctf, this would be hinted at
|
||||||
|
(0..23).into_par_iter().for_each(|cth| {
|
||||||
|
let mut i = 0;
|
||||||
|
for ctm in 0..60 {
|
||||||
|
for cfh in 0..23 {
|
||||||
|
for cfm in 0..60 {
|
||||||
|
// for cph in 0..23 {
|
||||||
|
// for cpm in 0..60 {
|
||||||
|
execute(cth, ctm, cfh, cfm, cph, cpm, i);
|
||||||
|
i += 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue