Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cctype>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<initializer_list>
- #include<dirent.h>
- #include<fcntl.h>
- #include<grp.h>
- #include<linux/rtc.h>
- #include<net/if.h>
- #include<netinet/in.h>
- #include<spawn.h>
- #include<sys/mount.h>
- #include<sys/reboot.h>
- #include<sys/resource.h>
- #include<sys/socket.h>
- #include<sys/stat.h>
- #include<sys/swap.h>
- #include<sys/syscall.h>
- #include<sys/utsname.h>
- #include<sys/wait.h>
- #include<unistd.h>
- using namespace std;
- #define exec(...)do{const char*const c[]={__VA_ARGS__,0};execvp(*c,(char*const*)c);}while(0)
- #define run(...)do{const char*const c[]={__VA_ARGS__,0};posix_spawnp(0,*c,0,0,(char*const*)c,environ);}while(0)
- static auto open2(const char*a,int b){return open(a,b|O_CLOEXEC,S_IRUSR|S_IWUSR);}
- int main(){
- const auto xlk="/tmp/.X0-lock",hor="/root",hou="/home/xxx",_0="0",_1="1";const auto pol=100000;
- for(auto i=(const char*const[]){"/dev/pts","devpts","gid=5,mode=600","/dev/shm","tmpfs","mode=1777,size=2g","/proc","proc","hidepid=2","/sys","sysfs",0,0};*i;i+=3)
- mount(0,*i,i[1],MS_MGC_VAL|MS_NOEXEC|MS_NOSUID,i[2]);
- auto ti=open2("/dev/shm/init.log",O_CREAT|O_RDWR);
- dup2(ti,STDERR_FILENO);
- dup2(ti,STDOUT_FILENO);
- dup2(open2("/dev/null",0),STDIN_FILENO);
- char ts[100];dirent*ent;
- auto dir=opendir("/sys/fs/ext4");
- while((ent=readdir(dir))&&memcmp(ent->d_name,"sd",2));
- snprintf(ts,sizeof ts,"/dev/%s",ent->d_name);
- run("/usr/bin/e2fsck","-fvy",ts);
- utsname unm;
- uname(&unm);
- snprintf(ts,sizeof ts,"/lib/modules/%s/extra/nvidia.ko",unm.release);
- syscall(SYS_finit_module,open2(ts,0),"NVreg_ModifyDeviceFiles=0",0);
- setsid();
- umask(S_IRWXG|S_IRWXO);
- for(auto i=(const rlim_t[]){RLIMIT_MEMLOCK,0,RLIMIT_NPROC,300,0};*i;i+=2)
- setrlimit(*i,&(const rlimit&){i[1],i[1]});
- for(auto i=(const char*const[]){"DBUS_SESSION_BUS_ADDRESS",_0,"DISPLAY",":0","__GL_SYNC_TO_VBLANK",_0,"HOME",hou,"LADSPA_PATH","/usr/lib/ladspa","LANG","ru_RU.UTF-8","NO_AT_BRIDGE",_1,"PATH","/usr/bin:/opt/bin",0};*i;i+=2)
- setenv(*i,i[1],1);
- ti=0;
- wait(&ti);
- if(ti<2)
- mount(0,"/",0,MS_MGC_VAL|MS_LAZYTIME|MS_NOATIME|MS_REMOUNT,"dioread_nolock,errors=remount-ro,lazytime,nobarrier,noblock_validity");
- else{
- sync();
- reboot(RB_AUTOBOOT);}
- remove(xlk);
- if(!fork()){
- const gid_t grp[]={1000,10};
- chdir(hou);
- setgroups(sizeof grp/sizeof*grp,grp);
- setgid(*grp);
- setuid(*grp);
- while(access(xlk,F_OK))
- usleep(pol);
- for(const auto&i:(const char*const[][6]){
- {"/usr/bin/openbox",0},
- //skip
- })posix_spawnp(0,*i,0,0,(char*const*)i,environ);
- return 0;}
- run("/usr/lib/xorg-server/Xorg","-noreset","-novtswitch","vt1","-config","/root/.config/xorg.conf");
- for(const auto&i:{"/run/metalog.pid","/run/ppp0.pid"})
- remove(i);
- chdir(hor);
- setenv("HOME",hor,1);
- ti=socket(AF_INET,SOCK_CLOEXEC|SOCK_DGRAM,IPPROTO_IP);
- ioctl(ti,SIOCSIFFLAGS,&(const ifreq&){"eth0",IFF_RUNNING|IFF_UP|IFF_BROADCAST|IFF_MULTICAST});
- ioctl(ti,SIOCSIFFLAGS,&(const ifreq&){"lo",IFF_RUNNING|IFF_UP|IFF_LOOPBACK});
- for(const auto&i:(const char*const[][5]){
- {"/usr/bin/metalog","--configfile",".config/metalog.conf",0},
- {"/usr/bin/pppd",0},
- {"/usr/bin/pdnsd","--nodaemon","--config-file",".config/pdnsd.conf",0},
- })posix_spawnp(0,*i,0,0,(char*const*)i,environ);
- swapon("/swap",0);
- for(auto i=(const char*const[]){
- "/proc/sys/kernel/ctrl-alt-del",_0,
- //skip
- 0};*i;i+=2)write(open2(*i,O_RDWR),i[1],strlen(i[1]));
- dir=opendir("/proc");
- while((ent=readdir(dir)))
- if(isdigit(*ent->d_name)){
- snprintf(ts,sizeof ts,"/proc/%s/comm",ent->d_name);// /proc/*/task/*
- if(read(open2(ts,0),ts,sizeof ts)>0){
- ti=atoi(ent->d_name);
- if(!memcmp(ts,"kswapd0",7))
- setpriority(PRIO_PROCESS,ti,20);
- if(!memcmp(ts,"Xorg",1))
- setpriority(PRIO_PROCESS,ti,-20);
- }}
- while(open2("/sys/class/sound/pcmC0D0p",0)<0)
- usleep(pol);
- run("/usr/bin/alsactl","restore");
- //run("/usr/bin/nvidia-smi","--power-limit=113");
- ti=open2("/dev/tty2",O_RDWR);
- dup2(ti,STDERR_FILENO);
- dup2(ti,STDOUT_FILENO);
- dup2(ti,STDIN_FILENO);
- exec("/usr/bin/bash","--login");
- while(1)
- wait(0);}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement