Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.94 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <fcntl.h>
  5.  
  6. int main(int argc, char* argv[]){
  7.     char fname[128];
  8.     unsigned long long otp[2];
  9.  
  10.     if(argc!=2){
  11.         printf("usage : ./otp [passcode]\n");
  12.         return 0;
  13.     }
  14.  
  15.     int fd = open("/dev/urandom", O_RDONLY);
  16.     if(fd==-1) exit(-1);
  17.  
  18.     if(read(fd, otp, 16)!=16) exit(-1);
  19.     close(fd);
  20.  
  21.     sprintf(fname, "/tmp/%llu", otp[0]);
  22.     FILE* fp = fopen(fname, "w");
  23.     if(fp==NULL){ exit(-1); }
  24.     fwrite(&otp[1], 8, 1, fp);
  25.     fclose(fp);
  26.  
  27.     printf("OTP generated.\n");
  28.  
  29.     unsigned long long passcode=0;
  30.     FILE* fp2 = fopen(fname, "r");
  31.     if(fp2==NULL){ exit(-1); }
  32.     fread(&passcode, 8, 1, fp2);
  33.     fclose(fp2);
  34.  
  35.     if(strtoul(argv[1], 0, 16) == passcode){
  36.         printf("Congratz!\n");
  37.         system("/bin/cat flag");
  38.     }
  39.     else{
  40.         printf("OTP mismatch\n");
  41.     }
  42.  
  43.     unlink(fname);
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement