允许自定义用户名前缀
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
/target
|
/target
|
||||||
|
/.idea
|
||||||
|
|||||||
25
src/main.rs
25
src/main.rs
@@ -3,19 +3,21 @@
|
|||||||
mod bot_socks5;
|
mod bot_socks5;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use tokio::sync::Mutex;
|
use rand::Rng;
|
||||||
|
use reqwest;
|
||||||
|
use serde_json::Value;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use rand::Rng;
|
use tokio::sync::Mutex;
|
||||||
use rand::distributions::Alphanumeric;
|
use crate::utils::generate_username;
|
||||||
use serde_json::Value;
|
|
||||||
use reqwest;
|
|
||||||
|
|
||||||
// 目标的ip地址(暂时不能解析dns)
|
// 目标的ip地址(暂时不能解析dns)
|
||||||
// 理论上你可以把它改成任何支持1.20.1的服务器
|
// 理论上你可以把它改成任何支持1.20.1的服务器
|
||||||
const SERVER_ADDR: &str = "49.70.3.146:33009";
|
const SERVER_ADDR: &str = "49.70.3.146:33009";
|
||||||
// uu代理的api(用来实时获取代理)
|
// uu代理的api(用来实时获取代理)
|
||||||
const UU_URL: &str = "http://uu-proxy.com/api/get_proxies?id=RZ7GS5ZYTA&size=1&schemes=socks5&support_https=false&format=json";
|
const UU_URL: &str = "http://uu-proxy.com/api/get_proxies?id=RZ7GS5ZYTA&size=1&schemes=socks5&support_https=false&format=json";
|
||||||
|
// 用户名的开头
|
||||||
|
const USERNAME_PREFIX: &str = "Nikke_"; // 2 3 3
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
@@ -71,7 +73,7 @@ async fn attack_thread(lock: Arc<Mutex<()>>) -> () {
|
|||||||
let proxy_list: Value = serde_json::from_str(&resp.text().await.unwrap()).unwrap();
|
let proxy_list: Value = serde_json::from_str(&resp.text().await.unwrap()).unwrap();
|
||||||
let proxy = &proxy_list["proxies"].as_array().unwrap()[0];
|
let proxy = &proxy_list["proxies"].as_array().unwrap()[0];
|
||||||
|
|
||||||
let username = generate_string();
|
let username = generate_username();
|
||||||
// 这里用来标记是否需要重启
|
// 这里用来标记是否需要重启
|
||||||
let mut flag = true;
|
let mut flag = true;
|
||||||
|
|
||||||
@@ -102,14 +104,3 @@ async fn attack_thread(lock: Arc<Mutex<()>>) -> () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成一个随机的用户名
|
|
||||||
// author: 通义
|
|
||||||
fn generate_string() -> String {
|
|
||||||
let mut rng = rand::thread_rng();
|
|
||||||
let len = rng.gen_range(5..=10);
|
|
||||||
rng.sample_iter(&Alphanumeric)
|
|
||||||
.take(len)
|
|
||||||
.map(char::from)
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
20
src/utils.rs
20
src/utils.rs
@@ -1,5 +1,10 @@
|
|||||||
// 一些杂七杂八的小东西可以放在这
|
// 一些杂七杂八的小东西可以放在这
|
||||||
|
|
||||||
|
use rand::distributions::Alphanumeric;
|
||||||
|
use rand::Rng;
|
||||||
|
use reqwest;
|
||||||
|
use crate::USERNAME_PREFIX;
|
||||||
|
|
||||||
// 处理json组件(有些TextComponent里面一堆extra看的我头皮发麻,所以整个这个)
|
// 处理json组件(有些TextComponent里面一堆extra看的我头皮发麻,所以整个这个)
|
||||||
pub fn parse_json_component(json: &str) -> String {
|
pub fn parse_json_component(json: &str) -> String {
|
||||||
let data: serde_json::Value = serde_json::from_str(json).unwrap();
|
let data: serde_json::Value = serde_json::from_str(json).unwrap();
|
||||||
@@ -36,4 +41,19 @@ pub fn parse_json_component(json: &str) -> String {
|
|||||||
None => {}
|
None => {}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成一个随机的用户名
|
||||||
|
// author: 通义
|
||||||
|
fn generate_string() -> String {
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
let len = rng.gen_range(5..=10);
|
||||||
|
rng.sample_iter(&Alphanumeric)
|
||||||
|
.take(len)
|
||||||
|
.map(char::from)
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn generate_username() -> String {
|
||||||
|
USERNAME_PREFIX.to_string() + &*generate_string().to_string()
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user