#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -f MenuV2.sh 
#endif

static  char data [] = 
#define      xecc_z	15
#define      xecc	((&data[3]))
	"\361\342\251\232\106\240\247\057\312\044\147\331\313\053\144\353"
	"\216\147\050"
#define      msg2_z	19
#define      msg2	((&data[23]))
	"\307\045\355\216\022\266\100\211\106\214\063\102\022\356\032\215"
	"\337\053\276\076\136\316\004\244\022\040"
#define      lsto_z	1
#define      lsto	((&data[45]))
	"\110"
#define      tst1_z	22
#define      tst1	((&data[50]))
	"\346\145\104\130\363\373\302\203\110\224\367\162\101\144\347\024"
	"\304\147\144\104\167\331\334\223\303\276\350\157\311\126"
#define      opts_z	1
#define      opts	((&data[76]))
	"\016"
#define      text_z	3304
#define      text	((&data[523]))
	"\344\050\047\210\360\115\165\176\361\210\237\145\101\012\343\016"
	"\305\311\164\011\041\135\171\352\263\104\223\115\000\035\220\345"
	"\106\270\155\066\005\343\265\367\153\124\135\255\137\100\273\044"
	"\011\060\056\053\215\250\026\100\354\251\216\354\307\037\321\015"
	"\327\077\103\335\043\370\324\217\115\061\074\254\161\370\320\173"
	"\050\377\246\265\247\275\365\223\147\204\200\056\243\121\073\173"
	"\221\177\130\264\170\054\103\305\136\200\161\320\170\101\113\240"
	"\101\362\125\350\260\113\174\027\320\374\105\163\116\201\356\337"
	"\001\107\224\171\164\330\076\322\130\257\243\320\361\357\161\062"
	"\342\307\033\222\022\227\251\342\223\357\126\342\161\105\301\162"
	"\214\126\353\000\056\052\323\207\331\166\130\312\145\311\375\107"
	"\220\030\332\243\257\204\205\103\163\334\045\345\041\347\130\256"
	"\075\104\257\154\156\202\363\107\371\113\022\137\024\020\247\245"
	"\050\201\110\330\005\316\034\171\252\101\137\314\051\267\172\147"
	"\373\051\323\151\254\306\261\245\022\304\005\047\324\254\314\375"
	"\055\025\325\063\343\361\255\215\063\014\131\135\304\323\304\277"
	"\375\227\051\251\136\333\117\161\237\124\230\164\001\145\161\057"
	"\172\107\142\135\071\020\353\155\034\104\312\341\030\216\240\026"
	"\046\312\277\204\245\017\366\105\144\216\271\145\364\052\224\156"
	"\162\367\314\253\007\267\030\044\373\342\005\024\161\246\052\227"
	"\160\352\034\026\372\022\133\136\241\024\304\225\077\131\004\261"
	"\120\320\135\130\207\165\175\203\130\203\230\312\052\302\141\232"
	"\255\176\261\247\220\014\006\062\041\313\310\140\044\314\022\165"
	"\235\157\315\045\344\113\251\075\316\101\007\370\004\151\223\261"
	"\347\105\131\170\121\140\253\163\053\163\323\117\100\345\304\335"
	"\125\222\003\072\335\254\167\254\355\177\245\361\350\071\243\317"
	"\176\374\110\320\134\363\103\210\146\027\327\247\375\233\204\122"
	"\056\207\214\013\064\003\270\041\202\135\023\153\227\266\175\013"
	"\272\220\242\207\061\047\212\341\207\350\364\166\167\045\376\227"
	"\336\071\005\201\156\102\005\120\205\316\042\242\345\131\003\201"
	"\251\373\355\247\134\362\247\261\160\031\107\020\177\352\343\036"
	"\343\173\074\251\151\356\016\325\021\164\141\050\231\047\321\170"
	"\237\171\311\310\312\163\011\140\240\067\346\055\035\137\030\300"
	"\227\167\264\331\067\272\372\272\064\017\055\262\022\151\221\341"
	"\212\342\215\236\220\057\157\121\222\055\255\061\103\277\067\174"
	"\316\301\174\257\336\041\366\123\034\002\050\067\202\000\221\025"
	"\306\004\026\331\176\155\372\017\126\072\175\146\161\131\154\311"
	"\252\367\201\165\177\074\142\377\052\117\253\207\336\212\336\377"
	"\250\335\235\173\365\331\336\300\274\207\154\314\117\120\175\373"
	"\173\276\236\340\327\132\121\032\275\367\051\360\343\314\300\244"
	"\104\355\061\051\077\347\017\020\304\166\262\305\071\234\007\023"
	"\361\130\245\210\236\231\001\207\123\162\045\332\172\104\122\316"
	"\232\142\224\247\001\143\241\044\350\143\046\127\043\255\030\137"
	"\047\312\147\122\307\206\050\105\326\061\157\161\331\122\170\274"
	"\235\055\162\052\216\017\045\323\052\050\372\046\000\251\047\161"
	"\122\101\243\155\017\150\201\015\074\373\107\257\336\112\364\255"
	"\126\311\333\160\031\046\161\073\123\113\306\072\042\314\241\313"
	"\170\164\362\014\044\060\370\335\165\123\122\351\160\316\037\222"
	"\251\320\002\257\222\117\377\100\167\235\132\167\364\263\123\372"
	"\141\032\053\351\113\234\266\013\344\141\063\031\075\246\117\117"
	"\250\243\027\227\037\317\133\001\007\342\222\343\120\155\130\357"
	"\060\117\317\252\030\072\047\057\021\235\264\141\043\364\367\360"
	"\157\101\131\252\351\302\150\204\161\161\146\071\173\162\113\153"
	"\356\124\000\361\351\033\063\335\106\202\100\341\156\362\240\170"
	"\256\102\316\140\225\237\074\161\172\063\166\300\064\221\115\236"
	"\134\015\010\246\341\243\306\063\337\035\173\154\034\330\153\002"
	"\047\334\016\112\225\000\201\073\376\243\071\213\300\277\207\341"
	"\227\260\150\057\004\353\220\042\026\317\302\026\054\017\340\336"
	"\304\017\151\334\370\136\363\131\013\247\343\152\170\020\074\142"
	"\063\204\165\110\331\207\326\106\057\134\112\336\042\060\177\037"
	"\125\243\353\006\153\266\112\232\377\201\247\112\072\250\341\137"
	"\012\331\152\042\224\072\206\067\146\164\265\342\346\060\016\037"
	"\121\207\303\005\210\025\152\175\264\362\355\204\047\102\167\247"
	"\343\004\355\045\016\012\362\077\246\206\231\036\113\145\355\222"
	"\214\017\266\243\214\220\007\104\263\176\201\251\242\166\103\014"
	"\263\116\367\240\045\020\001\165\155\105\150\375\125\046\011\076"
	"\266\327\152\211\067\226\215\160\303\351\027\247\334\200\155\225"
	"\242\217\153\325\202\070\207\137\342\352\210\114\362\114\335\025"
	"\213\170\016\171\370\365\273\102\266\154\362\245\362\114\113\015"
	"\073\231\106\224\260\112\031\102\012\277\002\103\032\076\354\020"
	"\162\202\300\366\335\145\050\071\044\075\270\312\254\370\064\267"
	"\126\103\132\242\006\011\103\216\222\073\247\024\331\265\363\126"
	"\140\252\025\072\220\023\333\006\110\037\253\333\366\212\310\057"
	"\271\126\161\050\171\264\161\037\001\303\340\167\251\306\071\146"
	"\337\355\230\271\341\132\063\266\006\324\316\256\243\121\017\355"
	"\144\126\050\245\142\363\002\256\152\160\047\077\100\167\215\365"
	"\060\000\144\171\144\127\073\075\132\231\013\162\175\377\206\056"
	"\005\101\135\103\240\316\376\226\124\075\145\242\247\234\205\247"
	"\072\311\336\010\000\141\034\317\025\034\037\222\240\015\272\356"
	"\121\164\362\061\041\144\175\256\176\115\112\154\001\316\217\077"
	"\154\065\357\310\360\004\071\020\271\006\163\345\252\276\274\045"
	"\111\101\032\040\001\013\126\302\366\034\213\010\312\307\301\016"
	"\152\331\003\131\364\043\235\062\206\215\042\337\003\051\267\060"
	"\016\274\160\172\334\025\300\144\234\250\357\317\246\340\063\007"
	"\013\125\242\131\220\042\130\351\164\274\362\263\236\157\044\106"
	"\135\130\175\300\005\347\374\101\265\112\055\362\214\222\145\076"
	"\216\365\371\066\364\170\236\121\130\376\060\052\233\112\131\126"
	"\023\266\245\007\352\047\354\373\050\344\231\352\012\072\002\240"
	"\035\152\223\034\232\260\030\101\362\254\214\121\330\014\374\044"
	"\337\366\034\315\051\127\263\216\167\373\064\377\161\015\002\013"
	"\067\113\122\350\232\367\343\221\170\233\114\163\216\107\123\346"
	"\256\106\000\010\214\017\015\077\332\014\177\244\165\332\045\001"
	"\243\116\130\112\007\302\074\113\357\100\363\064\051\316\077\074"
	"\357\176\124\171\027\371\222\022\227\064\213\234\037\020\166\265"
	"\246\071\301\143\075\151\172\172\135\056\067\103\016\353\330\066"
	"\145\070\102\362\107\217\055\002\125\323\223\211\070\174\373\270"
	"\010\225\334\170\026\363\063\125\341\170\262\006\056\111\335\053"
	"\307\041\233\203\204\023\173\036\242\122\004\237\122\177\076\153"
	"\230\352\334\214\356\022\352\072\202\354\364\373\357\023\335\323"
	"\070\174\347\362\304\054\166\204\032\340\056\326\163\044\102\160"
	"\006\025\223\332\243\152\250\360\273\201\063\125\371\107\276\101"
	"\211\021\053\216\272\304\232\144\171\366\255\247\223\212\237\132"
	"\366\364\341\365\320\361\304\033\064\300\325\366\133\065\155\277"
	"\261\343\377\274\037\151\331\147\265\134\032\275\341\154\202\243"
	"\332\260\157\152\113\313\354\162\364\213\166\352\204\270\136\327"
	"\164\357\264\262\153\371\234\237\233\162\010\312\246\037\105\320"
	"\247\264\046\026\316\132\276\011\041\370\367\331\222\367\200\324"
	"\243\253\150\340\225\004\111\121\366\336\021\377\127\311\173\263"
	"\354\042\022\331\271\050\356\133\165\130\353\371\347\142\244\224"
	"\362\053\377\056\371\101\366\175\155\115\216\364\143\314\263\323"
	"\152\252\217\261\025\165\106\046\360\213\277\047\343\240\306\243"
	"\264\236\341\265\011\072\335\211\026\022\225\156\313\312\112\015"
	"\376\036\302\064\102\100\217\317\344\364\105\115\043\270\171\250"
	"\040\206\327\267\021\157\211\212\264\246\106\065\036\210\304\064"
	"\043\372\322\321\232\330\266\254\326\222\151\000\277\311\220\051"
	"\151\351\002\171\362\067\151\041\202\144\233\365\114\177\050\305"
	"\271\105\076\323\356\233\077\066\302\224\315\004\300\275\337\073"
	"\140\312\057\333\377\371\172\264\116\163\302\373\110\324\065\032"
	"\034\023\344\216\377\243\171\034\327\277\313\052\233\057\324\371"
	"\370\103\207\071\244\253\110\140\153\206\075\130\207\335\203\301"
	"\110\071\361\373\370\341\162\154\303\045\224\145\111\355\073\240"
	"\166\213\271\202\323\174\272\150\122\037\054\213\267\122\077\064"
	"\231\057\167\020\211\335\064\077\152\377\103\155\012\377\100\331"
	"\244\240\153\101\316\052\162\250\175\221\004\333\162\261\176\274"
	"\317\356\322\104\341\066\165\044\057\043\022\342\344\170\013\227"
	"\106\350\262\262\110\323\050\276\323\157\135\125\302\066\220\356"
	"\027\054\003\052\153\004\134\127\160\214\312\006\245\302\041\374"
	"\002\327\232\036\111\104\222\377\332\043\203\015\253\326\167\175"
	"\172\110\023\146\156\114\341\016\331\130\262\322\277\151\345\121"
	"\345\162\216\145\212\355\206\026\376\120\363\111\333\305\151\142"
	"\061\106\360\170\306\377\107\113\014\374\167\325\271\166\246\367"
	"\072\354\327\320\217\031\226\327\210\363\210\071\010\037\036\240"
	"\050\326\265\036\061\144\021\332\030\252\343\352\301\160\355\164"
	"\372\247\250\017\106\162\043\303\132\115\052\201\025\112\326\371"
	"\007\235\146\050\063\221\146\003\353\323\112\144\222\242\232\175"
	"\217\014\304\167\267\353\105\074\301\032\076\335\351\037\016\353"
	"\105\260\200\136\135\237\361\162\013\263\150\243\002\021\307\153"
	"\274\237\244\203\270\255\357\234\163\054\254\035\124\174\102\163"
	"\013\344\072\057\234\213\066\364\152\153\266\273\173\143\070\262"
	"\270\170\177\333\276\016\104\224\236\037\146\072\271\047\347\147"
	"\344\063\255\036\225\153\304\270\105\267\153\117\152\101\337\237"
	"\176\202\012\070\207\162\311\051\221\365\066\013\331\201\216\161"
	"\235\076\205\062\354\127\217\240\077\256\100\077\076\327\034\151"
	"\367\133\115\252\226\313\327\106\273\071\255\321\011\272\021\042"
	"\313\121\160\334\145\330\072\004\363\315\202\252\161\224\360\060"
	"\074\110\301\136\036\141\311\270\312\233\321\066\026\006\075\342"
	"\065\123\306\135\312\346\363\135\156\030\137\060\006\127\072\134"
	"\275\201\330\227\023\142\117\373\340\372\277\341\146\111\110\015"
	"\364\274\116\274\031\016\126\324\004\315\142\027\304\303\152\315"
	"\050\160\211\125\302\345\113\224\040\347\170\006\171\377\140\144"
	"\102\256\345\374\271\071\071\316\200\006\222\023\140\301\051\077"
	"\336\044\203\152\320\074\321\242\162\311\235\367\116\066\243\054"
	"\377\270\057\236\044\150\177\102\352\155\330\326\064\155\145\127"
	"\256\116\170\030\307\321\377\265\146\247\126\272\070\340\224\217"
	"\133\160\333\023\236\067\146\062\223\073\210\134\131\336\255\233"
	"\036\313\105\370\222\255\005\160\354\034\346\111\343\332\326\021"
	"\267\000\131\355\174\331\033\122\116\255\300\360\204\365\250\160"
	"\066\324\364\103\043\233\107\110\064\230\167\123\160\213\202\306"
	"\374\111\317\270\212\055\350\170\002\301\244\334\243\361\301\005"
	"\222\211\264\165\153\265\300\326\053\301\132\073\076\223\011\144"
	"\162\264\174\005\023\105\321\142\252\133\375\257\372\376\075\153"
	"\210\047\065\377\343\310\270\124\303\150\265\046\040\015\350\075"
	"\243\164\142\313\020\102\341\221\272\005\006\036\237\343\067\070"
	"\324\031\225\330\265\273\105\001\054\343\070\023\314\261\232\050"
	"\235\240\065\025\133\363\233\346\176\142\321\275\305\076\225\223"
	"\011\160\173\336\170\036\211\334\016\201\142\137\122\317\131\243"
	"\216\320\145\143\341\261\307\361\211\203\245\303\006\304\050\321"
	"\336\200\120\371\261\246\206\332\275\002\310\216\274\276\211\200"
	"\010\101\215\215\065\150\023\014\316\027\125\150\316\374\221\347"
	"\110\211\341\103\331\012\067\157\051\137\274\014\117\334\045\002"
	"\134\075\126\006\116\206\023\211\030\040\036\233\176\336\345\203"
	"\157\007\272\311\051\150\337\153\236\220\220\360\307\156\245\236"
	"\057\057\336\006\153\177\317\207\033\253\052\203\026\265\215\105"
	"\304\252\315\173\124\262\126\164\246\133\154\036\116\225\322\242"
	"\155\311\126\271\173\271\144\035\266\117\250\167\127\172\022\344"
	"\170\126\240\117\303\026\325\345\106\224\352\273\354\212\051\126"
	"\271\353\307\027\114\024\116\335\123\065\225\042\352\132\113\275"
	"\303\342\103\162\147\106\327\071\050\303\115\271\065\321\007\047"
	"\111\054\362\010\047\226\255\252\217\356\107\033\126\344\100\314"
	"\217\337\202\005\241\233\007\166\215\017\274\257\143\112\125\244"
	"\063\036\001\351\266\371\144\174\245\310\171\006\204\244\163\207"
	"\220\315\040\160\114\206\176\341\355\201\103\035\106\342\015\071"
	"\272\141\243\235\314\112\055\060\217\225\012\326\050\300\213\371"
	"\371\120\237\045\147\035\105\332\344\104\321\132\304\320\133\376"
	"\166\005\344\132\065\207\207\011\010\306\236\326\130\377\304\357"
	"\010\062\212\033\136\063\055\135\236\304\126\210\104\057\314\226"
	"\234\137\045\312\246\124\320\205\070\322\042\175\205\234\271\215"
	"\034\342\374\036\212\156\362\341\003\305\321\361\320\125\051\023"
	"\125\025\013\026\277\130\360\050\167\353\040\017\373\252\336\044"
	"\062\331\274\323\104\204\003\203\356\223\260\261\366\136\315\222"
	"\235\131\165\253\257\101\162\124\243\143\274\075\253\057\351\145"
	"\275\240\201\266\212\240\160\101\124\062\061\153\037\332\054\203"
	"\374\362\204\041\027\123\271\006\065\027\362\163\174\300\042\071"
	"\334\255\023\374\111\343\225\076\122\315\231\202\152\362\063\034"
	"\100\234\342\301\242\145\250\143\111\130\011\106\344\146\062\154"
	"\310\160\066\163\220\117\341\033\132\047\032\372\062\064\154\261"
	"\316\077\341\005\133\157\214\320\131\235\027\271\333\155\371\032"
	"\311\204\342\313\354\243\255\227\255\215\045\346\070\336\144\353"
	"\037\270\153\073\356\356\364\042\065\077\121\066\121\053\075\062"
	"\235\205\152\341\107\335\115\320\272\156\364\247\355\305\072\211"
	"\070\215\126\051\251\117\375\243\043\340\356\276\025\201\255\045"
	"\072\255\275\323\135\236\017\307\126\353\341\330\250\115\147\274"
	"\041\256\126\216\013\056\374\330\001\373\022\112\251\075\166\104"
	"\215\101\163\240\320\037\141\037\310\224\331\202\036\102\211\201"
	"\273\351\122\315\333\106\025\333\336\207\151\247\174\217\014\051"
	"\027\152\355\066\021\127\231\057\314\012\073\247\364\332\063\222"
	"\045\102\227\313\206\167\216\132\375\361\257\115\347\170\021\325"
	"\160\056\250\141\311\224\056\310\316\130\150\314\031\202\360\132"
	"\231\023\100\063\066\027\375\047\252\134\014\213\352\004\065\363"
	"\261\344\373\305\110\214\243\215\307\117\335\174\164\150\127\225"
	"\366\024\011\010\223\156\070\213\077\113\071\346\077\047\314\171"
	"\215\116\224\054\357\172\235\204\360\357\077\166\052\324\034\065"
	"\061\366\146\161\370\136\044\170\177\010\124\270\343\277\042\002"
	"\006\262\331\101\056\243\251\226\265\001\274\027\145\043\051\114"
	"\211\310\056\375\171\240\071\223\150\173\321\302\053\102\166\174"
	"\061\066\232\156\350\357\123\221\367\361\362\341\341\222\366\021"
	"\141\156\041\046\063\263\237\135\123\316\001\055\070\234\224\016"
	"\116\304\130\064\245\003\313\374\264\233\041\143\131\221\040\233"
	"\171\316\374\102\012\021\373\152\030\137\155\110\250\154\270\101"
	"\245\331\357\134\055\143\122\355\366\277\344\355\354\333\332\040"
	"\326\232\067\165\264\172\161\272\336\043\342\117\146\236\026\357"
	"\174\165\034\106\314\347\304\255\164\371\154\025\207\006\122\042"
	"\315\347\260\075\143\113\276\227\250\041\105\277\165\365\147\140"
	"\055\145\336\132\017\247\104\116\147\031\352\327\255\256\134\372"
	"\275\016\014\252\360\071\255\340\356\137\365\340\054\177\200\162"
	"\215\346\357\073\224\053\370\160\274\170\214\171\245\037\340\327"
	"\173\235\014\136\135\257\333\166\357\046\007\032\361\203\304\017"
	"\365\237\126\002\031\233\321\256\042\047\107\361\101\373\232\140"
	"\201\037\206\201\272\335\054\240\164\327\232\355\015\243\236\226"
	"\110\364\267\164\305\205\161\237\206\114\254\343\034\363\174\306"
	"\040\235\250\017\013\317\106\134\032\121\007\340\047\063\146\372"
	"\314\246\366\251\306\005\147\100\074\076\011\263\135\264\247\000"
	"\101\015\165\317\245\252\044\175\206\157\106\371\072\334\237\056"
	"\364\243\240\250\126\067\137\364\305\143\160\224\364\025\346\346"
	"\042\124\326\376\174\044\072\025\263\203\346\020\166\052\230\335"
	"\101\157\204\076\013\010\220\071\220\034\105\305\040\376\346\243"
	"\134\371\017\363\260\112\011\143\315\357\163\103\032\013\040\133"
	"\172\244\231\206\255\052\300\076\107\006\003\150\004\352\014\140"
	"\344\033\124\224\145\135\367\062\115\152\166\147\165\226\302\360"
	"\073\134\167\351\207\067\050\316\075\054\066\102\026\103\243\372"
	"\136\367\217\303\124\206\365\241\361\153\011\146\002\313\127\076"
	"\050\316\047\257\006\120\176\104\174\265\206\223\370\051\216\126"
	"\040\035\032\165\243\020\027\225\174\040\373\176\354\123\275\025"
	"\041\345\304\050\065\102\154\261\367\362\104\360\034\322\106\075"
	"\360\141\262\224\161\312\051\355\352\044\154\327\170\051\354\231"
	"\017\260\301\104\363\056\366\353\041\073\333\075\016\042\173\376"
	"\204\056\222\365\370\273\342\343\340\117\272\130\171\247\362\210"
	"\130\264\314\113\342\303\067\004\376\023\101\014\066\275"
#define      pswd_z	256
#define      pswd	((&data[4090]))
	"\235\257\344\131\222\307\071\341\202\222\132\051\205\343\201\072"
	"\260\315\035\163\004\041\161\027\143\176\116\040\211\010\013\046"
	"\267\360\177\112\267\271\053\072\114\206\143\321\152\345\013\267"
	"\203\122\367\035\176\157\067\040\213\153\121\223\062\147\322\332"
	"\327\166\251\164\322\235\275\031\117\214\137\315\342\011\204\145"
	"\134\174\203\332\353\273\373\167\046\115\012\130\264\334\063\214"
	"\123\334\000\045\172\275\077\312\112\236\227\054\250\033\222\004"
	"\230\026\337\204\321\332\373\370\050\006\121\334\342\204\151\066"
	"\140\151\133\333\047\232\245\161\071\074\236\342\130\061\346\360"
	"\110\305\164\031\240\157\022\310\165\143\245\130\347\017\216\110"
	"\170\352\043\240\205\311\021\276\005\260\241\135\341\207\116\051"
	"\115\302\103\356\062\125\267\250\271\135\000\240\154\217\350\344"
	"\172\014\204\377\325\226\276\333\107\137\070\051\347\206\122\065"
	"\111\226\043\173\354\333\043\245\070\044\105\244\264\056\211\056"
	"\072\016\056\020\245\355\353\354\114\044\025\064\252\150\151\364"
	"\376\214\160\353\147\224\220\237\271\326\104\155\004\315\234\077"
	"\334\313\117\201\270\072\155\005\136\203\071\011\353\242\376\352"
	"\057\156\325\226\002\145\066\273\073\173\051\100\111\306\177\045"
	"\222\317\246\112\011\024\117\150\227\211\162\203\053\160\155\032"
	"\262\051\215\267\112\377\317\255\175\035\315\006\045\331\054\335"
	"\311\254\047\201\145\123\273\261\332\037\203\104\004\217\136\266"
	"\270\354\156\002\353\075\260\151\132\176\157\200\127\234\135\041"
	"\110\205\242\256\330\136\140\262\175\343"
#define      chk2_z	19
#define      chk2	((&data[4407]))
	"\125\070\145\137\205\235\074\022\327\213\336\101\222\121\316\054"
	"\345\367\060\277\026\053\101"
#define      rlax_z	1
#define      rlax	((&data[4428]))
	"\237"
#define      tst2_z	19
#define      tst2	((&data[4433]))
	"\076\133\005\276\131\123\147\132\367\214\062\056\020\131\103\262"
	"\100\240\127\372\205\326\007\263\242"
#define      msg1_z	65
#define      msg1	((&data[4468]))
	"\241\170\231\172\326\371\054\123\335\043\325\117\170\015\026\030"
	"\251\146\376\210\244\047\340\340\131\204\366\316\120\016\374\130"
	"\356\240\235\270\373\307\236\316\026\163\144\370\060\055\030\057"
	"\362\177\120\371\222\225\075\315\201\056\152\266\303\150\154\300"
	"\011\332\171\352\275\155\041\161\123\153\111\262\321\154\177\172"
	"\272\264\250\347\230\206\175\326\342\203\225\226\045\262"
#define      chk1_z	22
#define      chk1	((&data[4548]))
	"\225\154\252\371\126\374\332\203\340\170\305\261\171\216\331\247"
	"\211\362\327\242\074\172\343"
#define      date_z	1
#define      date	((&data[4571]))
	"\105"
#define      shll_z	10
#define      shll	((&data[4574]))
	"\200\035\016\040\215\276\165\302\331\030\034\023"
#define      inlo_z	3
#define      inlo	((&data[4584]))
	"\211\172\256"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
