Code: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> char xlat[] = { 0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f, 0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72, 0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53, 0x55, 0x42, 0x73, 0x67, 0x76, 0x63, 0x61, 0x36, 0x39, 0x38, 0x33, 0x34, 0x6e, 0x63, 0x78, 0x76, 0x39, 0x38, 0x37, 0x33, 0x32, 0x35, 0x34, 0x6b, 0x3b, 0x66, 0x67, 0x38, 0x37, 0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f, 0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72, 0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53, 0x55, 0x42, 0x73, 0x67, 0x76, 0x63, 0x61, 0x36, 0x39, 0x38, 0x33, 0x34, 0x6e, 0x63, 0x78, 0x76, 0x39, 0x38, 0x37, 0x33, 0x32, 0x35, 0x34, 0x6b, 0x3b, 0x66, 0x67, 0x38, 0x37 }; char *pname; int decrypt(unsigned char *enc_pw, unsigned char *dec_pw) { unsigned int seed, i, val = 0; if (strlen(enc_pw) & 1) return -1; seed = (enc_pw[0] - '0') * 10 + enc_pw[1] - '0'; if (seed > 15 || !isdigit(enc_pw[0]) || !isdigit(enc_pw[1])) return -2; for (i = 2 ; i <= strlen(enc_pw); i++) { if (i !=2 && !(i & 1)) { dec_pw[i/2 - 2] = val ^ xlat[seed++]; val = 0; } val *= 16; if (isdigit(enc_pw[i] = toupper(enc_pw[i]))) { val += enc_pw[i] - '0'; continue; } if (enc_pw[i] >= 'A' && enc_pw[i] <= 'F') { val += enc_pw[i] - 'A' + 10; continue; } if (strlen(enc_pw) != i) return -4; } dec_pw[++i / 2] = 0; return 0; } void usage() { fprintf(stdout, "Usage: %s <encrypted password>\n", pname); exit (1); } int main(int argc, char *argv[]) { char *passwd; pname = argv[0]; int i; if (argc != 2) usage(); if ((strlen(argv[1])%2)!=0) { fprintf(stderr, "Invalid password length - must be even!\n\n"); usage(); } for (i=0; i<strlen(argv[1]); i++) { *argv[1]=toupper(*argv[1]); if( ! ((*argv[1]>='A' && *argv[1]<='F') || (*argv[1]>='0' && *argv[1]<='9')) ) { fprintf(stderr, "Invalid character in password found!\n"); usage(); } } if (!(passwd = calloc(1,(sizeof(argv[1]))%2+2))) exit (1); if (decrypt(argv[1], passwd)) { fprintf(stderr, "String decryption error!\n"); free(passwd); exit (1); } fprintf(stdout, "Passwd: %s\n", passwd); free(passwd); return 0; } Простенький декриптор type 7 паролей cisco ios. Писался по причине того, что кроме Cain&Abel ни одна утилита не справляется с декриптованием длинных type 7 паролей. Собирается так: gcc ./type7crack.c -o type7crack
вот такая штука оч сильно нужна была на ССh7 для хак квеста(последние задание: хакнуть цицку и поиметь пас)
Ага, если бы народ внимательно смотрел моё конкурсное видео с последним этапом у них прорблем не возникло бы. Я в видео по косточкам разобралл как это делать, причём когда делал не знал о том,что последний этап будет один в один по моему видео.