49 #include <netinet/in.h> 50 #include <sys/socket.h> 51 #include <arpa/inet.h> 55 #include "../misc/plugutils.h" 58 #include "../misc/openvas_logging.h" 60 #define IMPORT(var) char *var = get_str_local_var_by_name(lexic, #var) 69 val_len = strlen(
val);
71 if((strcmp(
val,
"-1")) != 0 )
73 for(i = 0; i < val_len; i++)
89 sscanf(s,
"%" PRIu32, &v);
99 sscanf(s,
"%" PRIu64, &v);
124 retc->
size = strlen (version);
164 char *argv1 =
"wmic";
167 if ((host == NULL) || (username == NULL) || (password == NULL))
174 if ((strlen (password) == 0) || (strlen (username) == 0)
182 argv[0] = (
char *) g_malloc0 (strlen (argv1));
183 argv[1] = (
char *) g_malloc0 (strlen (argv2));
184 argv[2] = (
char *) g_malloc0 (strlen (username) + strlen (password) + 1);
185 argv[3] = (
char *) g_malloc0 (strlen (ip) + 2);
186 argv[4] = (
char *) g_malloc0 (strlen (ns));
189 strcpy (argv[0], argv1);
190 strcpy (argv[1],
"-U");
191 strcpy (argv[2], username);
192 strcat (argv[2],
"%");
193 strcat (argv[2], password);
194 strcpy (argv[3],
"//");
195 strcat (argv[3], ip);
196 strcpy (argv[4], ns);
276 if ((value == -1) || (res == NULL))
283 retc->
size = strlen (res);
318 char *argv1 =
"wmic";
321 if ((host == NULL) || (username == NULL) || (password == NULL))
328 if ((strlen (password) == 0) || (strlen (username) == 0)
336 argv[0] = (
char *) g_malloc0 (strlen (argv1));
337 argv[1] = (
char *) g_malloc0 (strlen (argv2));
338 argv[2] = (
char *) g_malloc0 (strlen (username) + strlen (password) + 1);
339 argv[3] = (
char *) g_malloc0 (strlen (ip) + 2);
342 strcpy (argv[0], argv1);
343 strcpy (argv[1],
"-U");
344 strcpy (argv[2], username);
345 strcat (argv[2],
"%");
346 strcat (argv[2], password);
347 strcpy (argv[3],
"//");
348 strcat (argv[3], ip);
394 if ((value == -1) || (res == NULL))
400 retc->
size = strlen (res);
435 char *argv1 =
"wmic";
438 if ((host == NULL) || (username == NULL) || (password == NULL))
445 if ((strlen (password) == 0) || (strlen (username) == 0)
453 argv[0] = (
char *) g_malloc0 (strlen (argv1));
454 argv[1] = (
char *) g_malloc0 (strlen (argv2));
455 argv[2] = (
char *) g_malloc0 (strlen (username) + strlen (password) + 1);
456 argv[3] = (
char *) g_malloc0 (strlen (ip) + 2);
459 strcpy (argv[0], argv1);
460 strcpy (argv[1],
"-U");
461 strcpy (argv[2], username);
462 strcat (argv[2],
"%");
463 strcat (argv[2], password);
464 strcpy (argv[3],
"//");
465 strcat (argv[3], ip);
517 if ((value == -1) || (res == NULL))
524 retc->
size = strlen (res);
563 if ((value == -1) || (res == NULL))
570 retc->
size = strlen (res);
609 if ((value == -1) || (res == NULL))
616 retc->
size = strlen (res);
657 if ((value == -1) || (res == NULL))
664 retc->
size = strlen (res);
704 if ((value == 0) && (res == 0))
707 if ((value == -1) || (res == NULL))
714 retc->
size = strlen (res);
754 if ((value == -1) || (res == NULL))
761 retc->
size = strlen (res);
801 if ((value == -1) || (res == NULL))
808 retc->
size = strlen (res);
848 if ((value == -1) || (res == NULL))
855 retc->
size = strlen (res);
905 " operation failed\n");
957 " set operation failed\n");
1000 log_legacy_write (
"nasl_wmi_reg_set_ex_string_val: WMI registery set operation failed\n");
1044 " set operation failed\n");
1084 " operation failed\n");
1126 " delete operation failed\n");
int wmi_reg_get_qword_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry QWORD value.
int wmi_close(WMI_HANDLE)
Close the connection handle for a WMI service.
int wmi_query_rsop(WMI_HANDLE, const char *, char **)
WMI RSOP query.
tree_cell * nasl_wmi_reg_set_string_val(lex_ctxt *lexic)
Set Registry string value.
tree_cell * nasl_wmi_reg_set_qword_val(lex_ctxt *lexic)
Set Registry QWORD value.
int wmi_reg_get_mul_string_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry multi-valued strings.
int wmi_reg_delete_key(WMI_HANDLE, const char *)
Delete Registry Key.
int wmi_reg_set_ex_string_val(WMI_HANDLE, const char *, const char *, const char *)
Set Registry Expanded string value.
WMI_HANDLE wmi_connect(int argc, char **argv)
Establish connection to a WMI service.
tree_cell * nasl_wmi_connect(lex_ctxt *lexic)
Connect to a WMI service and return a handle for it.
int wmi_reg_get_dword_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry DWORD value.
tree_cell * nasl_wmi_query_rsop(lex_ctxt *lexic)
WMI RSOP query.
int wmi_reg_enum_value(WMI_HANDLE, unsigned int, const char *, char **)
Enumerate Registry values.
tree_cell * nasl_wmi_reg_get_dword_val(lex_ctxt *lexic)
Get registry DWORD value.
int wmi_reg_enum_key(WMI_HANDLE, unsigned int, const char *, char **)
Enumerate Registry keys.
tree_cell * nasl_wmi_reg_get_ex_string_val(lex_ctxt *lexic)
Get registry expanded string value.
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.
void log_legacy_write(const char *format,...)
Legacy function to write a log message.
uint32_t stoi_uint32_t(char *s)
long int get_int_local_var_by_name(lex_ctxt *, const char *, int)
tree_cell * nasl_wmi_reg_get_bin_val(lex_ctxt *lexic)
Get registry binary value.
int wmi_query(WMI_HANDLE, const char *, char **)
Query WMI service using a WQL query.
int wmi_reg_get_sz(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry string value.
char * get_str_local_var_by_name(lex_ctxt *, const char *)
tree_cell * nasl_wmi_reg_set_ex_string_val(lex_ctxt *lexic)
Set Registry Expanded string value.
tree_cell * nasl_wmi_reg_get_qword_val(lex_ctxt *lexic)
Get registry QWORD value.
uint64_t stoi_uint64_t(char *s)
tree_cell * nasl_wmi_connect_rsop(lex_ctxt *lexic)
Connect to a WMI RSOP service and return a handle for it.
WMI_HANDLE wmi_connect_reg(int argc, char **argv)
Establish connection to a WMI Registry service.
char * addr6_as_str(const struct in6_addr *addr6)
tree_cell * nasl_wmi_close(lex_ctxt *lexic)
Close WMI service handle.
int wmi_reg_set_qword_val(WMI_HANDLE, const char *, const char *, uint64_t)
Set Registry QWORD value.
tree_cell * nasl_wmi_reg_set_dword_val(lex_ctxt *lexic)
Set Registry DWORD value.
int wmi_reg_get_ex_string_val(WMI_HANDLE, unsigned int, const char *, const char *, char **)
Get Registry Expanded string value.
struct in6_addr * plug_get_host_ip(struct arglist *desc)
int check_alpha(char *val)
tree_cell * nasl_wmi_reg_delete_key(lex_ctxt *lexic)
Delete Registry key.
tree_cell * nasl_wmi_reg_enum_key(lex_ctxt *lexic)
Enumerate registry keys.
int wmi_reg_create_key(WMI_HANDLE, const char *)
Create Registry Key.
WMI_HANDLE wmi_connect_rsop(int argc, char **argv)
Establish connection to a WMI RSOP service.
char * wmi_versioninfo(void)
Return version info for WMI implementation.
int wmi_reg_set_string_val(WMI_HANDLE, const char *, const char *, const char *)
Set Registry string value.
tree_cell * alloc_tree_cell(int lnb, char *s)
tree_cell * nasl_wmi_reg_get_sz(lex_ctxt *lexic)
Get string value from Registry.
tree_cell * nasl_wmi_connect_reg(lex_ctxt *lexic)
Connect to a WMI Registry service and return a handle for it.
struct arglist * script_infos
tree_cell * nasl_wmi_reg_create_key(lex_ctxt *lexic)
Create Registry key.
tree_cell * nasl_wmi_versioninfo(lex_ctxt *lexic)
Get a version string of the WMI implementation.
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.
API protos describing the interface of a wmi interface implementation.
tree_cell * nasl_wmi_reg_enum_value(lex_ctxt *lexic)
Enumerate registry values.