Phr0zen_Penguin

hacking.h - Error Handler/Utility Functions

Jul 7th, 2015
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.72 KB | None | 0 0
  1. /**
  2.  * [hacking.h]
  3.  *
  4.  * General purpose (error handler/utility) functions.
  5.  */
  6. #ifndef HACKING_H
  7. #define HACKING_H
  8.  
  9. #include <stdio.h>      /* for perror()                 */
  10. #include <stdlib.h>     /* for malloc()                 */
  11. #include <string.h>     /* for strcpy() and strncat()   */
  12.  
  13. /**
  14.  * The fatal() function:
  15.  *
  16.  * A function to display an error message and then exit.
  17.  */
  18. void fatal(char *message)
  19. {
  20.     char    error_message[100];
  21.  
  22.     strcpy(error_message, "[!!] Fatal Error ");
  23.     strncat(error_message, message, 83);
  24.     perror(error_message);
  25.  
  26.     exit(-1);
  27. }
  28.  
  29.  
  30. /**
  31.  * The ec_malloc() function:
  32.  *
  33.  * An error-checked malloc() wrapper function.
  34.  */
  35. void *ec_malloc(unsigned int size)
  36. {
  37.     void    *ptr;
  38.  
  39.     ptr = malloc(size);
  40.  
  41.         if(ptr == NULL)
  42.             fatal("in ec_malloc() on memory allocation");
  43.  
  44.     return ptr;
  45. }
  46.  
  47. /**
  48.  * The dump() function:
  49.  *
  50.  * A function that dumps raw memory in hex byte and printable split format.
  51.  */
  52. void dump(const unsigned char *data_buffer, const unsigned int length)
  53. {
  54.     unsigned    char    byte;
  55.     unsigned    int     i;
  56.     unsigned    int     j;
  57.  
  58.         for(i = 0; i < length; i++)
  59.         {
  60.             byte = data_buffer[i];
  61.  
  62.             printf("%02x ", data_buffer[i]);                            /* Display byte in hex format. */
  63.  
  64.                 if(((i % 16) == 15) || (i == (length - 1)))
  65.                 {
  66.                         for(j = 0; j < (15 - (i % 16)); j++)
  67.                             printf("   ");
  68.  
  69.                     printf("| ");
  70.  
  71.                         for(j = (i - (i % 16)); j <= i; j++)            /* Display printable bytes from line... */
  72.                         {
  73.                             byte = data_buffer[j];
  74.  
  75.                                 if((byte > 31) && (byte < 127))         /* ...outside printable char range. */
  76.                                     printf("%c", byte);
  77.                                 else
  78.                                     printf(".");
  79.                         }
  80.  
  81.                     printf("\n");                                       /* End of the dump line (each line 16 bytes). */
  82.                 }
  83.         }
  84. }
  85.  
  86. #endif
Add Comment
Please, Sign In to add comment