From b2a0d3e05d03b653cd66b17f8ca64e3f416a563d Mon Sep 17 00:00:00 2001 From: trickster0 Date: Thu, 30 Sep 2021 19:32:38 +0300 Subject: [PATCH] pipes --- Named_Pipe_Client/Cargo.toml | 9 +++++++++ Named_Pipe_Client/src/main.rs | 16 ++++++++++++++++ Named_Pipe_Server/Cargo.toml | 9 +++++++++ Named_Pipe_Server/src/main.rs | 17 +++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 Named_Pipe_Client/Cargo.toml create mode 100644 Named_Pipe_Client/src/main.rs create mode 100644 Named_Pipe_Server/Cargo.toml create mode 100644 Named_Pipe_Server/src/main.rs diff --git a/Named_Pipe_Client/Cargo.toml b/Named_Pipe_Client/Cargo.toml new file mode 100644 index 0000000..c4f8be9 --- /dev/null +++ b/Named_Pipe_Client/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "Named_Pipe_Client" +version = "0.1.0" +edition = "2018" +author = "trickster0" +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +winapi = {version = "0.3.9", features = ["winnt","fileapi","minwindef"]} diff --git a/Named_Pipe_Client/src/main.rs b/Named_Pipe_Client/src/main.rs new file mode 100644 index 0000000..b16af96 --- /dev/null +++ b/Named_Pipe_Client/src/main.rs @@ -0,0 +1,16 @@ +use winapi::um::winnt::{HANDLE,LPCSTR,GENERIC_READ,GENERIC_WRITE}; +use winapi::um::fileapi::{CreateFileA,OPEN_EXISTING,ReadFile}; +use std::ptr::null_mut; + +fn main() { + unsafe { + let mut bytes_read : u32 = 0; + let mut buffer_read = vec![0u8;1024]; + let pipe_name : LPCSTR = "\\\\.\\pipe\\rusttestpipe\0".as_ptr() as *const i8; + let clientpipe : HANDLE = CreateFileA(pipe_name,GENERIC_READ | GENERIC_WRITE,0,null_mut(),OPEN_EXISTING,0,null_mut()); + ReadFile(clientpipe,buffer_read.as_mut_ptr() as *mut winapi::ctypes::c_void,buffer_read.len() as u32,&mut bytes_read,null_mut()); + println!("{}",String::from_utf8_lossy(&mut buffer_read)); + } +} + + diff --git a/Named_Pipe_Server/Cargo.toml b/Named_Pipe_Server/Cargo.toml new file mode 100644 index 0000000..f78c03f --- /dev/null +++ b/Named_Pipe_Server/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "Named_Pipe_Server" +version = "0.1.0" +edition = "2018" +author = "trickster0" +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +winapi = {version = "0.3.9", features = ["winbase","winnt","namedpipeapi","fileapi","winbase"]} diff --git a/Named_Pipe_Server/src/main.rs b/Named_Pipe_Server/src/main.rs new file mode 100644 index 0000000..c8a5ede --- /dev/null +++ b/Named_Pipe_Server/src/main.rs @@ -0,0 +1,17 @@ +use winapi::um::winbase::CreateNamedPipeA; +use winapi::um::winnt::{HANDLE,LPCSTR}; +use winapi::um::namedpipeapi::ConnectNamedPipe; +use winapi::um::fileapi::WriteFile; +use winapi::um::winbase::{PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE}; +use std::ptr::null_mut; + +fn main() { + let mut bytes_written : u32 = 0; + let message = "RUST IS GOOD FOR OFSEC\0" ; + let pipe_name : LPCSTR = "\\\\.\\pipe\\rusttestpipe\0".as_ptr() as *const i8; + let server_pipe : HANDLE = unsafe {CreateNamedPipeA(pipe_name,PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE,1,2048,2048,0,null_mut())}; + unsafe {ConnectNamedPipe(server_pipe,null_mut())}; + println!("Sending message to Pipe"); + unsafe {WriteFile(server_pipe,message.as_ptr() as *const winapi::ctypes::c_void,message.len() as u32,&mut bytes_written,null_mut())}; +} +