Added AES and structured stuff for BasicInfo
This commit is contained in:
parent
fdd36fc42e
commit
59ff696184
@ -14,4 +14,7 @@ mime = "0.3.16"
|
|||||||
openssl = "0.10.52"
|
openssl = "0.10.52"
|
||||||
rustls = "0.20.8"
|
rustls = "0.20.8"
|
||||||
rustls-pemfile = "1.0.2"
|
rustls-pemfile = "1.0.2"
|
||||||
serde = {version = "1.0.152", features = ["derive"]}
|
aes = "0.8.2"
|
||||||
|
cfb-mode = "0.8.2"
|
||||||
|
serde = {version="1.0.163",features = ['derive']}
|
||||||
|
serde_json = {version = "1.0.96", features = ['std']}
|
||||||
|
65
src/main.rs
65
src/main.rs
@ -5,13 +5,25 @@
|
|||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
use actix_web::{get, http::header::ContentType, post, web, App, HttpRequest, HttpResponse, HttpServer};
|
use actix_web::{get, http::header::ContentType, post, web, App, HttpRequest, HttpResponse, HttpServer};
|
||||||
|
use aes::cipher::{AsyncStreamCipher, KeyIvInit};
|
||||||
use log::{debug, error, info, log_enabled, Level};
|
use log::{debug, error, info, log_enabled, Level};
|
||||||
use rustls::{Certificate, PrivateKey, ServerConfig};
|
use rustls::{Certificate, PrivateKey, ServerConfig};
|
||||||
use rustls_pemfile::{certs, pkcs8_private_keys};
|
use rustls_pemfile::{certs, pkcs8_private_keys};
|
||||||
use serde::Deserialize;
|
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
|
|
||||||
|
type Aes128CfbEnc = cfb_mode::Encryptor<aes::Aes128>;
|
||||||
|
|
||||||
|
struct BasicInfo {
|
||||||
|
BaseUrl: String,
|
||||||
|
DownloadUrl: String,
|
||||||
|
Key: String,
|
||||||
|
Iv: String,
|
||||||
|
TenpoIndex: u8,
|
||||||
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! resp {
|
macro_rules! resp {
|
||||||
($str:expr) => {
|
($str:expr) => {
|
||||||
@ -19,6 +31,24 @@ macro_rules! resp {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! print_valid_chars {
|
||||||
|
($slice:expr) => {{
|
||||||
|
print!("{{{{");
|
||||||
|
let mut valid_chars = String::new();
|
||||||
|
for &byte in $slice {
|
||||||
|
if let Ok(chr) = std::str::from_utf8(&[byte]) {
|
||||||
|
if chr.is_ascii() && &byte >= &32 {
|
||||||
|
valid_chars.push_str(chr);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
valid_chars.push_str(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("{}}}}}", valid_chars);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
#[get("/alive/303807/Alive.txt")]
|
#[get("/alive/303807/Alive.txt")]
|
||||||
async fn alive() -> HttpResponse {
|
async fn alive() -> HttpResponse {
|
||||||
resp!("")
|
resp!("")
|
||||||
@ -67,28 +97,47 @@ x-img=https://static.wikia.nocookie.net/houkai-star-rail/images/1/18/Character_M
|
|||||||
x-ranking=http://10.3.0.53/ranking/ranking.php
|
x-ranking=http://10.3.0.53/ranking/ranking.php
|
||||||
ticket=9251859b560b33b031516d05c2ef3c28"
|
ticket=9251859b560b33b031516d05c2ef3c28"
|
||||||
);
|
);
|
||||||
HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).append_header(ContentType(mime::TEXT_PLAIN)).body(res)
|
resp!(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/server/data.php")]
|
#[get("/server/data.php")]
|
||||||
async fn server_data() -> HttpResponse {
|
async fn server_data() -> HttpResponse {
|
||||||
HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).body("count=0\nnexttime=0\n")
|
resp!("count=0\nnexttime=0\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/basicinfo")]
|
#[post("/basicinfo")]
|
||||||
async fn basicinfo() -> HttpResponse {
|
async fn basicinfo() -> HttpResponse {
|
||||||
HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).body("Harder to do")
|
// Encrypt or something first...
|
||||||
|
// Very possible PGP is needed I think/? or aes portion ... idk
|
||||||
|
resp!("Harder to do")
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn index(req: actix_web::HttpRequest) -> HttpResponse {
|
async fn index(req: actix_web::HttpRequest) -> HttpResponse {
|
||||||
println!("~");
|
println!("---");
|
||||||
//println!("Method: {:?}", req.method());
|
println!("Method: {:?}", req.method());
|
||||||
//println!("Host: {:?}", req.head().uri.host());
|
println!("Host: {:?}", req.head().uri.host());
|
||||||
//println!("Path: {:?}", req.path());
|
println!("Path: {:?}", req.path());
|
||||||
dbg!(&req);
|
dbg!(&req);
|
||||||
HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).body("shit")
|
HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).body("shit")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn _aes_encrypt(_plaintext: String) {
|
||||||
|
// Create an instance of your JSON object
|
||||||
|
let data: MyData = MyData { name: "Alice".to_string(), age: 30 };
|
||||||
|
let plaintext: String = serde_json::to_string(&data).unwrap();
|
||||||
|
dbg!(&plaintext);
|
||||||
|
// Crypto constants
|
||||||
|
let key: &[u8] = "0123456789012345".as_bytes();
|
||||||
|
let iv: &[u8] = "0123456789012345".as_bytes();
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
let mut ciphertext = plaintext.as_bytes().to_vec();
|
||||||
|
Aes128CfbEnc::new(key.into(), iv.into()).encrypt(&mut ciphertext);
|
||||||
|
|
||||||
|
// Print
|
||||||
|
print_valid_chars!(ciphertext.iter());
|
||||||
|
}
|
||||||
|
|
||||||
fn load_rustls_config() -> rustls::ServerConfig {
|
fn load_rustls_config() -> rustls::ServerConfig {
|
||||||
// init server config builder with safe defaults
|
// init server config builder with safe defaults
|
||||||
let config = ServerConfig::builder().with_safe_defaults().with_no_client_auth();
|
let config = ServerConfig::builder().with_safe_defaults().with_no_client_auth();
|
||||||
|
Loading…
Reference in New Issue
Block a user