Advertisement
Guest User

Untitled

a guest
Jul 4th, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.22 KB | None | 0 0
  1.  
  2. PASTEBIN.COM
  3. #1 paste tool since 2002
  4. newarchivehelpAPI
  5.  
  6. PASTEBIN MOBILE
  7. You can now share data on the move with Pastebin for: Android and Iphone.
  8. RECENT POSTS
  9. Anonymous
  10. None | 0 sec ago
  11. Anonymous
  12. C | 9 sec ago
  13. Anonymous
  14. None | 10 sec ago
  15. Anonymous
  16. SQL | 27 sec ago
  17. Anonymous
  18. None | 43 sec ago
  19. Anonymous
  20. None | 44 sec ago
  21. Derail Crew Rules
  22. None | 50 sec ago
  23. Anonymous
  24. None | 50 sec ago
  25.  
  26.  
  27. WHAT IS PASTEBIN?
  28. Pastebin is a website that hosts all your text & code on dedicated servers for easy sharing.
  29. learn more...
  30. DOMAIN REPORTS
  31. Loewe.it
  32. Devb.gov.hk
  33. Morethanjustmuscle...
  34. Thestwrd.com
  35. Mirvyazaniya.ru
  36. Doubatnabkl.net
  37. Sleeksorrow.blogsp...
  38. Hitchie.com
  39. Chat32.com
  40. Walla.co.il
  41.  
  42.  
  43. BY ANONYMOUS ON THE 24TH OF APR 2010 03:40:51 AMDOWNLOAD | RAW | EMBED | REPORT
  44. #include <stdio.h>
  45. #include <string.h>
  46. #include <time.h>
  47.  
  48. #define mystr "My own utility. Copyright (C) 2007-2010 hpgl, Russia"
  49.  
  50. #define allow595B
  51. #define allowA95B
  52. #define allow2A7B
  53.  
  54. #define fSVCTAG 0
  55. #define fHDDSN 1
  56. #define fHDDold 2
  57. #define t595B 0
  58. #define tD35B 1
  59. #define tA95B 2
  60. #define t2A7B 3
  61.  
  62. #ifdef allow595B
  63. #define f595B
  64. #endif
  65. #ifdef allowA95B
  66. #define f595B
  67. #endif
  68. #ifdef allow2A7B
  69. #define f595B
  70. #endif
  71.  
  72. char bSuffix[]="595BD35BA95B2A7B";
  73.  
  74. char scancods[]="\00\0331234567890-=\010\011qwertyuiop[]\015\377asdfghjkl;'`\377\\zxcvbnm,./";
  75. char encscans[]={0x05,0x10,0x13,0x09,0x32,0x03,0x25,0x11,0x1F,0x17,0x06,0x15, \
  76. 0x30,0x19,0x26,0x22,0x0A,0x02,0x2C,0x2F,0x16,0x14,0x07,0x18, \
  77. 0x24,0x23,0x31,0x20,0x1E,0x08,0x2D,0x21,0x04,0x0B,0x12,0x2E};
  78.  
  79. #ifdef allow2A7B
  80. char chartabl2A7B[72]="012345679abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0";
  81. #endif
  82.  
  83. unsigned int MD5magic[64]={
  84. 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
  85. 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
  86. 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
  87. 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
  88. 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
  89. 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
  90. 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
  91. 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
  92. 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
  93. 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
  94. 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05,
  95. 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
  96. 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
  97. 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
  98. 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
  99. 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391};
  100.  
  101. unsigned char inData[23],outData[16];
  102. char buf1output[32], buf1input[20];
  103. char bug4;
  104.  
  105. void calcsuffix(char bfunc, char btype, char *outbuf);
  106.  
  107. void initData(void) {
  108. *(int *)(&outData[0]) =0x67452301;
  109. *(int *)(&outData[4]) =0xEFCDAB89;
  110. *(int *)(&outData[8]) =0x98BADCFE;
  111. *(int *)(&outData[12])=0x10325476;
  112. }
  113.  
  114. typedef int (encfuncT1) (int num1, int num2, int num3);
  115.  
  116. #ifdef f595B
  117. int enc0F2(int num1, int num2, int num3) {return (((~num3 ^ num2) & num1) ^ ~num3);}
  118. int enc0F4(int num1, int num2, int num3) {return (( ~num2 ^ num1) ^ num3); }
  119. int enc0F5(int num1, int num2, int num3) {return (( ~num1 | ~num3) ^ num2); }
  120. #endif
  121. int enc1F2(int num1, int num2, int num3) {return ((( num3 ^ num2) & num1) ^ num3);}
  122. int enc1F4(int num1, int num2, int num3) {return (( num2 ^ num1) ^ num3); }
  123. int enc1F5(int num1, int num2, int num3) {return (( num1 | ~num3) ^ num2); }
  124. int encF3 (int num1, int num2, int num3) {return ((( num1 ^ num2) & num3) ^ num2);}
  125.  
  126. typedef int (encfuncT2)(encfuncT1 func, int num1, int num2, int num3, int key);
  127.  
  128. int enc1F1 (encfuncT1 func, int num1, int num2, int num3, int key)
  129. {
  130. return func(num1,num2,num3)+key;
  131. }
  132.  
  133. #ifdef f595B
  134. int enc0F1 (encfuncT1 func, int num1, int num2, int num3, int key)
  135. {
  136. return func(num1,num2,num3)-key;
  137. }
  138. #endif
  139.  
  140. unsigned int rol(unsigned int t, int bitsrot)
  141. {
  142. return (t >> (32-bitsrot)) | (t << bitsrot);
  143. }
  144.  
  145. void blockEncodeF(int *outdata, int *encblock, encfuncT2 func1,
  146. encfuncT1 func2, encfuncT1 func3, encfuncT1 func4, encfuncT1 func5 )
  147. {
  148. char S[4][4] = {{ 7, 12, 17, 22 },{ 5, 9, 14, 20 },{ 4, 11, 16, 23 },{ 6, 10, 15, 21 }};
  149. int A,B,C,D,t,i;
  150.  
  151. A=outdata[0];
  152. B=outdata[1];
  153. C=outdata[2];
  154. D=outdata[3];
  155.  
  156. for (i=0;i<64;i++) {
  157. t=MD5magic[i];
  158. switch (i>>4) {
  159. case 0: t=A+func1(func2,B,C,D, t+encblock[(i) & 15]); break;
  160. case 1: t=A+func1(func3,B,C,D, t+encblock[(i*5+1) & 15]); break;
  161. case 2: t=A+func1(func4,B,C,D, t+encblock[(i*3+5) & 15]); break;
  162. case 3: t=A+func1(func5,B,C,D, t+encblock[(i*7) & 15]); break;
  163. }
  164. A=D; D=C; C=B; B+=rol(t,S[i>>4][i&3]);
  165. };
  166.  
  167. outdata[0]+=A;
  168. outdata[1]+=B;
  169. outdata[2]+=C;
  170. outdata[3]+=D;
  171. }
  172.  
  173. void blockEncode(char *outdata, int *encblock, char btype) {
  174. if (btype==tD35B)
  175. blockEncodeF((int *)outdata,encblock,enc1F1,enc1F2,encF3,enc1F4,enc1F5);
  176. #ifdef f595B
  177. else
  178. blockEncodeF((int *)outdata,encblock,enc0F1,enc0F2,encF3,enc0F4,enc0F5);
  179. #endif
  180. }
  181.  
  182. void encode(char *inbuf,int cnt,char btype) {
  183. int encBlock[16];
  184. char *ptr;
  185. initData();
  186. memcpy(encBlock,inbuf,cnt);
  187. ptr=&((char *)encBlock)[cnt];
  188. *ptr++=0x80;
  189. memset(ptr,0,64-1-cnt);
  190. encBlock[16-2]=((unsigned int)cnt << 3);
  191. blockEncode(outData,encBlock,btype);
  192. }
  193.  
  194. void psw(char bfunc, char btype, char *outbuf) {
  195. int cnt,lenpsw,r;
  196. if (bfunc==fHDDold) {
  197. memcpy(inData,buf1input,11);
  198. calcsuffix(bfunc,btype,outbuf);
  199. for (cnt=0;cnt<8;cnt++)
  200. outbuf[cnt]= scancods[ outbuf[cnt] ];
  201. } else {
  202. memset(inData,0,sizeof(inData));
  203.  
  204. if (bfunc==fSVCTAG) cnt=7;
  205. else cnt=11;
  206.  
  207. if ((bfunc==fHDDSN) && (btype==tA95B))
  208. memcpy(inData,&buf1input[3],cnt-3);
  209. else
  210. memcpy(inData,buf1input,cnt);
  211.  
  212. if (btype==t595B) memcpy(&inData[cnt],&bSuffix[0],4); else
  213. if (btype==tD35B) memcpy(&inData[cnt],&bSuffix[4],4); else
  214. if (btype==tA95B) memcpy(&inData[cnt],&bSuffix[0],4); else
  215. if (btype==t2A7B) memcpy(&inData[cnt],&bSuffix[12],4);
  216. calcsuffix(bfunc,btype,outbuf);
  217. memcpy(&inData[cnt+4],outbuf,8);
  218. encode(inData,23,btype);
  219. r = outData[0] % 9;
  220. lenpsw = 0;
  221. for (cnt=0;cnt<16;cnt++) {
  222. if ((r <= cnt) && (lenpsw<8)) {
  223. buf1output[lenpsw++] = scancods[encscans[outData[cnt] % sizeof(encscans)]];
  224. }
  225. }
  226. }
  227. }
  228.  
  229.  
  230. void calcsuffix(char bfunc, char btype, char* outbuf) {
  231. int i,r;
  232. if (bfunc==fSVCTAG) {
  233. outbuf[0] = inData[4];
  234. outbuf[1] = (inData[4] >> 5) | (((inData[3] >> 5) | (inData[3] << 3)) & 0xF1);
  235. outbuf[2] = (inData[3] >> 2);
  236. outbuf[3] = (inData[3] >> 7) | (inData[2] << 1);
  237. outbuf[4] = (inData[2] >> 4) | (inData[1] << 4);
  238. } else if (bfunc==fHDDSN) {
  239. outbuf[0] = inData[8];
  240. outbuf[1] = (inData[8] >> 5) | (((inData[9] >> 5) | (inData[9] << 3)) & 0xF1);
  241. outbuf[2] = (inData[9] >> 2);
  242. outbuf[3] = (inData[9] >> 7) | (inData[10] << 1);
  243. outbuf[4] = (inData[10] >> 4) | (inData[1] << 4);
  244. }
  245. outbuf[5] = (inData[1] >> 1);
  246. outbuf[6] = (inData[1] >> 6) | (inData[0] << 2);
  247. outbuf[7] = (inData[0] >> 3);
  248. for (i=0;i<8;i++) {
  249. r = 0xAA;
  250. if (outbuf[i] & 1)
  251. if (bfunc==fHDDSN) r ^= inData[8];
  252. else if (bfunc==fSVCTAG) r ^= inData[4];
  253. if (outbuf[i] & 2)
  254. if (bfunc==fHDDSN) r ^= inData[9];
  255. else if (bfunc==fSVCTAG) r ^= inData[3];
  256. if (outbuf[i] & 4)
  257. if (bfunc==fHDDSN) r ^= inData[10];
  258. else if (bfunc==fSVCTAG) r ^= inData[2];
  259. if (outbuf[i] & 8)
  260. r ^= inData[1];
  261. if (outbuf[i] & 16)
  262. r ^= inData[0];
  263. outbuf[i] = encscans[r % sizeof(encscans)];
  264. }
  265. }
  266.  
  267. int main(int argc, char *argv[]) {
  268. unsigned char len,len1,bfunc,eol=1,echo=0, *minus,s2[20];
  269. signed char btype; int argn=0;
  270.  
  271. if (argc>1)
  272. echo=1;
  273.  
  274. if (!echo)
  275. fputs("" mystr "\n" \
  276. "Short service tag should be right padded with '*' up to length 7 chars\n" \
  277. "HDD serial number is right 11 chars from real HDDSerNum left padded with '*'\n" \
  278. "Some BIOSes has left pad HDD serial number with spaces instead '*'\n",stdout);
  279.  
  280. while (!feof(stdin)) {
  281. if ((argc<=1) && argn) break;
  282. fputs("Input: #",stdout);
  283. if (argc>1) {
  284. strncpy(buf1input,argv[++argn],sizeof(buf1input));argc--;
  285. }
  286. else {
  287. if (!eol) while (!feof(stdin) && (fgetc(stdin)!='\n')); eol=0;
  288. if (fgets(buf1input,16+1+1,stdin)==NULL) {
  289. if (echo) fputs("\n",stdout);
  290. break;
  291. }
  292. }
  293. len=strlen(buf1input);
  294. if (len && (buf1input[len-1]=='\n')) {len--;eol=1;buf1input[len]=0;}
  295. if (echo) {fputs(buf1input,stdout);fputs("\n",stdout);}
  296. minus=strchr(buf1input,'-');
  297. if (len==11) {
  298. if (minus!=NULL) {
  299. fputs("- Incorrect input\n",stdout);
  300. continue;
  301. }
  302. bfunc=fHDDold;
  303. fputs("By HDD serial number for older BIOS: ",stdout);
  304. } else {
  305. if (len==0) break;
  306. if (minus==NULL) {
  307. fputs("- No BIOS type found in input string, must be followed by -595B and other registered\n",stdout);
  308. continue;
  309. }
  310. len1=minus-(unsigned char*)buf1input;
  311.  
  312. btype=-1;
  313. #ifdef allow595B
  314. if (strncmp(&buf1input[len1+1],&bSuffix[0],4)==0) btype=t595B;
  315. else
  316. #endif
  317. if (strncmp(&buf1input[len1+1],&bSuffix[4],4)==0) btype=tD35B;
  318. else
  319. #ifdef allowA95B
  320. if (strncmp(&buf1input[len1+1],&bSuffix[8],4)==0) btype=tA95B;
  321. else
  322. #endif
  323. #ifdef allow2A7B
  324. if (strncmp(&buf1input[len1+1],&bSuffix[12],4)==0) btype=t2A7B;
  325. #endif
  326. if (btype<0) {
  327. fputs("- Invalid service tag in input string, allowed only -D35B and other registered\n",stdout);
  328. continue;
  329. }
  330. struct tm *time1; time_t timer1=time(NULL);
  331. time1=gmtime(&timer1);
  332. strftime(s2,sizeof(s2),"%d.%m.%Y %H:%M",time1);
  333. fputs(s2,stdout);
  334. fputs(" DELL ",stdout);
  335.  
  336. if (len1==7) {
  337. bfunc=fSVCTAG;
  338. fputs("service tag: ",stdout);
  339. fputs(buf1input,stdout);
  340. } else
  341. if (len1==11) {
  342. bfunc=fHDDSN;
  343. fputs("HDD serial number: ",stdout);
  344. fputs(buf1input,stdout);
  345. }
  346. else {
  347. fputs("- Incorrect input, must be 7 chars service tag or 11 chars HDD serial number\n",stdout);
  348. continue;
  349. }
  350. }
  351. psw(bfunc,btype,buf1output);
  352. fputs(" password: ",stdout);
  353. fputs(buf1output,stdout);
  354. if (bug4) fputs(" !bug4 warning - password may not work!",stdout);
  355.  
  356. if (btype==t595B) if (bfunc==fSVCTAG) { //to check if A95B bug
  357. char mpw1[20];
  358. strcpy(mpw1,buf1output);
  359. psw(bfunc,tA95B,buf1output);
  360. if (strcmp(mpw1,buf1output)!=0) {
  361. fputs(" passwordA95B: ",stdout);
  362. fputs(buf1output,stdout);
  363. }
  364. }
  365. fputs("\n",stdout);
  366. }
  367. return 0;
  368. }
  369. SUBMIT A CORRECTION OR AMENDMENT BELOW. MAKE A NEW POST
  370. To highlight particular lines, prefix each line with @h@
  371. Syntax highlighting:
  372. Post expiration:
  373. Post exposure:
  374. Name / Title:
  375. Email:
  376. © 2010 - pastebin.com | new post | API | tools | archive | domains archive | help | links emailer | twitterrrrr
  377. Friends: W3Spy | BeenSolved | Tubelogr | VisualizeTraffic | Forumlogr 0.01760
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement