home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / comm / misc / Parakey.lha / PARAKEY.C next >
Encoding:
C/C++ Source or Header  |  1996-12-11  |  2.4 KB  |  150 lines

  1. /********************************
  2.  * NAME:    Parakey             *
  3.  * VERSION: 1.00                *
  4.  * DATE:    11/12/1996          *
  5.  * AUTHOR:  Enriko 'R!(0' Groen *
  6.  ********************************/
  7.  
  8. #include "stdio.h"
  9. #include "string.h"
  10. #include "ctype.h"
  11.  
  12. #define CR 10
  13. #define SPACE 20
  14. #define FALSE 0
  15. #define TRUE 1
  16. #define MAX_BYTE 520
  17.  
  18. int AllCaps(char *string)
  19. {
  20.     int z=0;
  21.  
  22.     while(string[z]!='\0')
  23.     {
  24.         if((string[z]>96)&&(string[z]<124))
  25.             string[z]-=32;
  26.         z++;
  27.     }
  28.     return(z);
  29. }
  30.  
  31. void CloseProgram(int Error_Code, FILE *_File)
  32. {
  33.     if(_File == 0)
  34.         fclose(_File);
  35.     exit(Error_Code);
  36. }
  37.  
  38. int Read(char *byte, FILE *_File)
  39. {
  40.     int i, k, z = 0;
  41.  
  42.     for(i=0;(byte[i-1]!=CR) && z < MAX_BYTE;i++)
  43.     {
  44.         k = fgetc(_File);
  45.         if(!feof(_File))
  46.         {
  47.             byte[i] = k;
  48.             z++;
  49.         }
  50.     }
  51.     return(z);
  52. }
  53.  
  54. int main(int argc, char *argv[])
  55. {
  56.     FILE *_File;
  57.     long fpos;
  58.     char key[5], *keyline, byte[MAX_BYTE], BoxName[MAX_BYTE];
  59.     int code[5], c, pos, wijs;
  60.  
  61.     char verStr[]="$VER: ParaKey 1.00 (11.12.96) (c) by Enriko 'R!(0' Groen";
  62.  
  63.     printf("ParaKey 1.00 (11-12-1996) by Enriko 'R!(0' Groen...\n\n");
  64.  
  65.     /* Open password file */
  66.     _File = fopen("Parakey.code","r");
  67.  
  68.     if(_File == 0)
  69.     {
  70.         printf("ERROR: File Parakey.code could not be openened\n");
  71.         CloseProgram(10, _File);
  72.     }
  73.  
  74.     /* Check the parameters */
  75.     if (argc <=7)
  76.     {
  77.         if(argc<2)
  78.         {
  79.             printf("MailBoxname:\t");
  80.             scanf("%s", BoxName);
  81.         }
  82.         else
  83.         {
  84.             strcpy(BoxName,argv[1]);
  85.         }
  86.         if(argc<7)
  87.         {
  88.             for(c=0;c<5;c++)
  89.             {
  90.                 printf("Codenumber %d:\t", c+1);
  91.                 scanf("%d", &code[c]);
  92.             }
  93.             printf("\n");
  94.         }
  95.         else
  96.         {
  97.             /* Parameters to code-array */
  98.             for(c=0;c<5;c++)
  99.                 code[c]=atoi(argv[c+2]);
  100.         }
  101.     }
  102.     else
  103.     {
  104.         printf("USAGE: %s {<BBSName>} {<5 digit code>}\n", argv[0]);
  105.         exit(10);
  106.     }
  107.  
  108.     for(c=0;c<5;c++)
  109.     {
  110.         if((code[c]<1) || (code[c]>MAX_BYTE))
  111.         {
  112.             printf("ERROR: Code not allowed\n");
  113.             CloseProgram(10, _File);
  114.         }
  115.     }
  116.  
  117.     /* BBSName to uppercase */
  118.     AllCaps(BoxName);
  119.  
  120.     /* Find the right line */
  121.     fpos = 0;
  122.     while((pos = Read(byte, _File)) != 0)
  123.     {
  124.         if((keyline = strstr(byte, BoxName)) != NULL)
  125.             break;
  126.         fpos += pos;
  127.     }
  128.  
  129.     if(*keyline == NULL)
  130.     {
  131.         printf("ERROR: MailBoxname %s not found in Parakey.code file!\n", BoxName);
  132.         CloseProgram(5, _File);
  133.     }
  134.  
  135.     for(;!isspace(keyline[0]);keyline++);
  136.  
  137.     /* Find the characters in the password */
  138.     for(c=0;c<5;c++)
  139.     {
  140.         wijs=code[c];
  141.         key[c]=keyline[wijs];
  142.     }
  143.     key[5]=NULL;
  144.  
  145.     /* Return the keyword */
  146.     printf("%s key:\t%s\n", BoxName, key);
  147.     CloseProgram(0, _File);
  148. }
  149.  
  150.