25#include <gvm/base/logging.h>
26#include <gvm/base/networking.h>
28#include <netinet/in.h>
31#include <sys/socket.h>
33#define IMPORT(var) char *var = get_str_var_by_name (lexic, #var)
40#define G_LOG_DOMAIN "lib nasl"
49 val_len = strlen (
val);
51 if ((strcmp (
val,
"-1")) != 0)
53 for (i = 0; i < val_len; i++)
54 if (!isdigit (
val[i]))
70 sscanf (s,
"%" PRIu32, &v);
81 sscanf (s,
"%" PRIu64, &v);
105 retc->
size = strlen (version);
144 if ((
host == NULL) || (username == NULL) || (password == NULL))
146 g_message (
"nasl_wmi_connect: Invalid input arguments");
150 ip = addr6_as_str (
host);
151 if ((strlen (password) == 0) || (strlen (username) == 0) || strlen (ip) == 0)
153 g_message (
"nasl_wmi_connect: Invalid input arguments");
159 argv[0] = g_strdup (
"wmic");
160 argv[1] = g_strdup (
"-U");
161 argv[2] = g_strdup_printf (
"%s%%%s", username, password);
162 argv[3] = g_strdup_printf (
"//%s%s", ip, options ? options :
"[sign]");
163 argv[4] = g_strdup (ns);
170 g_message (
"nasl_wmi_connect: WMI Connect failed or missing WMI support "
235 if ((value == -1) && (res != NULL))
237 g_message (
"wmi_query: WMI query failed '%s' with error: '%s'", query,
242 else if ((value == -1) && (res == NULL))
244 g_debug (
"wmi_query: WMI query failed '%s'", query);
247 else if (res == NULL)
251 retc->
size = strlen (res);
288 if ((
host == NULL) || (username == NULL) || (password == NULL))
290 g_message (
"nasl_wmi_connect_rsop: Invalid input arguments");
294 ip = addr6_as_str (
host);
295 if ((strlen (password) == 0) || (strlen (username) == 0) || strlen (ip) == 0)
297 g_message (
"nasl_wmi_connect_rsop: Invalid input arguments");
303 argv[0] = g_strdup (
"wmic");
304 argv[1] = g_strdup (
"-U");
305 argv[2] = g_strdup_printf (
"%s%%%s", username, password);
306 argv[3] = g_strdup_printf (
"//%s%s", ip, options ? options :
"[sign]");
313 g_message (
"nasl_wmi_connect_rsop: WMI Connect failed or missing WMI "
314 "support for the scanner");
348 if ((value == -1) && (res != NULL))
350 g_message (
"wmi_query_rsop: WMI query failed '%s' with error: '%s'",
355 else if ((value == -1) && (res == NULL))
357 g_debug (
"wmi_query_rsop: WMI query failed");
360 else if (res == NULL)
364 retc->
size = strlen (res);
401 if ((
host == NULL) || (username == NULL) || (password == NULL))
403 g_message (
"nasl_wmi_connect_reg: Invalid input arguments");
407 ip = addr6_as_str (
host);
408 if ((strlen (password) == 0) || (strlen (username) == 0) || strlen (ip) == 0)
410 g_message (
"nasl_wmi_connect_reg: Invalid input arguments");
416 argv[0] = g_strdup (
"wmic");
417 argv[1] = g_strdup (
"-U");
418 argv[2] = g_strdup_printf (
"%s%%%s", username, password);
419 argv[3] = g_strdup_printf (
"//%s%s", ip, options ? options :
"[sign]");
426 g_message (
"nasl_wmi_connect_reg: WMI Connect failed or missing WMI "
427 "support for the scanner");
468 if ((value == -1) || (res == NULL))
470 g_message (
"nasl_wmi_reg_get_sz: WMI Registry get failed");
475 retc->
size = strlen (res);
511 if ((value == -1) || (res == NULL))
513 g_message (
"nasl_wmi_reg_enum_value: WMI query failed");
518 retc->
size = strlen (res);
554 if ((value == -1) || (res == NULL))
556 g_message (
"nasl_wmi_reg_enum_key: WMI query failed");
561 retc->
size = strlen (res);
600 if ((value == -1) || (res == NULL))
602 g_message (
"nasl_wmi_reg_get_bin_val: WMI query failed");
607 retc->
size = strlen (res);
645 if ((value == 0) && (res == 0))
648 if ((value == -1) || (res == NULL))
650 g_message (
"nasl_wmi_reg_get_dword_val: WMI query failed");
655 retc->
size = strlen (res);
693 if ((value == -1) || (res == NULL))
695 g_message (
"nasl_wmi_reg_get_ex_string_val: WMI query failed");
700 retc->
size = strlen (res);
738 if ((value == -1) || (res == NULL))
740 g_message (
"nasl_wmi_reg_get_mul_string_val: WMI query failed");
745 retc->
size = strlen (res);
783 if ((value == -1) || (res == NULL))
785 g_message (
"nasl_wmi_reg_get_qword_val: WMI query failed");
790 retc->
size = strlen (res);
837 g_message (
"nasl_wmi_reg_set_dword_val: WMI registry set"
838 " operation failed");
887 g_message (
"nasl_wmi_reg_set_qword_val: WMI register"
888 " set operation failed");
930 "nasl_wmi_reg_set_ex_string_val: WMI registry set operation failed");
971 g_message (
"nasl_wmi_reg_set_string_val: WMI registry"
972 " set operation failed");
1008 g_message (
"nasl_wmi_reg_create_key: WMI registry key create"
1009 " operation failed");
1047 g_message (
"nasl_wmi_reg_delete_key: WMI registry key"
1048 " delete operation failed");
struct struct_lex_ctxt lex_ctxt
char * get_str_var_by_name(lex_ctxt *, const char *)
long int get_int_var_by_name(lex_ctxt *, const char *, int)
tree_cell * alloc_typed_cell(int typ)
tree_cell * nasl_wmi_close(lex_ctxt *lexic)
Close WMI service handle.
static int check_alpha(char *val)
tree_cell * nasl_wmi_reg_get_dword_val(lex_ctxt *lexic)
Get registry DWORD value.
tree_cell * nasl_wmi_reg_get_bin_val(lex_ctxt *lexic)
Get registry binary value.
tree_cell * nasl_wmi_reg_enum_key(lex_ctxt *lexic)
Enumerate registry keys.
tree_cell * nasl_wmi_connect_reg(lex_ctxt *lexic)
Connect to a WMI Registry service and return a handle for it.
static uint32_t stoi_uint32_t(char *s)
tree_cell * nasl_wmi_reg_set_string_val(lex_ctxt *lexic)
Set Registry string value.
tree_cell * nasl_wmi_reg_set_dword_val(lex_ctxt *lexic)
Set Registry DWORD value.
tree_cell * nasl_wmi_query(lex_ctxt *lexic)
Perform WQL query.
tree_cell * nasl_wmi_reg_get_mul_string_val(lex_ctxt *lexic)
Get registry multi valued strings.
static uint64_t stoi_uint64_t(char *s)
tree_cell * nasl_wmi_reg_set_ex_string_val(lex_ctxt *lexic)
Set Registry Expanded string value.
tree_cell * nasl_wmi_reg_create_key(lex_ctxt *lexic)
Create Registry key.
tree_cell * nasl_wmi_connect_rsop(lex_ctxt *lexic)
Connect to a WMI RSOP service and return a handle for it.
tree_cell * nasl_wmi_reg_delete_key(lex_ctxt *lexic)
Delete Registry key.
tree_cell * nasl_wmi_reg_set_qword_val(lex_ctxt *lexic)
Set Registry QWORD value.
tree_cell * nasl_wmi_connect(lex_ctxt *lexic)
Connect to a WMI service and return a handle for it.
tree_cell * nasl_wmi_reg_enum_value(lex_ctxt *lexic)
Enumerate registry values.
tree_cell * nasl_wmi_reg_get_ex_string_val(lex_ctxt *lexic)
Get registry expanded string value.
tree_cell * nasl_wmi_reg_get_sz(lex_ctxt *lexic)
Get string value from Registry.
tree_cell * nasl_wmi_query_rsop(lex_ctxt *lexic)
WMI RSOP query.
tree_cell * nasl_wmi_reg_get_qword_val(lex_ctxt *lexic)
Get registry QWORD value.
tree_cell * nasl_wmi_versioninfo(lex_ctxt *lexic)
Get a version string of the WMI implementation.
API protos describing the interface of a wmi interface implementation.
int wmi_reg_get_dword_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry DWORD value.
int wmi_reg_get_ex_string_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry Expanded string value.
int wmi_close(WMI_HANDLE)
Close the connection handle for a WMI service.
WMI_HANDLE wmi_connect_rsop(int argc, char **argv)
Establish connection to a WMI RSOP service.
int wmi_reg_get_mul_string_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry multi-valued strings.
int wmi_reg_set_string_val(WMI_HANDLE, const char *, const char *, const char *)
Set Registry string value.
int wmi_reg_delete_key(WMI_HANDLE, const char *)
Delete Registry Key.
WMI_HANDLE wmi_connect(int argc, char **argv)
Establish connection to a WMI service.
int wmi_reg_set_ex_string_val(WMI_HANDLE, const char *, const char *, const char *)
Set Registry Expanded string value.
char * wmi_versioninfo(void)
Return version info for WMI implementation.
int wmi_reg_set_qword_val(WMI_HANDLE, const char *, const char *, uint64_t)
Set Registry QWORD value.
int wmi_query_rsop(WMI_HANDLE, const char *, char **)
WMI RSOP query.
int wmi_reg_enum_value(WMI_HANDLE, unsigned int, const char *, char **)
Enumerate Registry values.
int wmi_reg_get_sz(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry string value.
int wmi_query(WMI_HANDLE, const char *, char **)
Query WMI service using a WQL query.
int wmi_reg_create_key(WMI_HANDLE, const char *)
Create Registry Key.
int wmi_reg_set_dword_val(WMI_HANDLE, const char *, const char *, uint32_t)
Set Registry DWORD value.
int wmi_reg_get_bin_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry binary value.
int wmi_reg_enum_key(WMI_HANDLE, unsigned int, const char *, char **)
Enumerate Registry keys.
WMI_HANDLE wmi_connect_reg(int argc, char **argv)
Establish connection to a WMI Registry service.
int wmi_reg_get_qword_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry QWORD value.
struct in6_addr * plug_get_host_ip(struct script_infos *args)
Header file for module plugutils.
union TC::@332262321161220155002104006201360276211317150140 x
Host information, implemented as doubly linked list.
struct script_infos * script_infos