R: [Pluto-help] Ecco il mio script in C : Come fare ?

FRANK libfrank a libero.it
Gio 15 Nov 2001 15:51:57 CET


Prova a scrivere gcc -o prova cisco.c
Questo dovrebbe crearti il file prova che è l'eseguibile per sorgente
cisco.c
Ovviamente poi controlla i permessi e se la directory dove hai il file non è
nel PATH allora lancia ./prova per eseguirlo.
Ciao ..

----- Original Message -----
From: <pacmo a libero.it>
To: Linux newsgroup <pluto-help a lists.pluto.linux.it>; interpuntonet
<angolinux a systems.it>
Sent: Wednesday, November 14, 2001 11:23 PM
Subject: [Pluto-help] Ecco il mio script in C : Come fare ?


> questo programmino in C dovrebbe servire a decriptare una password in
router
> che conosco benissimo per l'esattezza la password è 94giov peccato che con
> l'istruzione service password-encryption e con la perdita della chiave non
> si riesca più ad entrare.
> Ora il programma in C è il seguente :
> #include <stdio.h>
>
> #include <ctype.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
>
> };
>
>
>
> char pw_str1[] = "password 7 ";
>
> char pw_str2[] = "enable-password 7 ";
>
>
>
> char *pname;
>
>
>
> cdecrypt(enc_pw, dec_pw)
>
> char *enc_pw;
>
> 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(-1);
>
>
>
>         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(-1);
>
>         }
>
>
>
>         dec_pw[++i / 2] = 0;
>
>
>
>         return(0);
>
> }
>
>
>
> usage()
>
> {
>
>         fprintf(stdout, "Usage: %s -p <encrypted password>\n", pname);
>
>         fprintf(stdout, "       %s <router config file> <output file>\n",
> pname);
>
>
>
>         return(0);
>
> }
>
>
>
> main(argc,argv)
>
> int argc;
>
> char **argv;
>
>
>
> {
>
>         FILE *in = stdin, *out = stdout;
>
>         char line[257];
>
>         char passwd[65];
>
>         unsigned int i, pw_pos;
>
>
>
>         pname = argv[0];
>
>
>
>         if(argc > 1)
>
>         {
>
>                 if(argc > 3) {
>
>                         usage();
>
>                         exit(1);
>
>                 }
>
>
>
>                 if(argv[1][0] == '-')
>
>                 {
>
>                         switch(argv[1][1]) {
>
>                                 case 'h':
>
>                                 usage();
>
>                                 break;
>
>
>
>                                 case 'p':
>
>                                 if(cdecrypt(argv[2], passwd)) {
>
>                                         fprintf(stderr, "Error.\n");
>
>                                         exit(1);
>
>                                 }
>
>                                 fprintf(stdout, "password: %s\n", passwd);
>
>                                 break;
>
>
>
>                                 default:
>
>                                 fprintf(stderr, "%s: unknow option.",
> pname);
>
>                         }
>
>
>
>                         return(0);
>
>                 }
>
>
>
>                 if((in = fopen(argv[1], "rt")) == NULL)
>
>                         exit(1);
>
>                 if(argc > 2)
>
>                         if((out = fopen(argv[2], "wt")) == NULL)
>
>                                 exit(1);
>
>         }
>
>
>
>         while(1) {
>
>                 for(i = 0; i < 256; i++) {
>
>                         if((line[i] = fgetc(in)) == EOF) {
>
>                                 if(i)
>
>                                         break;
>
>
>
>                                 fclose(in);
>
>                                 fclose(out);
>
>                                 return(0);
>
>                         }
>
>                         if(line[i] == '\r')
>
>                                 i--;
>
>
>
>                         if(line[i] == '\n')
>
>                                 break;
>
>                 }
>
>                 pw_pos = 0;
>
>                 line[i] = 0;
>
>
>
>                 if(!strncmp(line, pw_str1, strlen(pw_str1)))
>
>                         pw_pos = strlen(pw_str1);
>
>
>
>                 if(!strncmp(line, pw_str2, strlen(pw_str2)))
>
>                         pw_pos = strlen(pw_str2);
>
>
>
>                 if(!pw_pos) {
>
>                         fprintf(stdout, "%s\n", line);
>
>                         continue;
>
>                 }
>
>
>
>                 if(cdecrypt(&line[pw_pos], passwd)) {
>
>                         fprintf(stderr, "Error.\n");
>
>                         exit(1);
>
>                 }
>
>                 else {
>
>                         if(pw_pos == strlen(pw_str1))
>
>                                 fprintf(out, "%s", pw_str1);
>
>                         else
>
>                                 fprintf(out, "%s", pw_str2);
>
>
>
>                         fprintf(out, "%s\n", passwd);
>
>                 }
>
>         }
>
>
>
> }
>
> Ho salvato il file con il nome cisco.c cosa debbo fare esattamente per
> compilarlo e lanciarlo ?
> Se lancio gcc -o cisco.c  mi risponde No input file
> Se lo lancio senza -o mi restituisce un file a.out (eseguibile ?)
> Cosa debbo fare ?
> Mi spiace, ma non so nulla di C, posso fare miracoli in Cobol, trovare
> casini in ASP ed a volte inPhp, ma di C NULLA , non so neppure come si fa
a
> compilare ed a lanciare
> Grazie
> Pier Antonio
>
>
>
>
> _______________________________________________
> pluto-help mailing list
> pluto-help a lists.pluto.linux.it
> http://lists.pluto.linux.it/mailman/listinfo/pluto-help
>





More information about the pluto-help mailing list