ssl_srv-cli

This commit is contained in:
trickster0
2021-09-30 20:13:12 +03:00
parent b2a0d3e05d
commit ccebdce1ff
5 changed files with 98 additions and 1 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ use std::ptr::null_mut;
fn main() {
let mut bytes_written : u32 = 0;
let message = "RUST IS GOOD FOR OFSEC\0" ;
let message = "RUST IS GOOD FOR OFFSEC\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())};
+9
View File
@@ -0,0 +1,9 @@
[package]
name = "tcp_ssl_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]
openssl = { version = "0.10.26", features = ["vendored"] }
+29
View File
@@ -0,0 +1,29 @@
use std::io::{Read, Write};
use std::net;
use std::net::{Ipv4Addr, TcpStream, SocketAddr};
use std::process::{Command, Stdio};
use std::str;
use std::thread;
use std::path::Path;
use openssl::ssl::{SslMethod, SslConnector};
use std::ffi::OsStr;
fn main() {
let mut build = SslConnector::builder(SslMethod::tls()).unwrap();
build.set_verify(openssl::ssl::SslVerifyMode::NONE);
let connector = build.build();
let addr = Ipv4Addr::new(127,0,0,1);
let sockettest = SocketAddr::from((addr,4443));
let convertsocket = sockettest.to_string();
let convertip = addr.to_string();
let stream = TcpStream::connect(&convertsocket).unwrap();
let mut stream = connector.connect(&convertip,stream).unwrap();
loop {
let mut recv = [0 as u8; 1024];
stream.read(&mut recv);
let my_string = String::from_utf8_lossy(&recv);
let mut splitted = my_string.split("\r");
println!("{:?}",splitted.next().unwrap());
stream.write_all(b"RUST IS GOOD FOR OFFSEC");
}
}
+9
View File
@@ -0,0 +1,9 @@
[package]
name = "tcp_ssl_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]
openssl = { version = "0.10.26", features = ["vendored"] }
+50
View File
@@ -0,0 +1,50 @@
use std::io;
use std::env;
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::thread;
use openssl::ssl::{SslMethod, SslAcceptor, SslStream, SslFiletype};
use std::sync::Arc;
fn main() {
let args: Vec<String> = env::args().collect();
let port = &args[1];
let mut complete = "0.0.0.0:".to_string();
complete.push_str(&port);
let mut acceptor = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap();
acceptor.set_private_key_file("server.key", SslFiletype::PEM).unwrap();
acceptor.set_certificate_chain_file("server.crt").unwrap();
acceptor.check_private_key().unwrap();
let acceptor = Arc::new(acceptor.build());
let listener2 = TcpListener::bind(&complete).unwrap();
println!("[+] Server listening on port {}",&port);
for stream2 in listener2.incoming() {
match stream2 {
Ok(stream2) => {
println!("New connection: {}", stream2.peer_addr().unwrap());
let acceptor = acceptor.clone();
thread::spawn(move || {
let stream2 = acceptor.accept(stream2).unwrap();
handle_client(stream2)
});
}
Err(e) => {
println!("Error: {}", e);
}
}
}
}
fn handle_client(mut stream: SslStream<TcpStream>) {
loop {
print!("Input: ");
io::stdout().flush().expect("failed to get it");
let mut input = String::new();
io::stdin().read_line(&mut input);
stream.write(&mut input.as_bytes()).unwrap();
let mut data = [0 as u8; 100];
stream.read(&mut data);
let string = String::from_utf8_lossy(&data);
println!("{}", string);
}
}