Use latest tags of CloverConfigPlistValidator

This commit is contained in:
chris1111 2021-11-18 23:27:16 -05:00
parent 199a76c396
commit 7e91559838

View File

@ -1,156 +1,156 @@
#if 0 #if 0
CloverConfigPlistValidator, Credit: Jief_Machak CloverConfigPlistValidator, Credit: Jief_Machak
ConfigValidator, Credit: chris1111 ConfigValidator, Credit: chris1111
shc Version 3.8.9b, Copyright (c) 1994-2015 Francisco Rosales
#endif #endif
static char data [] = static char data [] =
#define msg2_z 19 #define opts_z 1
#define msg2 ((&data[1])) #define opts ((&data[0]))
"\241\107\113\341\074\016\206\324\220\023\352\253\015\010\112\020" "\102"
"\266\245\254\364\057" #define msg1_z 42
#define shll_z 8 #define msg1 ((&data[8]))
#define shll ((&data[22])) "\025\221\071\316\116\233\141\214\057\073\145\044\175\153\330\142"
"\235\130\070\333\001\150\257\256\343\175" "\344\163\335\125\225\266\117\250\031\045\015\300\332\253\270\321"
#define opts_z 1 "\325\260\153\204\313\040\236\202\276\075\116\341\130\017\035\360"
#define opts ((&data[31])) "\300\303\375\160\035\054"
"\243" #define tst1_z 22
#define xecc_z 15 #define tst1 ((&data[56]))
#define xecc ((&data[34])) "\106\073\316\334\075\075\326\355\230\335\173\272\221\276\022\334"
"\015\136\214\036\330\273\162\301\256\002\210\024\154\066\204\110" "\225\126\100\231\225\313\171\210\315"
"\123\240\116" #define date_z 1
#define rlax_z 1 #define date ((&data[80]))
#define rlax ((&data[51])) "\164"
"\075" #define shll_z 8
#define chk1_z 22 #define shll ((&data[81]))
#define chk1 ((&data[55])) "\376\235\305\106\162\111\355\220\204\132"
"\321\151\146\001\230\354\254\316\226\030\263\135\033\362\307\340" #define chk2_z 19
"\124\356\035\315\021\271\353\126\217\205\376\033\376\311" #define chk2 ((&data[92]))
#define lsto_z 1 "\151\150\120\311\004\140\040\025\376\371\155\272\071\270\377\055"
#define lsto ((&data[82])) "\374\335\277\375\121\207\332\152"
"\270" #define chk1_z 22
#define pswd_z 256 #define chk1 ((&data[120]))
#define pswd ((&data[96])) "\350\252\061\032\161\203\205\116\325\053\205\276\172\325\300\345"
"\025\054\034\075\164\225\237\300\174\150\142\021\371\017\133\300" "\202\320\003\337\054\061\244\177\063\041\252\216\035\046\366"
"\220\214\345\177\240\335\162\244\336\306\331\244\042\315\011\310" #define pswd_z 256
"\354\234\050\312\261\046\057\125\230\266\270\142\251\375\044\142" #define pswd ((&data[210]))
"\051\133\375\310\264\274\201\230\044\056\372\072\023\135\221\270" "\216\220\154\264\217\216\151\017\073\100\150\171\342\245\305\051"
"\330\257\261\121\337\226\133\072\375\242\075\206\334\031\235\072" "\162\074\351\377\031\115\321\165\234\223\137\057\240\134\071\314"
"\122\334\216\236\367\350\264\355\232\010\307\315\357\014\051\134" "\153\011\262\367\242\134\331\201\325\105\001\311\001\117\162\172"
"\134\362\347\325\022\077\231\124\141\313\153\167\242\327\021\121" "\010\111\322\004\151\226\006\145\246\224\020\241\073\125\310\124"
"\072\077\216\172\042\142\346\312\266\045\377\040\150\301\364\140" "\023\046\374\061\313\317\363\374\066\161\361\223\323\255\131\231"
"\165\206\373\273\057\025\117\337\146\045\113\336\202\113\200\064" "\205\164\340\006\164\045\036\247\303\066\270\235\300\242\161\357"
"\221\225\165\102\046\331\014\204\045\106\353\167\055\275\314\221" "\325\015\206\177\152\245\140\116\161\135\011\240\341\371\030\052"
"\163\355\050\342\352\333\145\060\210\025\147\012\115\043\047\340" "\174\362\102\104\326\274\060\006\165\344\371\341\235\126\003\326"
"\253\354\204\374\223\314\110\152\320\352\320\141\366\217\313\275" "\245\353\327\354\045\161\323\110\010\102\204\347\155\153\145\235"
"\323\012\160\043\337\237\376\057\254\013\337\140\055\200\334\334" "\317\154\122\222\101\211\170\141\357\370\212\312\267\164\361\067"
"\116\346\041\003\317\001\250\041\132\164\313\363\130\073\210\047" "\250\312\153\325\342\031\174\130\030\253\315\236\236\140\243\071"
"\007\311\160\111\316\061\371\245\306\175\331\120\167\210\244\336" "\202\047\065\311\223\312\012\362\023\005\347\052\336\130\165\275"
"\272\200\007\156\234\243\343\261\235\306\301\317\050\150\275\261" "\226\312\165\121\112\250\177\060\303\127\257\024\151\252\326\262"
"\017\204\217\221\336\273\124\365\110\333\132\336\307\003\035\377" "\176\313\342\374\166\015\123\046\154\350\106\231\004\302\335\332"
"\007\063\237\131\114\123\320\103\301\227\117\120\273\264\342\126" "\371\372\372\070\012\017\221\376\030\324\351\372\137\047\370\234"
"\143\033\142\231\342\211\031\326\252\007\176\055\121\255\321\216" "\325\316\312\347\223\202\065\142\333\242\353\114\025\026\276\037"
"\015" "\220\177\374\053\200\054\365\360\142\131\367\061\337\250\141\363"
#define chk2_z 19 "\030\365\152\070\232\020\162\011\235\027\175\367\113\027\364\310"
#define chk2 ((&data[392])) "\327\037\201\027\301\334\025\225\004\310\201\374\061\303\272\352"
"\240\327\130\125\110\271\002\037\063\066\330\023\121\327\056\220" "\026\362\072\205\261\202\000\231\350\343\041\110\277\021\233\164"
"\114\242\331\332\276\216\264" "\316\041\302\205\135\350\146\034\067\267\355\050\231\354\003\044"
#define text_z 905 "\146\070\063\262\241\351\025\065\247\022\165\336\060\364\234\174"
#define text ((&data[539])) "\064\165\247\132\315\011\222\004\124\346\257\271\036\054\342"
"\253\345\007\141\174\054\316\143\103\146\303\373\101\205\255\073" #define inlo_z 3
"\207\140\243\000\356\230\357\152\122\007\112\326\374\252\066\200" #define inlo ((&data[513]))
"\307\040\135\376\331\376\267\270\222\325\017\376\035\264\254\362" "\157\156\277"
"\363\107\211\051\140\201\113\006\317\037\305\102\362\350\365\057" #define xecc_z 15
"\326\105\016\163\205\005\147\075\372\146\137\321\125\327\104\021" #define xecc ((&data[518]))
"\114\241\263\354\333\112\364\004\250\377\335\111\253\151\303\237" "\027\007\034\073\164\060\077\160\101\353\035\345\071\303\236\016"
"\077\245\367\320\020\345\055\367\150\057\142\072\050\220\150\357" "\077\161"
"\145\127\204\252\112\154\146\247\161\177\006\335\045\341\047\165" #define lsto_z 1
"\312\247\073\234\122\301\031\367\372\207\042\205\116\211\102\057" #define lsto ((&data[534]))
"\341\052\201\162\134\070\350\006\211\227\122\073\323\310\372\357" "\232"
"\244\272\232\324\124\001\005\102\325\060\212\067\020\317\252\265" #define text_z 907
"\111\226\124\344\144\123\320\335\174\157\270\320\322\055\161\010" #define text ((&data[593]))
"\227\306\132\326\061\021\112\227\324\357\247\251\054\161\340\071" "\365\122\074\013\064\001\307\213\145\245\031\261\306\313\032\032"
"\061\137\342\034\066\264\134\150\225\252\165\005\273\127\233\361" "\261\062\247\215\006\326\245\162\137\326\153\370\100\052\335\006"
"\304\002\005\156\224\364\000\153\130\175\233\276\371\205\065\365" "\263\324\061\343\142\217\312\057\076\264\365\007\112\001\334\072"
"\215\271\103\120\260\116\060\275\221\334\067\303\324\036\316\150" "\307\057\266\120\010\001\150\040\161\115\256\253\160\330\062\350"
"\316\225\157\062\272\067\341\321\025\334\042\167\010\313\314\202" "\330\162\110\231\113\031\227\167\352\027\034\202\114\040\155\057"
"\147\102\267\076\334\065\221\113\074\322\300\276\104\113\361\362" "\174\306\022\052\371\275\363\243\246\216\345\166\332\001\343\232"
"\155\334\362\032\335\177\331\215\060\234\163\164\165\341\063\101" "\004\232\215\273\063\013\071\261\364\243\067\331\157\110\143\232"
"\301\076\202\325\006\212\274\132\222\133\272\352\322\306\145\325" "\143\152\065\305\346\101\000\326\057\241\213\364\321\124\267\310"
"\321\142\233\130\204\226\143\041\244\356\045\155\305\355\322\176" "\306\370\117\333\221\146\356\326\313\066\257\074\350\275\135\210"
"\242\056\020\250\225\332\165\346\225\231\171\375\354\303\162\206" "\125\276\025\265\151\166\231\201\017\032\355\026\141\164\360\322"
"\341\201\377\141\151\010\245\153\133\337\342\322\251\225\117\071" "\072\344\074\222\001\334\114\124\355\233\271\353\006\332\005\214"
"\005\164\016\225\351\263\216\350\167\201\222\122\162\153\003\273" "\055\152\132\223\356\177\303\047\241\366\252\233\301\330\241\302"
"\300\065\156\130\113\310\246\253\071\365\261\262\136\101\013\032" "\021\361\344\033\326\123\224\275\346\177\170\323\075\076\352\335"
"\212\131\363\353\077\234\220\176\360\044\242\151\360\064\314\072" "\231\200\126\021\013\362\153\011\062\357\077\343\040\364\131\007"
"\124\340\005\104\320\124\006\162\164\335\252\274\044\251\017\107" "\267\202\315\226\221\145\310\103\142\364\067\125\270\036\043\314"
"\313\074\001\077\205\234\107\241\037\326\355\015\303\160\355\137" "\016\367\001\073\233\103\321\271\357\360\063\343\134\300\141\243"
"\110\026\000\015\221\176\207\047\336\267\315\167\375\313\020\027" "\236\176\134\013\234\041\004\043\317\217\175\212\213\051\201\125"
"\137\151\020\032\334\270\223\354\176\110\324\072\254\006\313\142" "\257\342\222\130\147\061\240\115\340\306\050\063\101\204\350\204"
"\300\057\320\037\063\057\216\021\333\350\037\362\370\167\275\276" "\334\315\261\214\325\041\001\172\312\153\224\177\144\153\301\134"
"\061\301\063\207\213\270\354\305\140\325\155\313\260\266\301\136" "\220\172\011\306\113\371\366\150\032\251\347\304\173\262\223\174"
"\323\316\000\051\334\054\023\317\040\356\112\261\254\115\166\247" "\210\123\157\011\323\367\023\172\172\376\341\320\275\227\066\200"
"\146\216\073\073\147\224\317\253\322\030\064\144\116\253\126\255" "\156\007\017\344\035\210\037\042\266\030\101\307\100\311\220\054"
"\214\324\340\107\021\203\204\271\154\261\306\246\275\352\056\247" "\322\074\231\045\306\114\130\376\056\232\254\255\206\374\213\066"
"\331\317\305\270\067\135\272\361\251\116\145\226\217\145\175\223" "\160\304\103\311\166\211\144\104\317\267\303\020\103\331\026\061"
"\277\153\123\232\021\211\157\377\133\020\077\007\025\075\316\144" "\005\306\326\220\031\122\255\016\337\153\257\126\165\032\171\311"
"\043\313\131\157\117\227\347\220\336\071\054\164\345\014\262\012" "\276\270\222\176\226\134\111\041\047\166\214\132\130\341\304\315"
"\211\067\176\024\222\117\145\332\131\062\176\152\145\063\025\264" "\324\162\377\002\214\045\077\005\014\035\106\122\051\120\027\123"
"\310\025\131\312\275\275\100\163\252\015\016\344\212\335\343\324" "\344\174\013\050\324\102\321\203\171\254\017\154\316\170\326\211"
"\365\053\124\211\003\241\137\221\326\242\307\206\137\144\103\324" "\202\327\337\040\243\324\207\326\246\033\220\342\040\330\375\106"
"\313\157\016\367\127\132\016\246\357\055\204\343\352\251\244\245" "\265\163\251\240\241\234\005\110\357\051\121\113\317\117\376\330"
"\010\121\040\353\171\140\121\315\274\204\127\234\335\352\302\226" "\204\055\340\006\006\365\355\045\222\300\077\165\206\253\314\335"
"\053\135\225\003\315\070\342\126\165\032\204\313\255\106\064\344" "\373\106\073\334\206\013\353\270\035\372\356\156\060\266\174\074"
"\170\172\250\201\165\067\042\377\241\201\125\311\261\153\120\161" "\112\331\316\215\260\104\021\250\050\237\250\231\313\325\066\232"
"\124\235\250\240\041\077\335\343\301\042\141\322\114\311\245\054" "\042\350\112\216\054\030\236\063\234\170\324\364\224\273\366\332"
"\150\034\134\316\134\313\327\025\312\060\337\250\326\305\201\261" "\366\274\220\035\143\122\273\032\154\031\051\262\125\140\016\345"
"\214\370\141\256\232\353\065\234\304\132\103\300\234\135\170\255" "\155\375\205\246\071\373\211\010\173\261\231\361\156\334\133\224"
"\265\237\171\362\334\225\263\144\157\241\107\157\065\345\361\111" "\211\060\145\342\342\207\033\324\070\263\001\151\072\022\131\145"
"\252\151\301\351\116\026\240\364\266\023\166\102\222\237\125\365" "\015\012\316\247\365\115\314\163\062\035\022\363\102\213\070\222"
"\052\106\033\157\213\353\321\363\217\213\231\104\155\051\064\234" "\365\201\235\271\110\343\274\315\357\270\213\007\360\163\024\065"
"\150\135\207\357\247\060\045\123\334\201\157\164\204\373\254\062" "\310\263\040\100\233\361\322\241\264\145\333\063\122\141\072\056"
"\237\327\156\256\236\255\244\372\041\066\351\206\340\050\240\351" "\226\121\273\222\047\272\262\023\256\276\222\030\003\350\300\227"
"\053\055\162\050\257\265\073\227\040\214\006\241\215\366\312\224" "\106\362\110\102\130\370\346\030\322\314\267\244\327\377\347\172"
"\307\362\224\002\334\014\252\353\272\206\142\356\036\236\363\260" "\266\044\376\170\024\200\042\072\132\051\331\312\011\355\053\115"
"\302\306\223\021\245\347\077\030\130\363\170\223\155\223\320\010" "\224\274\142\007\125\215\035\304\005\216\162\133\377\107\221\063"
"\121\370\116\263\241\063\262\352\122\146\274\171\216\070\041\074" "\053\312\310\276\116\371\217\026\045\206\002\353\333\175\144\127"
"\317\014\361\221\303\045\074\226\215\067\324\246\035\161\016\013" "\337\331\127\030\321\202\161\170\201\127\303\255\112\035\106\371"
"\145\111\275\073\124\303\314\074\343\131\302\141\356\167\110\102" "\212\013\166\311\100\317\113\206\243\235\233\317\234\132\152\266"
"\173\112\156\235\101\334\312\050\172\321\040\375\372\000\207\310" "\271\037\140\104\143\000\151\070\056\064\051\260\055\232\117\101"
"\322\057\253\252\334\056\314\202\127\255\137\066\134\352\324\321" "\205\071\336\176\313\143\077\112\101\321\231\302\332\034\151\124"
"\141\372\265\362\171\143\234\302\346\061\173\163\120\202\310\053" "\021\112\142\044\041\157\357\322\220\165\026\204\037\251\216\244"
"\375\171\010\142\246\026\137\313\256\124\102\220\301\271\133\064" "\170\214\027\153\005\032\047\206\042\153\125\325\250\325\126\043"
"\322\270\136\127\260\221\251\133\245\360\155\107\161\336\262\352" "\124\001\373\232\344\342\067\201\242\250\200\125\216\075\117\160"
"\204\017\304\114\135\333\246\303\351\167\054\231\032\322\176\311" "\100\375\061\111\230\154\337\243\130\116\032\062\071\312\120\004"
"\114\070\233\315\377\035\341\067\001\355\256\026\001\047\051\000" "\243\055\116\251\256\343\101\271\164\322\102\050\101\106\145\221"
"\047\353\152\320\304\276\151\202\016\350\006\312\056\357\300\262" "\027\151\105\122\132\230\110\310\251\237\173\104\037\030\233\276"
"\320\171\335\345\127\057\376\054\126\212\042\041\326\145\023\331" "\066\270\177\161\174\127\274\107\350\204\302\146\212\071\006\137"
"\073\330\076\314\070\141\241\352\302\335\214\317\207\376\110\314" "\145\045\264\174\120\015\015\067\125\343\356\323\037\070\026\060"
"\022\140" "\302\234\321\323\264\315\006\325\066\256\135\177\123\233\004\210"
#define date_z 1 "\077\335\112\275\347\252\316\022\015\064\201\171\361\170\300\122"
#define date ((&data[1517])) "\121\137\275\261\055\251\205\215\254\135\213\143\366\055\317\053"
"\165" "\241\013\246\130\066\320\347\134\255\272\370\126\230\306\200\371"
#define tst1_z 22 "\300\262\347\020\200\256\062\006\207\071\355\356\141\324\112\024"
#define tst1 ((&data[1523])) "\034\333\217\110\016\036\336\026\024\225\026\320\070\033\063\152"
"\134\056\004\161\231\074\076\340\211\371\335\315\164\256\327\014" "\236\325\110\277\154\014\033\261\056\317\223\177\025\146\163\364"
"\167\260\315\337\204\061\056\131\040\377\340\144" "\261\320\070\056\230\137\243\354\255\161\375\245\150\232\163\233"
#define tst2_z 19 "\356\250\165\037\255\072\370\232\210\366\267\212\123\232\117\045"
#define tst2 ((&data[1548])) "\020\046\365\053\145\323\173\031\332\131\176\173\332\202\045\355"
"\117\262\100\312\020\210\244\220\074\354\067\260\214\323\374\220" "\116\021\025\215\326\214\123\064\346\100\214\004\302"
"\360\137\047\313\105\027\252\113" #define msg2_z 19
#define inlo_z 3 #define msg2 ((&data[1621]))
#define inlo ((&data[1570])) "\023\233\272\342\336\217\161\370\301\011\222\351\277\302\045\100"
"\266\272\237" "\257\321\325\321\375"
#define msg1_z 42 #define rlax_z 1
#define msg1 ((&data[1577])) #define rlax ((&data[1641]))
"\052\136\130\360\347\125\064\220\063\037\156\250\362\034\256\341" "\367"
"\273\312\164\113\304\117\336\272\103\201\307\113\157\363\356\333" #define tst2_z 19
"\347\177\311\041\024\053\116\122\210\341\104\360\311\110\220\345" #define tst2 ((&data[1644]))
"\373\324\143\344\330"/* End of data[] */; "\003\037\223\233\335\274\246\150\254\165\113\332\252\000\246\011"
#define hide_z 4096 "\201\022\112\001\213\146"/* End of data[] */;
#define DEBUGEXEC 0 /* Define as 1 to debug execvp calls */ #define hide_z 4096
#define TRACEABLE 1 /* Define as 1 to enable ptrace the executable */ #define DEBUGEXEC 0 /* Define as 1 to debug execvp calls */
#define TRACEABLE 1 /* Define as 1 to enable ptrace the executable */
/* rtc.c */ /* rtc.c */
@ -173,10 +173,10 @@ static unsigned char stte[256], indx, jndx, kndx;
*/ */
void stte_0(void) void stte_0(void)
{ {
indx = jndx = kndx = 0; indx = jndx = kndx = 0;
do { do {
stte[indx] = indx; stte[indx] = indx;
} while (++indx); } while (++indx);
} }
/* /*
@ -184,18 +184,18 @@ void stte_0(void)
*/ */
void key(void * str, int len) void key(void * str, int len)
{ {
unsigned char tmp, * ptr = (unsigned char *)str; unsigned char tmp, * ptr = (unsigned char *)str;
while (len > 0) { while (len > 0) {
do { do {
tmp = stte[indx]; tmp = stte[indx];
kndx += tmp; kndx += tmp;
kndx += ptr[(int)indx % len]; kndx += ptr[(int)indx % len];
stte[indx] = stte[kndx]; stte[indx] = stte[kndx];
stte[kndx] = tmp; stte[kndx] = tmp;
} while (++indx); } while (++indx);
ptr += 256; ptr += 256;
len -= 256; len -= 256;
} }
} }
/* /*
@ -203,18 +203,18 @@ void key(void * str, int len)
*/ */
void arc4(void * str, int len) void arc4(void * str, int len)
{ {
unsigned char tmp, * ptr = (unsigned char *)str; unsigned char tmp, * ptr = (unsigned char *)str;
while (len > 0) { while (len > 0) {
indx++; indx++;
tmp = stte[indx]; tmp = stte[indx];
jndx += tmp; jndx += tmp;
stte[indx] = stte[jndx]; stte[indx] = stte[jndx];
stte[jndx] = tmp; stte[jndx] = tmp;
tmp += stte[indx]; tmp += stte[indx];
*ptr ^= stte[tmp]; *ptr ^= stte[tmp];
ptr++; ptr++;
len--; len--;
} }
} }
/* End of ARC4 */ /* End of ARC4 */
@ -224,77 +224,77 @@ void arc4(void * str, int len)
*/ */
int key_with_file(char * file) int key_with_file(char * file)
{ {
struct stat statf[1]; struct stat statf[1];
struct stat control[1]; struct stat control[1];
if (stat(file, statf) < 0) if (stat(file, statf) < 0)
return -1; return -1;
/* Turn on stable fields */ /* Turn on stable fields */
memset(control, 0, sizeof(control)); memset(control, 0, sizeof(control));
control->st_ino = statf->st_ino; control->st_ino = statf->st_ino;
control->st_dev = statf->st_dev; control->st_dev = statf->st_dev;
control->st_rdev = statf->st_rdev; control->st_rdev = statf->st_rdev;
control->st_uid = statf->st_uid; control->st_uid = statf->st_uid;
control->st_gid = statf->st_gid; control->st_gid = statf->st_gid;
control->st_size = statf->st_size; control->st_size = statf->st_size;
control->st_mtime = statf->st_mtime; control->st_mtime = statf->st_mtime;
control->st_ctime = statf->st_ctime; control->st_ctime = statf->st_ctime;
key(control, sizeof(control)); key(control, sizeof(control));
return 0; return 0;
} }
#if DEBUGEXEC #if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv) void debugexec(char * sh11, int argc, char ** argv)
{ {
int i; int i;
fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>"); fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
fprintf(stderr, "argc=%d\n", argc); fprintf(stderr, "argc=%d\n", argc);
if (!argv) { if (!argv) {
fprintf(stderr, "argv=<null>\n"); fprintf(stderr, "argv=<null>\n");
} else { } else {
for (i = 0; i <= argc ; i++) for (i = 0; i <= argc ; i++)
fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>"); fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
} }
} }
#endif /* DEBUGEXEC */ #endif /* DEBUGEXEC */
void rmarg(char ** argv, char * arg) void rmarg(char ** argv, char * arg)
{ {
for (; argv && *argv && *argv != arg; argv++); for (; argv && *argv && *argv != arg; argv++);
for (; argv && *argv; argv++) for (; argv && *argv; argv++)
*argv = argv[1]; *argv = argv[1];
} }
int chkenv(int argc) int chkenv(int argc)
{ {
char buff[512]; char buff[512];
unsigned long mask, m; unsigned long mask, m;
int l, a, c; int l, a, c;
char * string; char * string;
extern char ** environ; extern char ** environ;
mask = (unsigned long)&chkenv; mask = (unsigned long)&chkenv;
mask ^= (unsigned long)getpid() * ~mask; mask ^= (unsigned long)getpid() * ~mask;
sprintf(buff, "x%lx", mask); sprintf(buff, "x%lx", mask);
string = getenv(buff); string = getenv(buff);
#if DEBUGEXEC #if DEBUGEXEC
fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>"); fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif #endif
l = strlen(buff); l = strlen(buff);
if (!string) { if (!string) {
/* 1st */ /* 1st */
sprintf(&buff[l], "=%lu %d", mask, argc); sprintf(&buff[l], "=%lu %d", mask, argc);
putenv(strdup(buff)); putenv(strdup(buff));
return 0; return 0;
} }
c = sscanf(string, "%lu %d%c", &m, &a, buff); c = sscanf(string, "%lu %d%c", &m, &a, buff);
if (c == 2 && m == mask) { if (c == 2 && m == mask) {
/* 3rd */ /* 3rd */
rmarg(environ, &string[-l - 1]); rmarg(environ, &string[-l - 1]);
return 1 + (argc - a); return 1 + (argc - a);
} }
return -1; return -1;
} }
#if !TRACEABLE #if !TRACEABLE
@ -309,134 +309,134 @@ int chkenv(int argc)
#include <unistd.h> #include <unistd.h>
#if !defined(PTRACE_ATTACH) && defined(PT_ATTACH) #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
# define PTRACE_ATTACH PT_ATTACH # define PTRACE_ATTACH PT_ATTACH
#endif #endif
void untraceable(char * argv0) void untraceable(char * argv0)
{ {
char proc[80]; char proc[80];
int pid, mine; int pid, mine;
switch(pid = fork()) { switch(pid = fork()) {
case 0: case 0:
pid = getppid(); pid = getppid();
/* For problematic SunOS ptrace */ /* For problematic SunOS ptrace */
#if defined(__FreeBSD__) #if defined(__FreeBSD__)
sprintf(proc, "/proc/%d/mem", (int)pid); sprintf(proc, "/proc/%d/mem", (int)pid);
#else #else
sprintf(proc, "/proc/%d/as", (int)pid); sprintf(proc, "/proc/%d/as", (int)pid);
#endif #endif
close(0); close(0);
mine = !open(proc, O_RDWR|O_EXCL); mine = !open(proc, O_RDWR|O_EXCL);
if (!mine && errno != EBUSY) if (!mine && errno != EBUSY)
mine = !ptrace(PTRACE_ATTACH, pid, 0, 0); mine = !ptrace(PTRACE_ATTACH, pid, 0, 0);
if (mine) { if (mine) {
kill(pid, SIGCONT); kill(pid, SIGCONT);
} else { } else {
perror(argv0); perror(argv0);
kill(pid, SIGKILL); kill(pid, SIGKILL);
} }
_exit(mine); _exit(mine);
case -1: case -1:
break; break;
default: default:
if (pid == waitpid(pid, 0, 0)) if (pid == waitpid(pid, 0, 0))
return; return;
} }
perror(argv0); perror(argv0);
_exit(1); _exit(1);
} }
#endif /* !TRACEABLE */ #endif /* !TRACEABLE */
char * xsh(int argc, char ** argv) char * xsh(int argc, char ** argv)
{ {
char * scrpt; char * scrpt;
int ret, i, j; int ret, i, j;
char ** varg; char ** varg;
char * me = getenv("_"); char * me = getenv("_");
if (me == NULL) { me = argv[0]; } if (me == NULL) { me = argv[0]; }
stte_0(); stte_0();
key(pswd, pswd_z); key(pswd, pswd_z);
arc4(msg1, msg1_z); arc4(msg1, msg1_z);
arc4(date, date_z); arc4(date, date_z);
if (date[0] && (atoll(date)<time(NULL))) if (date[0] && (atoll(date)<time(NULL)))
return msg1; return msg1;
arc4(shll, shll_z); arc4(shll, shll_z);
arc4(inlo, inlo_z); arc4(inlo, inlo_z);
arc4(xecc, xecc_z); arc4(xecc, xecc_z);
arc4(lsto, lsto_z); arc4(lsto, lsto_z);
arc4(tst1, tst1_z); arc4(tst1, tst1_z);
key(tst1, tst1_z); key(tst1, tst1_z);
arc4(chk1, chk1_z); arc4(chk1, chk1_z);
if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z)) if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
return tst1; return tst1;
ret = chkenv(argc); ret = chkenv(argc);
arc4(msg2, msg2_z); arc4(msg2, msg2_z);
if (ret < 0) if (ret < 0)
return msg2; return msg2;
varg = (char **)calloc(argc + 10, sizeof(char *)); varg = (char **)calloc(argc + 10, sizeof(char *));
if (!varg) if (!varg)
return 0; return 0;
if (ret) { if (ret) {
arc4(rlax, rlax_z); arc4(rlax, rlax_z);
if (!rlax[0] && key_with_file(shll)) if (!rlax[0] && key_with_file(shll))
return shll; return shll;
arc4(opts, opts_z); arc4(opts, opts_z);
arc4(text, text_z); arc4(text, text_z);
arc4(tst2, tst2_z); arc4(tst2, tst2_z);
key(tst2, tst2_z); key(tst2, tst2_z);
arc4(chk2, chk2_z); arc4(chk2, chk2_z);
if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z)) if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
return tst2; return tst2;
/* Prepend hide_z spaces to script text to hide it. */ /* Prepend hide_z spaces to script text to hide it. */
scrpt = malloc(hide_z + text_z); scrpt = malloc(hide_z + text_z);
if (!scrpt) if (!scrpt)
return 0; return 0;
memset(scrpt, (int) ' ', hide_z); memset(scrpt, (int) ' ', hide_z);
memcpy(&scrpt[hide_z], text, text_z); memcpy(&scrpt[hide_z], text, text_z);
} else { /* Reexecute */ } else { /* Reexecute */
if (*xecc) { if (*xecc) {
scrpt = malloc(512); scrpt = malloc(512);
if (!scrpt) if (!scrpt)
return 0; return 0;
sprintf(scrpt, xecc, me); sprintf(scrpt, xecc, me);
} else { } else {
scrpt = me; scrpt = me;
} }
} }
j = 0; j = 0;
varg[j++] = argv[0]; /* My own name at execution */ varg[j++] = argv[0]; /* My own name at execution */
if (ret && *opts) if (ret && *opts)
varg[j++] = opts; /* Options on 1st line of code */ varg[j++] = opts; /* Options on 1st line of code */
if (*inlo) if (*inlo)
varg[j++] = inlo; /* Option introducing inline code */ varg[j++] = inlo; /* Option introducing inline code */
varg[j++] = scrpt; /* The script itself */ varg[j++] = scrpt; /* The script itself */
if (*lsto) if (*lsto)
varg[j++] = lsto; /* Option meaning last option */ varg[j++] = lsto; /* Option meaning last option */
i = (ret > 1) ? ret : 0; /* Args numbering correction */ i = (ret > 1) ? ret : 0; /* Args numbering correction */
while (i < argc) while (i < argc)
varg[j++] = argv[i++]; /* Main run-time arguments */ varg[j++] = argv[i++]; /* Main run-time arguments */
varg[j] = 0; /* NULL terminated array */ varg[j] = 0; /* NULL terminated array */
#if DEBUGEXEC #if DEBUGEXEC
debugexec(shll, j, varg); debugexec(shll, j, varg);
#endif #endif
execvp(shll, varg); execvp(shll, varg);
return shll; return shll;
} }
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
#if DEBUGEXEC #if DEBUGEXEC
debugexec("main", argc, argv); debugexec("main", argc, argv);
#endif #endif
#if !TRACEABLE #if !TRACEABLE
untraceable(argv[0]); untraceable(argv[0]);
#endif #endif
argv[1] = xsh(argc, argv); argv[1] = xsh(argc, argv);
fprintf(stderr, "%s%s%s: %s\n", argv[0], fprintf(stderr, "%s%s%s: %s\n", argv[0],
errno ? ": " : "", errno ? ": " : "",
errno ? strerror(errno) : "", errno ? strerror(errno) : "",
argv[1] ? argv[1] : "<null>" argv[1] ? argv[1] : "<null>"
); );
return 1; return 1;
} }