Advertisement
badeip

sophos - level2

Dec 21st, 2011
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. // by petter wahlman, http://www.twitter.com/badeip
  2. // convert ascii hex to binary.
  3. // usage:
  4. // gcc tohex.c -o tohex
  5. // tail -20 level2.txt | sed 's/[^a-f0-9]//g'| tr -d '\n' > level2.tmp
  6. // tohex level2.tmp > level2.zip
  7. //
  8. // ugly code:
  9.  
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <unistd.h>
  13. #include <fcntl.h>
  14. #include <sys/types.h>
  15. #include <sys/stat.h>
  16.  
  17. int main(int argc, char **argv)
  18. {
  19.     unsigned char *buf;
  20.     char *target;
  21.     struct stat st;
  22.     int i;
  23.     int fd;
  24.  
  25.     target = "./level2.tmp";
  26.     if (argc > 1)
  27.         target = argv[2];
  28.  
  29.     fd = open(target, O_RDONLY);
  30.     if (-1 == fd) {
  31.         perror(target);
  32.         return 1;
  33.     }
  34.  
  35.     fstat(fd, &st);
  36.  
  37.     buf = malloc(st.st_size);
  38.     read(fd, buf, st.st_size);
  39.     for (i = 0; i < st.st_size; i += 2) {
  40.         char tmp[3];
  41.         int val;
  42.  
  43.         strncpy(tmp, (const char *)&buf[i], 2);
  44.         val = strtoul(tmp, NULL, 16);
  45.         printf("%c", val);
  46.     }
  47.  
  48.     close(fd);
  49.  
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement