1 #ifndef _HYDRA_H
2 
3 #include <stdio.h>
4 #ifdef __sun
5 #include <sys/int_types.h>
6 #elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) || defined(__APPLE__)
7 #include <inttypes.h>
8 #else
9 #include <stdint.h>
10 #endif
11 
12 #if defined(_INTTYPES_H) || defined(__CLANG_INTTYPES_H)
13 #define hPRIu64 PRIu64
14 #else
15 #define hPRIu64 "lu"
16 #endif
17 
18 #include <arpa/inet.h>
19 #include <ctype.h>
20 #include <errno.h>
21 #include <fcntl.h>
22 #include <netdb.h>
23 #include <netinet/in.h>
24 #include <signal.h>
25 #include <stdarg.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include <strings.h>
29 #include <sys/resource.h>
30 #include <sys/socket.h>
31 #include <sys/stat.h>
32 #include <sys/time.h>
33 #include <sys/types.h>
34 #include <sys/wait.h>
35 #include <time.h>
36 #include <unistd.h>
37 
38 #ifdef HAVE_OPENSSL
39 #define HYDRA_SSL
40 #endif
41 #ifdef HAVE_SSL
42 #ifndef HYDRA_SSL
43 #define HYDRA_SSL
44 #endif
45 #endif
46 
47 #ifdef HAVE_ZLIB
48 #include <zlib.h>
49 #endif
50 
51 #define OPTION_SSL 1
52 
53 #ifdef LIBOPENSSL
54 #ifndef NO_RSA_LEGACY
55 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
56 #define NO_RSA_LEGACY
57 #endif
58 #endif
59 #endif
60 
61 #define PORT_NOPORT -1
62 #define PORT_FTP 21
63 #define PORT_FTP_SSL 990
64 #define PORT_TELNET 23
65 #define PORT_TELNET_SSL 992
66 #define PORT_HTTP 80
67 #define PORT_HTTP_SSL 443
68 #define PORT_HTTP_PROXY 3128
69 #define PORT_HTTP_PROXY_SSL 3128
70 #define PORT_POP3 110
71 #define PORT_POP3_SSL 995
72 #define PORT_NNTP 119
73 #define PORT_NNTP_SSL 563
74 #define PORT_SMB 139
75 #define PORT_SMB_SSL 139
76 #define PORT_SMBNT 445
77 #define PORT_SMBNT_SSL 445
78 #define PORT_IMAP 143
79 #define PORT_IMAP_SSL 993
80 #define PORT_LDAP 389
81 #define PORT_LDAP_SSL 636
82 #define PORT_REXEC 512
83 #define PORT_REXEC_SSL 512
84 #define PORT_RLOGIN 513
85 #define PORT_RLOGIN_SSL 513
86 #define PORT_RSH 514
87 #define PORT_RSH_SSL 514
88 #define PORT_SOCKS5 1080
89 #define PORT_SOCKS5_SSL 1080
90 #define PORT_ICQ 4000
91 #define PORT_ICQ_SSL -1
92 #define PORT_VNC 5900
93 #define PORT_VNC_SSL 5901
94 #define PORT_PCNFS 0
95 #define PORT_PCNFS_SSL -1
96 #define PORT_MYSQL 3306
97 #define PORT_MYSQL_SSL 3306
98 #define PORT_MSSQL 1433
99 #define PORT_MSSQL_SSL 1433
100 #define PORT_POSTGRES 5432
101 #define PORT_POSTGRES_SSL 5432
102 #define PORT_ORACLE 1521
103 #define PORT_ORACLE_SSL 1521
104 #define PORT_PCANYWHERE 5631
105 #define PORT_PCANYWHERE_SSL 5631
106 #define PORT_ADAM6500 502
107 #define PORT_ADAM6500_SSL 502
108 #define PORT_SAPR3 -1
109 #define PORT_SAPR3_SSL -1
110 #define PORT_SSH 22
111 #define PORT_SSH_SSL 22
112 #define PORT_SNMP 161
113 #define PORT_SNMP_SSL 1993
114 #define PORT_CVS 2401
115 #define PORT_CVS_SSL 2401
116 #define PORT_FIREBIRD 3050
117 #define PORT_FIREBIRD_SSL 3050
118 #define PORT_AFP 548
119 #define PORT_AFP_SSL 548
120 #define PORT_NCP 524
121 #define PORT_NCP_SSL 524
122 #define PORT_SVN 3690
123 #define PORT_SVN_SSL 3690
124 #define PORT_SMTP 25
125 #define PORT_SMTP_SSL 465
126 #define PORT_TEAMSPEAK 8767
127 #define PORT_TEAMSPEAK_SSL 8767
128 #define PORT_SIP 5060
129 #define PORT_SIP_SSL 5061
130 #define PORT_VMAUTHD 902
131 #define PORT_VMAUTHD_SSL 902
132 #define PORT_XMPP 5222
133 #define PORT_XMPP_SSL 5223
134 #define PORT_IRC 6667
135 #define PORT_IRC_SSL 6697
136 #define PORT_RDP 3389
137 #define PORT_RDP_SSL 3389
138 #define PORT_ASTERISK 5038
139 #define PORT_ASTERISK_SSL 5038
140 #define PORT_S7_300 102
141 #define PORT_S7_300_SSL 102
142 #define PORT_REDIS 6379
143 #define PORT_REDIS_SSL 6379
144 #define PORT_RTSP 554
145 #define PORT_RTSP_SSL 554
146 #define PORT_RPCAP 2002
147 #define PORT_RPCAP_SSL 2002
148 #define PORT_RADMIN2 4899
149 #define PORT_MCACHED 11211
150 #define PORT_MCACHED_SSL 11211
151 #define PORT_MONGODB 27017
152 
153 #define False 0
154 #define True 1
155 
156 #ifndef INET_ADDRSTRLEN
157 #define INET_ADDRSTRLEN 16
158 #endif
159 
160 #define MAX_PROXY_COUNT 64
161 
162 #ifndef _WIN32
163 int32_t sleepn(time_t seconds);
164 int32_t usleepn(uint64_t useconds);
165 #else
166 int32_t sleepn(uint32_t seconds);
167 int32_t usleepn(uint32_t useconds);
168 #endif
169 
170 typedef enum { MODE_PASSWORD_LIST = 1, MODE_LOGIN_LIST = 2, MODE_PASSWORD_BRUTE = 4, MODE_PASSWORD_REVERSE = 8, MODE_PASSWORD_NULL = 16, MODE_PASSWORD_SAME = 32, MODE_COLON_FILE = 64 } hydra_mode_t;
171 
172 typedef enum { FORMAT_PLAIN_TEXT, FORMAT_JSONV1, FORMAT_JSONV2, FORMAT_XMLV1 } output_format_t;
173 
174 typedef struct {
175   hydra_mode_t mode;
176   int32_t loop_mode; // valid modes: 0 = password, 1 = user
177   int32_t ssl;
178   int32_t restore;
179   int32_t debug;   // is external - for restore
180   int32_t verbose; // is external - for restore
181   int32_t showAttempt;
182   int32_t tasks;
183   int32_t try_null_password;
184   int32_t try_password_same_as_login;
185   int32_t try_password_reverse_login;
186   int32_t exit_found;
187   int32_t max_use;
188   int32_t cidr;
189   int32_t time_next_attempt;
190   output_format_t outfile_format;
191   char *login;
192   char *loginfile;
193   char *pass;
194   char *passfile;
195   char *outfile_ptr;
196   char *infile_ptr;
197   char *colonfile;
198   int32_t waittime; // is external - for restore
199   int32_t conwait;  // is external - for restore
200   uint32_t port;    // is external - for restore
201   char *miscptr;
202   char *server;
203   char *service;
204   char bfg;
205   int32_t skip_redo;
206 } hydra_option;
207 
208 #define _HYDRA_H
209 #endif
210