السلام عليكم ورحمه الله
ازيكم يا شباب مجتمعنا العزيز
درس اليوم هو بسيط جدا جدا وهو كيفيه تشفير ال shell script
اكيد فيه اكتر من طريقة ولكن الطريقة دى سهله جدا ومافيها مشاكل ان شاء الله
دلوقتى على شان ما اطول عليكم
عليكم بزيارة الموقع التالى لمزيد من المعلومات
دلوقتى نسحب الاداة
افتح الشل
wget
ثم فك الضغط
وادخل الى المجلد
واعمل
طيب دلوقتى عايزين بقى نشفر سكربت
عندنا اسكربت وليكن der_media.sh
نفذ الامر التالى للتشفير
هتلاقى ظهر لك ملفين
وهما
der_media.sh.x.c
der_media.sh.x
كدا تم التشفير بنجاح نيجى نعرض ونشوف ما بداخل der_media.sh.x.c
طبعا هو اتحول من الباش الى c
look this
ازيكم يا شباب مجتمعنا العزيز
درس اليوم هو بسيط جدا جدا وهو كيفيه تشفير ال shell script
اكيد فيه اكتر من طريقة ولكن الطريقة دى سهله جدا ومافيها مشاكل ان شاء الله
دلوقتى على شان ما اطول عليكم
عليكم بزيارة الموقع التالى لمزيد من المعلومات
دلوقتى نسحب الاداة
افتح الشل
wget
كود:
http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz
كود:
tar xzvf shc-3.8.6.tgz
كود:
cd shc-3.8.6
كود:
make ;make install
طيب دلوقتى عايزين بقى نشفر سكربت
عندنا اسكربت وليكن der_media.sh
نفذ الامر التالى للتشفير
كود:
shc -f der_media.sh
وهما
der_media.sh.x.c
der_media.sh.x
كدا تم التشفير بنجاح نيجى نعرض ونشوف ما بداخل der_media.sh.x.c
طبعا هو اتحول من الباش الى c
look this
كود:
#if 0 shc Version 3.8.6, Generic Script Compiler Copyright (c) 1994-2006 Francisco Rosales <[email protected]> shc -f der_media.sh #endif static char data [] = #define chk2_z 19 #define chk2 ((&data[1])) "\261\001\006\137\015\100\115\334\172\170\114\054\276\077\025\073" "\266\257\330\164\341\136" #define rlax_z 1 #define rlax ((&data[22])) "\106" #define date_z 4 #define date ((time_t*)(&data[24])) "\310\253\000\064\124" #define opts_z 1 #define opts ((&data[28])) "\100" #define text_z 1395 #define text ((&data[117])) "\306\045\001\162\172\072\115\345\244\334\373\334\316\076\136\177" "\040\275\060\044\003\131\077\161\042\376\210\107\272\311\141\201" "\357\142\363\151\235\101\117\102\036\112\037\354\211\175\154\252" "\072\234\317\076\366\016\257\030\014\070\137\307\002\300\110\361" "\043\074\133\301\175\252\003\233\365\042\210\176\237\364\051\332" "\221\370\030\207\006\310\237\023\012\110\056\307\011\176\107\224" "\323\103\033\070\266\131\130\237\166\110\257\126\251\242\354\205" "\050\234\033\310\227\013\231\363\212\031\102\325\307\070\354\076" "\310\337\201\203\246\272\151\221\230\331\226\310\336\245\334\071" "\267\106\326\366\202\025\006\363\332\035\320\115\266\345\032\170" "\156\344\051\266\070\077\362\342\055\150\173\204\056\075\100\227" "\031\134\115\013\270\311\045\267\167\054\227\211\044\104\112\162" "\271\231\120\317\072\221\076\320\257\217\141\031\302\007\013\134" "\027\261\351\075\027\271\142\212\124\000\267\246\364\265\027\341" "\310\014\025\053\212\235\160\036\007\001\020\156\311\070\365\115" "\251\032\300\111\376\334\203\377\173\216\104\251\167\346\325\271" "\077\077\032\340\064\233\276\065\241\277\054\260\130\301\366\170" "\125\210\127\152\026\140\344\330\314\133\155\315\030\122\002\172" "\262\145\126\135\227\112\040\130\331\074\267\376\311\024\024\342" "\327\003\305\213\004\054\027\062\146\045\230\030\074\234\106\217" "\323\112\353\165\025\111\115\137\014\064\234\053\025\351\351\031" "\357\012\010\307\076\127\001\270\000\340\216\130\103\012\335\062" "\061\245\324\322\304\146\232\152\036\101\007\127\367\245\225\150" "\273\357\333\310\100\262\240\230\264\166\244\177\246\057\056\145" "\221\330\034\271\336\312\173\204\145\275\354\100\327\215\253\100" "\356\141\322\111\102\004\167\373\121\150\316\122\205\361\132\100" "\324\136\070\245\103\341\110\226\004\317\212\337\022\131\306\147" "\372\367\150\053\106\273\314\257\316\047\133\276\225\131\123\272" "\112\173\211\230\221\351\253\242\274\221\205\357\070\000\060\332" "\364\043\120\114\065\104\034\373\140\215\103\072\135\370\277\272" "\034\265\233\155\352\156\365\377\365\124\112\071\236\243\127\325" "\023\307\216\366\357\150\054\325\357\311\354\147\376\145\137\007" "\126\326\242\042\200\140\171\356\305\153\123\176\157\022\220\377" "\371\214\374\275\013\154\053\370\356\135\224\226\161\251\120\242" "\073\041\260\376\052\207\323\372\002\355\205\275\057\044\025\053" "\361\055\362\170\145\247\123\111\253\352\364\107\076\171\026\022" "\351\246\032\272\077\066\170\362\212\355\237\164\026\247\132\013" "\155\274\311\306\301\240\023\023\323\254\156\063\137\362\361\011" "\315\132\045\251\007\247\067\252\310\130\174\257\242\327\342\200" "\377\161\224\030\005\112\150\307\034\064\067\056\221\002\005\343" "\233\144\265\260\165\013\352\144\171\177\374\115\337\062\065\025" "\336\053\305\226\232\035\127\161\065\221\114\105\341\073\260\202" "\215\352\102\306\025\335\330\167\311\217\227\015\255\335\104\032" "\317\034\220\200\354\246\250\242\365\267\103\132\316\034\374\066" "\025\373\175\011\015\304\351\141\152\256\265\220\216\071\076\173" "\140\214\137\067\356\071\341\337\142\046\122\260\067\106\311\117" "\274\111\041\103\232\025\235\333\064\353\365\236\112\006\141\376" "\205\015\257\140\115\243\124\137\032\024\037\043\066\024\122\221" "\167\160\225\127\073\107\017\167\354\114\113\040\166\021\071\154" "\356\064\163\104\036\034\340\153\147\174\200\054\252\111\170\126" "\234\046\364\336\013\301\140\026\204\104\346\245\061\004\117\000" "\350\033\065\373\374\365\132\051\116\347\022\257\052\033\343\026" "\207\360\326\202\226\272\145\104\073\327\302\240\160\356\313\362" "\113\343\305\176\175\347\273\103\172\134\246\067\320\376\354\222" "\163\010\076\351\315\127\044\161\161\343\140\067\306\142\211\371" "\301\312\307\345\374\164\102\216\046\063\340\261\043\032\161\152" "\224\200\016\372\230\313\332\013\105\321\017\210\310\243\131\111" "\256\261\111\247\176\147\034\265\347\255\326\061\066\312\061\320" "\320\127\351\057\060\025\314\210\344\330\037\154\374\030\067\154" "\007\214\104\200\067\226\202\212\107\152\364\147\104\054\100\055" "\240\170\327\205\071\172\355\071\030\302\335\011\030\237\032\314" "\373\177\023\310\056\161\122\176\330\007\001\144\271\055\217\012" "\065\364\014\123\216\002\267\073\061\273\147\156\035\327\271\210" "\361\147\356\310\051\101\035\067\145\201\235\314\216\200\211\274" "\033\110\205\157\041\237\116\307\005\052\316\306\261\125\274\130" "\202\233\363\317\341\054\024\056\325\246\077\144\042\266\274\372" "\367\076\066\015\147\315\230\043\331\311\352\114\357\345\302\140" "\132\051\030\234\046\107\022\275\174\127\006\340\354\262\236\000" "\275\174\042\164\143\360\376\273\240\067\115\320\372\051\070\164" "\150\153\337\107\146\346\216\007\026\221\276\356\351\223\050\327" "\342\312\014\370\156\213\076\304\361\011\243\334\302\045\365\370" "\362\200\144\353\275\327\177\160\041\023\363\006\210\255\220\243" "\215\226\343\222\036\046\225\340\171\314\273\151\346\100\047\176" "\373\070\144\144\035\117\131\075\323\146\203\046\375\242\012\363" "\155\040\007\312\046\255\104\245\065\046\255\132\317\031\022\370" "\343\132\050\035\155\136\066\122\264\341\257\330\326\003\210\074" "\364\315\123\230\070\360\007\301\236\101\200\055\120\151\106\013" "\104\265\163\261\154\120\205\041\121\337\166\067\060\206\077\132" "\172\343\047\353\340\046\074\350\364\251\131\300\123\027\221\236" "\150\341\033\216\046\263\074\325\056\214\265\336\257\044\341\021" "\261\045\263\207\227\142\070\366\110\203\337\050\241\216\311\046" "\326\347\102\143\352\324\304\355\041\377\356\253\325\236\075\073" "\137\100\074\214\203\142\246\163\316\344\372\237\357\123\224\242" "\154\255\254\376\312\050\225\105\305\316\051\251\221\164\166\116" "\056\172\143\367\217\315\254\241\015\024\064\035\257\003\376\300" "\012\255\241\062\134\100\346\312\014\324\156\265\301\015\373\046" "\035\003\252\207\343\277\242\065\340\343\040\271\175\332\122\021" "\213\303\072\155\056\250\053\153\011\247\375\072\252\343\100\006" "\072\013\115\115\347\127\104\323\053\150\020\043\252\220\315\262" "\174\061\312\200\106\166\243\337\301\054\100\376\075\165\032\074" "\254\070\117\026\177\132\341\353\375\100\073\320\351\201\373\067" "\137\230\164\263\210\165\244\007\252\037\127\112\161\353\251\263" "\031\355\157\213\276\010\376\367\146\000\140\000\377\332\002\300" "\042\363\343\137\117\245\334\371\250\170\357\313\000\156\152\365" "\227\104\206\217\135\016\226\045\256\251\046\255\203" #define shll_z 10 #define shll ((&data[1547])) "\034\127\157\232\054\132\313\314\021\367\352\121" #define pswd_z 256 #define pswd ((&data[1585])) "\342\145\236\132\124\151\133\302\324\120\132\031\327\351\167\345" "\200\234\223\051\302\101\255\353\257\123\007\353\027\225\272\316" "\060\267\300\351\262\127\052\052\300\152\273\224\362\256\223\113" "\252\142\363\025\260\047\343\073\142\361\046\172\207\340\111\267" "\230\011\240\113\141\313\166\042\065\062\266\050\340\112\164\212" "\255\150\240\135\217\203\230\362\165\277\154\374\237\265\263\070" "\277\124\203\041\037\371\103\125\053\372\175\014\104\362\227\362" "\132\067\117\351\273\350\333\060\247\110\054\107\375\340\200\275" "\065\003\336\124\375\042\252\051\034\047\065\141\032\314\124\164" "\004\243\136\277\214\071\357\064\202\034\173\177\374\374\075\062" "\000\034\206\375\076\061\047\133\131\134\275\163\051\021\347\056" "\265\106\355\102\177\335\166\001\371\362\201\366\356\277\051\356" "\333\260\354\032\341\023\166\072\160\063\255\232\105\225\310\373" "\333\266\075\133\223\263\135\215\246\337\204\224\236\255\203\172" "\135\160\224\077\203\012\171\364\076\047\216\203\274\127\176\230" "\015\274\363\241\157\121\057\025\060\264\252\316\142\056\110\277" "\236\335\377\041\350\170\026\046\237\245\252\134\374\051\364\012" "\345\350\253\124\071\333\152\151\217\025\070\000\131\163\367\073" "\330\226\226\054\000\361\357\324\102\111\356\032\063\145\000\263" "\002\224\335\304\325\212\257\204\336\267\205\067\052\174\163\002" "\022\011\057\022\373\036\347\075\150\326\130\233\073\130\117\076" "\354\054\002\301\266\262\106\224\151" #define tst2_z 19 #define tst2 ((&data[1906])) "\107\077\227\375\100\133\011\146\021\127\031\252\025\275\054\311" "\161\331\125\350\062\002\132\111" #define msg1_z 42 #define msg1 ((&data[1931])) "\345\124\203\115\162\245\327\321\042\253\325\151\047\024\226\124" "\302\372\350\156\347\227\351\233\251\323\214\214\250\112\041\272" "\241\267\332\263\242\174\160\155\104\323\231\012\113\126\052\333" #define inlo_z 3 #define inlo ((&data[1975])) "\163\056\353" #define xecc_z 15 #define xecc ((&data[1980])) "\144\247\244\370\177\057\032\146\144\001\203\247\074\264\330\210" "\372" #define lsto_z 1 #define lsto ((&data[1995])) "\120" #define tst1_z 22 #define tst1 ((&data[2000])) "\362\174\130\072\305\367\377\051\046\003\303\326\134\216\340\364" "\022\223\125\313\214\345\221\263\156\153\274\360\225\005" #define chk1_z 22 #define chk1 ((&data[2026])) "\356\320\023\340\342\352\255\175\251\342\047\204\121\121\361\257" "\351\024\100\330\115\146\234" #define msg2_z 19 #define msg2 ((&data[2053])) "\202\251\323\350\014\361\334\170\323\257\365\031\003\175\110\214" "\225\021\217\065\050\020\120\335\013\216\374"/* End of data[] */; #define hide_z 4096 #define DEBUGEXEC 0 /* Define as 1 to debug execvp calls */ #define TRACEABLE 0 /* Define as 1 to enable ptrace the executable */ /* 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 */ /* * 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]; } int chkenv(int argc) { char buff[512]; unsigned mask, m; int l, a, c; char * string; extern char ** environ; mask = (unsigned)chkenv; mask ^= (unsigned)getpid() * ~mask; sprintf(buff, "x%x", 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], "=%u %d", mask, argc); putenv(strdup(buff)); return 0; } c = sscanf(string, "%u %d%c", &m, &a, buff); if (c == 2 && m == mask) { /* 3rd */ rmarg(environ, &string[-l - 1]); return 1 + (argc - a); } return -1; } #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(PTRACE_ATTACH) && defined(PT_ATTACH) # define PTRACE_ATTACH PT_ATTACH #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(PTRACE_ATTACH, 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; stte_0(); key(pswd, pswd_z); arc4(msg1, msg1_z); arc4(date, date_z); if (date[0] && date[0]<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; ret = chkenv(argc); 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); 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; if (text_z < hide_z) { /* Prepend spaces til a hide_z script size. */ scrpt = malloc(hide_z); if (!scrpt) return 0; memset(scrpt, (int) ' ', hide_z); memcpy(&scrpt[hide_z - text_z], text, text_z); } else { scrpt = text; /* Script text */ } } else { /* Reexecute */ if (*xecc) { scrpt = malloc(512); if (!scrpt) return 0; sprintf(scrpt, xecc, argv[0]); } else { scrpt = argv[0]; } } j = 0; varg[j++] = argv[0]; /* My own name at execution */ 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 DEBUGEXEC debugexec("main", argc, argv); #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; }
تعليق