Package: hydra
Version: 9.5-3
Severity: normal
Tags: patch
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Please find attached a patch that will allow hydra to build with
mongo-c-driver >= 2.0 (which was recently uploaded to unstable).
Regards,
- -Roberto
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEIYZ1DR4ae5UL01q7ldFmTdL1kUIFAmiwplgACgkQldFmTdL1
kULXdw/+M7nyxRWfzeGcaYYnOGAjkfSKY+loMAPUfdEUeKeUB3R15rrpALV8N79O
GUlzEJF8J8NhlwqSthPlyMoncHIktG/Ft47JbCJix0z0alZIZUf7R7HnszrSkctu
fjRGhUiB99rt6V7cKL3++Fu+3gOy+eKPNA0g0ApMJEyxIkd4COkCfdB+ZxTb1SP/
yRd7tlbtj7p9XT2T3o6On/NIvqiPIuWD/QIz4SlD0vaSezd2j1NGI1HW848AfiCm
QuA3b52QP8SYv+Ha7gnd9VR0V8cwz7+h8fqBupKGOnv3uBpkPSUGH35daRgIOv1q
9nwXz2G5FeBYJkrF0xJhTQv+ozu6txkn8IbTkRygSkmG9hId0xoxr7shRYmdH59y
isS0RlMax/LTlkAqEKTR997fXM+n/dGGN8TMT/okLo6sgO0XVDspFe0Ago6cPs+2
JCrCg+pn7urz+/HannwIwAnJ1yr9vpdLpz31oEqXevR7npRzvFDbc3gozNaIu+A+
CNZi5BwIYuQdb7+BFKTXR80YeKu8izys2qbSCxuERhFGT+4liUBaRiM3yF5/yllL
GDI9KU33gDegbrhTz722RBeyLLk7Y3JM2WU7qpX2qHHRIVDDib5zzd6VSJMorSid
NyxvnjmIMz84XmsBhhoRqeQSL5Holqd6bXl4LYzaz1OiiLuIw2c=
=gSK3
-----END PGP SIGNATURE-----
---
configure | 207 +++++++++++++++++++++++++++++++++++++++++++-------------
hydra-mongodb.c | 5 +
hydra.c | 8 +-
3 files changed, 170 insertions(+), 50 deletions(-)
--- a/configure
+++ b/configure
@@ -53,6 +53,10 @@
MYSQL_IPATH=""
MCACHED_PATH=""
MCACHED_IPATH=""
+MONGODB2_PATH=""
+MONGODB2_IPATH=""
+BSON2_PATH=""
+BSON2_IPATH=""
MONGODB_PATH=""
MONGODB_IPATH=""
BSON_PATH=""
@@ -1165,96 +1169,192 @@
fi
fi
-echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
+echo "Checking for Mongodb2
(mongoc-2.x.x/mongoc/mongoc.h/bson-2.x.x/bson/bson.h) ..."
for i in $LIBDIRS ; do
- if [ "X" = "X$MONGODB_PATH" ]; then
- if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f
"$i/libmongoc-1.0.a" ]; then
- MONGODB_PATH="$i"
+ if [ "X" = "X$MONGODB2_PATH" ]; then
+ if [ -f "$i/libmongoc2.so" -o -f "$i/libmongoc2.dylib" -o -f
"$i/libmongoc2.a" ]; then
+ MONGODB2_PATH="$i"
fi
fi
- if [ "X" = "X$MONGODB_PATH" ]; then
- TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
+ if [ "X" = "X$MONGODB2_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libmongoc2.so* 2> /dev/null | grep mongoc`
if [ -n "$TMP_LIB" ]; then
- MONGODB_PATH="$i"
+ MONGODB2_PATH="$i"
fi
fi
- if [ "X" = "X$MONGODB_PATH" ]; then
- TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
+ if [ "X" = "X$MONGODB2_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libmongoc2.dll* 2> /dev/null | grep mongoc`
if [ -n "$TMP_LIB" ]; then
- MONGODB_PATH="$i"
+ MONGODB2_PATH="$i"
fi
fi
done
- MONGODB_IPATH=
+ MONGODB2_IPATH=
for i in $INCDIRS ; do
- if [ "X" = "X$MONGODB_IPATH" ]; then
+ if [ "X" = "X$MONGODB2_IPATH" ]; then
if [ -f "$i/mongoc.h" ]; then
- MONGODB_IPATH="$i"
+ MONGODB2_IPATH="$i"
fi
- if [ -f "$i/libmongoc/mongoc.h" ]; then
- MONGODB_IPATH="$i/libmongoc"
- fi
- if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
- MONGODB_IPATH="$i/libmongoc-1.0"
+ if [ -f "$i/mongoc/mongoc.h" ]; then
+ MONGODB2_IPATH="$i/libmongoc"
fi
+ for ii in `ls -1d $i/mongoc-2.*`; do
+ if [ -f "${ii}/mongoc/mongoc.h" ]; then
+ MONGODB2_IPATH="$ii"
+ fi
+ done
fi
done
for i in $LIBDIRS ; do
- if [ "X" = "X$BSON_PATH" ]; then
- if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f
"$i/libbson-1.0.a" ]; then
- BSON_PATH="$i"
+ if [ "X" = "X$BSON2_PATH" ]; then
+ if [ -f "$i/libbson2.so" -o -f "$i/libbson2.dylib" -o -f
"$i/libbson2.a" ]; then
+ BSON2_PATH="$i"
fi
fi
- if [ "X" = "X$BSON_PATH" ]; then
- TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
+ if [ "X" = "X$BSON2_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libbson2*.so* 2> /dev/null | grep mongoc`
if [ -n "$TMP_LIB" ]; then
- BSON_PATH="$i"
+ BSON2_PATH="$i"
fi
fi
- if [ "X" = "X$BSON_PATH" ]; then
- TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
+ if [ "X" = "X$BSON2_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libbson2.dll* 2> /dev/null | grep mongoc`
if [ -n "$TMP_LIB" ]; then
- BSON_PATH="$i"
+ BSON2_PATH="$i"
fi
fi
done
- BSON_IPATH=
+ BSON2_IPATH=
for i in $INCDIRS ; do
- if [ "X" = "X$BSON_IPATH" ]; then
+ if [ "X" = "X$BSON2_IPATH" ]; then
if [ -f "$i/bson.h" ]; then
- BSON_IPATH="$i"
+ BSON2_IPATH="$i"
fi
if [ -f "$i/libbson/bson.h" ]; then
- BSON_IPATH="$i/libbson"
- fi
- if [ -f "$i/libbson-1.0/bson.h" ]; then
- BSON_IPATH="$i/libbson-1.0"
+ BSON2_IPATH="$i/libbson"
fi
+ for ii in `ls -1d $i/bson-2.*`; do
+ if [ -f "${ii}/bson/bson.h" ]; then
+ BSON2_IPATH="$ii"
+ fi
+ done
fi
done
if [ "X" != "X$DEBUG" ]; then
- echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
- echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
- echo DEBUG: BSON_PATH=$BSON_PATH/libbson
- echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
+ echo DEBUG: MONGODB2_PATH=$MONGODB2_PATH
+ echo DEBUG: MONGODB2_IPATH=$MONGODB2_IPATH
+ echo DEBUG: BSON2_PATH=$BSON2_PATH
+ echo DEBUG: BSON2_IPATH=$BSON2_IPATH
fi
- if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n
"$BSON_IPATH" ]; then
+ if [ -n "$MONGODB2_PATH" -a -n "$MONGODB2_IPATH" -a -n "$BSON2_PATH" -a -n
"$BSON2_IPATH" ]; then
echo " ...
found"
fi
- if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" =
"X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
- echo " ...
NOT found, module mongodb disabled"
- MONGODB_PATH=""
- MONGODB_IPATH=""
- BSON_PATH=""
- BSON_IPATH=""
+ if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" =
"X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
+ echo " ...
NOT found, module mongodb2 disabled"
+ MONGODB2_PATH=""
+ MONGODB2_IPATH=""
+ BSON2_PATH=""
+ BSON2_IPATH=""
fi
+if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" =
"X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
+ echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
+
+ for i in $LIBDIRS ; do
+ if [ "X" = "X$MONGODB_PATH" ]; then
+ if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f
"$i/libmongoc-1.0.a" ]; then
+ MONGODB_PATH="$i"
+ fi
+ fi
+ if [ "X" = "X$MONGODB_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
+ if [ -n "$TMP_LIB" ]; then
+ MONGODB_PATH="$i"
+ fi
+ fi
+ if [ "X" = "X$MONGODB_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
+ if [ -n "$TMP_LIB" ]; then
+ MONGODB_PATH="$i"
+ fi
+ fi
+ done
+
+ MONGODB_IPATH=
+ for i in $INCDIRS ; do
+ if [ "X" = "X$MONGODB_IPATH" ]; then
+ if [ -f "$i/mongoc.h" ]; then
+ MONGODB_IPATH="$i"
+ fi
+ if [ -f "$i/libmongoc/mongoc.h" ]; then
+ MONGODB_IPATH="$i/libmongoc"
+ fi
+ if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
+ MONGODB_IPATH="$i/libmongoc-1.0"
+ fi
+ fi
+ done
+
+ for i in $LIBDIRS ; do
+ if [ "X" = "X$BSON_PATH" ]; then
+ if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f
"$i/libbson-1.0.a" ]; then
+ BSON_PATH="$i"
+ fi
+ fi
+ if [ "X" = "X$BSON_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
+ if [ -n "$TMP_LIB" ]; then
+ BSON_PATH="$i"
+ fi
+ fi
+ if [ "X" = "X$BSON_PATH" ]; then
+ TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
+ if [ -n "$TMP_LIB" ]; then
+ BSON_PATH="$i"
+ fi
+ fi
+ done
+
+ BSON_IPATH=
+ for i in $INCDIRS ; do
+ if [ "X" = "X$BSON_IPATH" ]; then
+ if [ -f "$i/bson.h" ]; then
+ BSON_IPATH="$i"
+ fi
+ if [ -f "$i/libbson/bson.h" ]; then
+ BSON_IPATH="$i/libbson"
+ fi
+ if [ -f "$i/libbson-1.0/bson.h" ]; then
+ BSON_IPATH="$i/libbson-1.0"
+ fi
+ fi
+ done
+
+ if [ "X" != "X$DEBUG" ]; then
+ echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
+ echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
+ echo DEBUG: BSON_PATH=$BSON_PATH/libbson
+ echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
+ fi
+
+ if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n
"$BSON_IPATH" ]; then
+ echo "
... found"
+ fi
+ if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" =
"X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
+ echo "
... NOT found, module mongodb disabled"
+ MONGODB_PATH=""
+ MONGODB_IPATH=""
+ BSON_PATH=""
+ BSON_IPATH=""
+ fi
+fi
+
echo "Checking for smbclient (libsmbclient/libsmbclient.h) ..."
for i in $LIBDIRS ; do
@@ -1505,6 +1605,12 @@
if [ -n "$MCACHED_PATH" ]; then
XDEFINES="$XDEFINES -DLIBMCACHED"
fi
+if [ -n "$MONGODB2_PATH" ]; then
+ XDEFINES="$XDEFINES -DLIBMONGODB2"
+fi
+if [ -n "$BSON2_PATH" ]; then
+ XDEFINES="$XDEFINES -DLIBBSON2"
+fi
if [ -n "$MONGODB_PATH" ]; then
XDEFINES="$XDEFINES -DLIBMONGODB"
fi
@@ -1547,6 +1653,8 @@
$AFP_PATH \
$MYSQL_PATH \
$MCACHED_PATH \
+ $MONGODB2_PATH \
+ $BSON2_PATH \
$MONGODB_PATH \
$BSON_PATH \
$FREERDP2_PATH \
@@ -1609,6 +1717,9 @@
if [ -n "$MCACHED_IPATH" ]; then
XIPATHS="$XIPATHS -I$MCACHED_IPATH"
fi
+if [ -n "$MONGODB2_IPATH" ]; then
+ XIPATHS="$XIPATHS -I$MONGODB2_IPATH -I$BSON2_IPATH"
+fi
if [ -n "$MONGODB_IPATH" ]; then
XIPATHS="$XIPATHS -I$MONGODB_IPATH -I$BSON_IPATH"
fi
@@ -1690,6 +1801,12 @@
if [ -n "$MCACHED_PATH" ]; then
XLIBS="$XLIBS -lmemcached"
fi
+if [ -n "$MONGODB2_PATH" ]; then
+ XLIBS="$XLIBS -lmongoc2"
+fi
+if [ -n "$BSON2_PATH" ]; then
+ XLIBS="$XLIBS -lbson2"
+fi
if [ -n "$MONGODB_PATH" ]; then
XLIBS="$XLIBS -lmongoc-1.0"
fi
--- a/hydra-mongodb.c
+++ b/hydra-mongodb.c
@@ -2,13 +2,16 @@
// Tested on mongodb-server 1:3.6.3-0ubuntu1
// MONGODB-CR is been deprecated
+#ifdef LIBMONGODB2
+#include <mongoc/mongoc.h>
+#endif
#ifdef LIBMONGODB
#include <mongoc.h>
#endif
#include "hydra-mod.h"
-#ifndef LIBMONGODB
+#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
void dummy_mongodb() { printf("\n"); }
#else
--- a/hydra.c
+++ b/hydra.c
@@ -161,7 +161,7 @@
extern void service_mcached(char *ip, int32_t sp, unsigned char options, char
*miscptr, FILE *fp, int32_t port, char *hostname);
extern int32_t service_mcached_init(char *ip, int32_t sp, unsigned char
options, char *miscptr, FILE *fp, int32_t port, char *hostname);
#endif
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
extern void service_mongodb(char *ip, int32_t sp, unsigned char options, char
*miscptr, FILE *fp, int32_t port, char *hostname);
extern int32_t service_mongodb_init(char *ip, int32_t sp, unsigned char
options, char *miscptr, FILE *fp, int32_t port, char *hostname);
#endif
@@ -405,7 +405,7 @@
#endif
SERVICE(mssql),
SERVICE(cobaltstrike),
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
SERVICE3("mongodb", mongodb),
#endif
#ifdef HAVE_MATH_H
@@ -2201,7 +2201,7 @@
SERVICES = hydra_string_replace(SERVICES, "memcached ", "");
strcat(unsupported, "memcached ");
#endif
-#ifndef LIBMONGODB
+#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
SERVICES = hydra_string_replace(SERVICES, "mongodb ", "");
strcat(unsupported, "mongodb ");
#endif
@@ -2789,7 +2789,7 @@
#endif
if (strcmp(hydra_options.service, "mongodb") == 0)
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
{
i = 1;
if (hydra_options.miscptr == NULL || (strlen(hydra_options.miscptr) ==
0))