ctf_pwn/io/payload/
mod.rs

1mod builder;
2mod payloads;
3
4pub(crate) use builder::*;
5pub(crate) use payloads::*;
6
7use crate::io::payload::builder::PayloadBuilder;
8use crate::io::payload::payloads::Initial;
9use crate::io::{AsyncCacheRead, PipeError, PipeRead, PipeReadExt, PipeWrite, PipeWriteExt};
10
11pub trait PayloadAction: Clone {
12    type ReturnType: Clone;
13
14    async fn execute<T: PipeRead + PipeWrite + Unpin + Send>(
15        &self,
16        pipe: &mut T,
17    ) -> Result<Self::ReturnType, PipeError>;
18}
19
20#[derive(Clone)]
21pub struct Payload {}
22
23#[derive(Clone)]
24pub struct UnknownArch;
25#[derive(Clone)]
26pub struct X86;
27#[derive(Clone)]
28pub struct X64;
29
30impl Payload {
31    pub fn builder() -> PayloadBuilder<Initial, UnknownArch> {
32        PayloadBuilder::<Initial, UnknownArch>::new()
33    }
34}