1 /*
2  *
3  *   Ophcrack is a Lanmanager/NTLM hash cracker based on the faster time-memory
4  *   trade-off using rainbow tables.
5  *
6  *   Created with the help of: Maxime Mueller, Luca Wullschleger, Claude
7  *   Hochreutiner, Andreas Huber and Etienne Dysli.
8  *
9  *   Copyright (c) 2008 Philippe Oechslin, Cedric Tissieres, Bertrand Mesot
10  *
11  *   Ophcrack is free software; you can redistribute it and/or modify
12  *   it under the terms of the GNU General Public License as published by
13  *   the Free Software Foundation; either version 2 of the License, or
14  *   (at your option) any later version.
15  *
16  *   Ophcrack is distributed in the hope that it will be useful,
17  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  *   GNU General Public License for more details.
20  *
21  *   You should have received a copy of the GNU General Public License
22  *   along with Ophcrack; if not, write to the Free Software
23  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24  *
25  *   This program is released under the GPL with the additional exemption
26  *   that compiling, linking, and/or using OpenSSL is allowed.
27  *
28  *
29  *
30  *
31 */
32 #ifndef MISC_H
33 #define MISC_H
34 
35 #include <stdio.h>
36 #include <stdint.h>
37 #include <config.h>
38 
39 #include <machine/endian.h>
40 
41 #define MY_MAX(a,b) ((a)>(b)?(a):(b))
42 #define MY_MIN(a,b) ((a)<(b)?(a):(b))
43 
44 #define my_setbit(x,pos) x | (1 << pos);
45 #define my_getbit(x,pos) (x & (1 << pos)) ? 1 : 0
46 
47 /** Maximum size of the buffers. */
48 
49 #define STR_BUFF_SIZE 512
50 
51 /** Maximum length of a password. */
52 
53 #define MAX_PWD_LEN 50
54 
55 /* Endianness conversion */
56 
57 #ifdef WORDS_BIGENDIAN
58 #   define ftohl64(x) __bswap64 (x)   /**< File (f) to host (h) int64.  */
59 #   define ftohl(x)   __bswap32 (x)   /**< File (f) to host (h) int32.  */
60 #   define ftohs(x)   __bswap16 (x)   /**< File (f) to host (h) short.  */
61 #else
62 #   define ftohl64(x) (x)            /**< File (f) to host (h) int64.  */
63 #   define ftohl(x)   (x)            /**< File (f) to host (h) int32.  */
64 #   define ftohs(x)   (x)            /**< File (f) to host (h) short.  */
65 #endif
66 
67 #ifdef  __cplusplus
68 extern "C" {
69 #endif
70 
71 typedef unsigned char uchar_t;
72 
73 #if defined WIN32 || defined sun
74 char *strsep(char** stringp, const char* delim);
75 #endif
76 
77 uint64_t find_freeram(void);
78 void convert_to_colon(uchar_t *input);
79 void convert_from_colon(uchar_t *input);
80 void wincp1252_to_ascii(uchar_t *str);
81 void fprintf_hex(FILE *file, char *str, int len);
82 int categorize_password(char *pwd);
83 const char *category_string(int category);
84 
85 #ifdef __cplusplus
86 }
87 #endif
88 #endif
89