Create services vector

This commit is contained in:
Diadlo 2017-06-01 00:39:33 +03:00
commit dfef658cf8
No known key found for this signature in database
GPG key ID: 5AF9F2E29107C727

196
hydra.c
View file

@ -1184,132 +1184,118 @@ char *hydra_build_time() {
return (char *) &datetime; return (char *) &datetime;
} }
void hydra_service_init(int target_no) { typedef void (*service_t)(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port, char *hostname);
int x = 99; typedef int (*service_init_t)(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port, char *hostname);
static const struct {
const char* name;
service_init_t init;
service_t exec;
} services[] = {
{ "adam6500", service_adam6500_init, service_adam6500 },
#ifdef LIBAFP #ifdef LIBAFP
if (strcmp(hydra_options.service, "afp") == 0) { "afp", service_afp_init, service_afp },
x = service_afp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "asterisk") == 0) { "asterisk", service_asterisk_init, service_asterisk },
x = service_asterisk_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "cisco", service_cisco_init, service_cisco },
if (strcmp(hydra_options.service, "cisco-enable") == 0) { "cisco-enable", service_cisco_enable_init, service_cisco_enable },
x = service_cisco_enable_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "cvs", service_cvs_init, service_cvs },
if (strcmp(hydra_options.service, "cvs") == 0)
x = service_cvs_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "adam6500") == 0)
x = service_adam6500_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "cisco") == 0)
x = service_cisco_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#ifdef LIBFIREBIRD #ifdef LIBFIREBIRD
if (strcmp(hydra_options.service, "firebird") == 0) { "firebird", service_firebird_init, service_firebird },
x = service_firebird_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "ftp") == 0 || strcmp(hydra_options.service, "ftps") == 0) { "ftp", service_ftp_init, service_ftp },
x = service_ftp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "ftps", service_ftp_init, service_ftps },
if (strcmp(hydra_options.service, "redis") == 0 || strcmp(hydra_options.service, "redis") == 0) { "http-get", service_http_init, service_http_get },
x = service_redis_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "http-get-form", service_http_form_init, service_http_get_form },
if (strcmp(hydra_options.service, "http-get") == 0 || strcmp(hydra_options.service, "http-head") == 0) { "http-head", service_http_init, service_http_head },
x = service_http_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "http-form", service_http_form_init, NULL },
if (strcmp(hydra_options.service, "http-form") == 0 || strcmp(hydra_options.service, "http-get-form") == 0 || strcmp(hydra_options.service, "http-post-form") == 0) { "http-post", NULL, service_http_post },
x = service_http_form_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "http-post-form", service_http_form_init, service_http_post_form },
if (strcmp(hydra_options.service, "http-proxy") == 0) { "http-proxy", service_http_proxy_init, service_http_proxy },
x = service_http_proxy_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "http-proxy-urlenum", service_http_proxy_urlenum_init, service_http_proxy_urlenum },
if (strcmp(hydra_options.service, "http-proxy-urlenum") == 0) { "icq", service_icq_init, service_icq },
x = service_http_proxy_urlenum_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "imap", service_imap_init, service_imap },
if (strcmp(hydra_options.service, "icq") == 0) { "irc", service_irc_init, service_irc },
x = service_icq_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "ldap2", service_ldap_init, service_ldap2 },
if (strcmp(hydra_options.service, "imap") == 0) { "ldap3", service_ldap_init, service_ldap3 },
x = service_imap_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "ldap3-crammd5", service_ldap_init, service_ldap3_cram_md5 },
if (strcmp(hydra_options.service, "irc") == 0) { "ldap3-digestmd5", service_ldap_init, service_ldap3_digest_md5 },
x = service_irc_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "mssql", service_mssql_init, service_mssql },
if (strncmp(hydra_options.service, "ldap", 4) == 0)
x = service_ldap_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#ifdef LIBOPENSSL
if (strcmp(hydra_options.service, "sip") == 0)
x = service_sip_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "smb") == 0 || strcmp(hydra_options.service, "smbnt") == 0)
x = service_smb_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "oracle-listener") == 0)
x = service_oracle_listener_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "oracle-sid") == 0)
x = service_oracle_sid_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "rdp") == 0)
x = service_rdp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif
if (strcmp(hydra_options.service, "mssql") == 0)
x = service_mssql_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#ifdef HAVE_MATH_H #ifdef HAVE_MATH_H
if (strcmp(hydra_options.service, "mysql") == 0) { "mysql", service_mysql_init, service_mysql },
x = service_mysql_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
#ifdef LIBNCP #ifdef LIBNCP
if (strcmp(hydra_options.service, "ncp") == 0) { "ncp", service_ncp_init, service_ncp },
x = service_ncp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "nntp") == 0) { "nntp", service_nntp_init, service_nntp },
x = service_nntp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#ifdef LIBORACLE #ifdef LIBORACLE
if (strcmp(hydra_options.service, "oracle") == 0) { "oracle", service_oracle_init, service_oracle },
x = service_oracle_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "pcanywhere") == 0) #ifdef LIBOPENSSL
x = service_pcanywhere_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "oracle-listener", service_oracle_listener_init, service_oracle_listener },
if (strcmp(hydra_options.service, "pcnfs") == 0) { "oracle-sid", service_oracle_sid_init, service_oracle_sid },
x = service_pcnfs_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); #endif
if (strcmp(hydra_options.service, "pop3") == 0) { "pcanywhere", service_pcanywhere_init, service_pcanywhere },
x = service_pop3_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "pcnfs", service_pcnfs_init, service_pcnfs },
{ "pop3", service_pop3_init, service_pop3 },
#ifdef LIBPOSTGRES #ifdef LIBPOSTGRES
if (strcmp(hydra_options.service, "postgres") == 0) { "postgres", service_postgres_init, service_postgres },
x = service_postgres_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "rexec") == 0) { "redis", service_redis_init, service_redis },
x = service_rexec_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "rexec", service_rexec_init, service_rexec },
if (strcmp(hydra_options.service, "rlogin") == 0) #ifdef LIBOPENSSL
x = service_rlogin_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "rdp", service_rdp_init, service_rdp },
if (strcmp(hydra_options.service, "rsh") == 0) #endif
x = service_rsh_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "rlogin", service_rlogin_init, service_rlogin },
{ "rsh", service_rsh_init, service_rsh },
{ "rtsp", service_rtsp_init, service_rtsp },
{ "rpcap", service_rpcap_init, service_rpcap },
{ "s7-300", service_s7_300_init, service_s7_300 },
#ifdef LIBSAPR3 #ifdef LIBSAPR3
if (strcmp(hydra_options.service, "sapr3") == 0) { "sapr3", service_sapr3_init, service_sapr3 },
x = service_sapr3_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "smtp") == 0) #ifdef LIBOPENSSL
x = service_smtp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "sip", service_sip_init, service_sip },
if (strcmp(hydra_options.service, "smtp-enum") == 0) { "smbnt", service_smb_init, service_smb },
x = service_smtp_enum_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "smb", service_smb_init, service_smb },
if (strcmp(hydra_options.service, "snmp") == 0) #endif
x = service_snmp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "smtp", service_smtp_init, service_smtp },
if (strcmp(hydra_options.service, "socks5") == 0) { "smtp-enum", service_smtp_enum_init, service_smtp_enum },
x = service_socks5_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "snmp", service_snmp_init, service_snmp },
{ "socks5", service_socks5_init, service_socks5 },
#ifdef LIBSSH #ifdef LIBSSH
// dirty workaround here: { "ssh", NULL, service_ssh },
if (strcmp(hydra_options.service, "ssh") == 0) { "sshkey", service_sshkey_init, service_sshkey },
x = service_ssh_init(hydra_targets[target_no]->ip, -1, options, login_ptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
if (strcmp(hydra_options.service, "sshkey") == 0)
x = service_sshkey_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
#ifdef LIBSVN #ifdef LIBSVN
if (strcmp(hydra_options.service, "svn") == 0) { "svn", service_svn_init, service_svn },
x = service_svn_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif #endif
if (strcmp(hydra_options.service, "teamspeak") == 0) { "teamspeak", service_teamspeak_init, service_teamspeak },
x = service_teamspeak_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "telnet", service_telnet_init, service_telnet },
if (strcmp(hydra_options.service, "telnet") == 0) { "vmauthd", service_vmauthd_init, service_vmauthd },
x = service_telnet_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); { "vnc", service_vnc_init, service_vnc },
if (strcmp(hydra_options.service, "vmauthd") == 0) { "xmpp", service_xmpp_init, NULL }
x = service_vmauthd_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); };
if (strcmp(hydra_options.service, "vnc") == 0)
x = service_vnc_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); void hydra_service_init(int target_no) {
if (strcmp(hydra_options.service, "xmpp") == 0) int x = 99;
x = service_xmpp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); int i = 0;
if (strcmp(hydra_options.service, "s7-300") == 0)
x = service_s7_300_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); for (i = 0; i < sizeof(services) / sizeof(services[0]); i++) {
if (strcmp(hydra_options.service, "rtsp") == 0) if (strcmp(hydra_options.service, services[i].name) == 0) {
x = service_rtsp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); if (services[i].init) {
if (strcmp(hydra_options.service, "rpcap") == 0) x = services[i].init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
x = service_rpcap_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target); break;
}
}
}
// ADD NEW SERVICES HERE // ADD NEW SERVICES HERE
// dirty workaround here:
#ifdef LIBSSH
if (strcmp(hydra_options.service, "ssh") == 0)
x = service_ssh_init(hydra_targets[target_no]->ip, -1, options, login_ptr, hydra_brains.ofp, hydra_targets[target_no]->port, hydra_targets[target_no]->target);
#endif
if (x != 0 && x != 99) { if (x != 0 && x != 99) {
if (x > 0 && x < 4) if (x > 0 && x < 4)