31 #include "../misc/ftp_funcs.h" 32 #include "../base/kb.h" 33 #include "../misc/network.h" 34 #include "../misc/plugutils.h" 35 #include "../base/openvas_compress.h" 49 #define uint32 unsigned int 51 #define NASL_EXIT_DEPRECATED 66 52 #define NASL_EXIT_NOTVULN 99 61 retc->
x.
i_val = lrand48 ();
118 struct sockaddr_in addr;
125 bzero (&addr,
sizeof (addr));
130 retc->x.i_val = ntohs (addr.sin_port);
141 unsigned char buffer[1024];
142 #define iac buffer[0] 143 #define code buffer[1] 144 #define option buffer[2] 151 nasl_perror (lexic,
"Syntax error in the telnet_init() function\n");
153 "Correct syntax is : output = telnet_init(<socket>)\n");
162 if ((
iac != 255) || (n <= 0) || (n != 3))
166 else if ((
code == 253) || (
code == 254))
191 "More than 100 options received by telnet_init() function! exiting telnet_init.\n");
200 retc->
x.
str_val = g_memdup (buffer, n + 1);
227 GSIZE_TO_POINTER (port));
230 GSIZE_TO_POINTER (port));
244 GSIZE_TO_POINTER (alive));
247 GSIZE_TO_POINTER (alive));
291 #define BOGUS "are you dead ?" 321 const char *
oid = lexic->
oid;
326 g_snprintf (detail,
sizeof (detail),
"HostDetails/NVT/%s/%s",
oid,
name);
340 simple_register_host_detail(lexic,
"EXIT_CODE",
"EXIT_NOTVULN");
345 while (lexic != NULL)
404 for (j = 0; j < a2->
max_idx; j++)
412 "make_list: named arguments in array have no order\n");
425 "nasl_make_list: undefined variable #%d skipped\n", i);
430 "nasl_make_list: unhandled variable type 0x%x - skipped\n",
465 nasl_perror (lexic,
"make_array: odd number (%d) of argument?\n", vi);
487 nasl_perror (lexic,
"make_array: bad value type %d for arg #%d\n",
510 bzero (&myvar,
sizeof (myvar));
519 for (j = 0; j < a->
max_idx; j++)
539 nasl_perror (lexic,
"nasl_keys: bad variable #%d skipped\n", vi);
602 retc->
size = strlen (s);
617 nasl_perror (lexic,
"defined_func: missing parameter\n");
624 retc->
x.
i_val = (f != NULL);
641 nasl_perror (lexic,
"func_named_args: missing parameter\n");
648 nasl_perror (lexic,
"func_named_args: unknown function \"%s\"\n", s);
655 memset (&v, 0,
sizeof (v));
664 "func_named_args: add_var_to_list failed (internal error)\n");
680 nasl_perror (lexic,
"func_unnamed_args: missing parameter\n");
687 nasl_perror (lexic,
"func_unnamed_args: unknown function \"%s\"\n", s);
709 nasl_perror (lexic,
"func_has_arg: missing parameter\n");
716 nasl_perror (lexic,
"func_args: unknown function \"%s\"\n", s);
725 if (i >= 0 && i < f->nb_unnamed_args)
739 "func_has_arg: string or integer expected as 2nd parameter\n");
754 var_cmp (
const void *a,
const void *b)
777 nasl_perror (lexic,
"sort: this function is not reentrant!\n");
797 retc->
x.
i_val = time (NULL);
808 if (gettimeofday (&t, NULL) < 0)
810 nasl_perror (lexic,
"gettimeofday: %s\n", strerror (errno));
813 sprintf (str,
"%u.%06u", (
unsigned int) t.tv_sec, (
unsigned int) t.tv_usec);
815 retc->
size = strlen (str);
834 tictac = time (NULL);
838 ptm = gmtime (&tictac);
840 ptm = localtime (&tictac);
844 nasl_perror (lexic,
"localtime(%d,utc=%d): %s\n", tictac, utc,
851 memset (&v, 0,
sizeof (v));
862 v.
v.
v_int = ptm->tm_mon + 1;
864 v.
v.
v_int = ptm->tm_year + 1900;
868 v.
v.
v_int = ptm->tm_yday + 1;
870 v.
v.
v_int = ptm->tm_isdst;
891 if (tm.tm_year >= 1900)
895 tictac = mktime (&tm);
896 if (tictac == (time_t) (-1))
899 "mktime(sec=%02d min=%02d hour=%02d mday=%02d mon=%02d year=%04d isdst=%d): %s\n",
900 tm.tm_sec, tm.tm_min, tm.tm_hour, tm.tm_mday, tm.tm_mon + 1,
901 tm.tm_year + 1900, tm.tm_isdst,
902 errno ? strerror (errno) :
"invalid value?");
906 retc->x.i_val = tictac;
916 int timeout = 30, port = 88, tcp = 0;
917 char *hostname = NULL, *port_str, *tcp_str;
927 port = GPOINTER_TO_SIZE (port_str);
934 tcp = GPOINTER_TO_SIZE (tcp_str);
957 void *data, *uncompressed;
958 unsigned long datalen, uncomplen;
968 if (uncompressed == NULL)
973 retc->
size = uncomplen;
983 void *data, *compressed;
984 unsigned long datalen, complen;
994 if (compressed == NULL)
999 retc->
size = complen;
1013 nasl_perror (lexic,
"Syntax : dec2str(num:<n>)\n");
1016 char *ret = g_malloc0 (
sizeof (num));
1017 SIVAL (ret, 0, num);
1021 retc->
size =
sizeof (num);
1034 char *p = (
char *) &w;
anon_nasl_var * nasl_get_var_by_num(void *ctxt, nasl_array *a, int num, int create)
void ref_cell(tree_cell *c)
tree_cell * nasl_func_named_args(lex_ctxt *lexic)
struct st_n_nasl_var * next_var
tree_cell * nasl_unixtime(lex_ctxt *lexic)
int arg_set_value(struct arglist *arglst, const char *name, void *value)
tree_cell * nasl_sort_array(lex_ctxt *lexic)
tree_cell * nasl_telnet_init(lex_ctxt *lexic)
void plug_set_key(struct arglist *args, char *name, int type, const void *value)
void * plug_get_key(struct arglist *args, char *name, int *type, int single)
tree_cell * nasl_isnull(lex_ctxt *lexic)
union st_a_nasl_var::@9 v
tree_cell * nasl_do_exit(lex_ctxt *lexic)
tree_cell * nasl_make_list(lex_ctxt *lexic)
tree_cell * nasl_keys(lex_ctxt *lexic)
void deref_cell(tree_cell *c)
void * openvas_uncompress(const void *src, unsigned long srclen, unsigned long *dstlen)
Uncompresses data in src buffer.
int open_stream_connection(struct arglist *args, unsigned int port, int transport, int timeout)
tree_cell * nasl_mktime(lex_ctxt *lexic)
int add_var_to_array(nasl_array *a, char *name, const anon_nasl_var *v)
long int get_int_local_var_by_name(lex_ctxt *, const char *, int)
tree_cell * nasl_usleep(lex_ctxt *lexic)
tree_cell * nasl_ftp_get_pasv_address(lex_ctxt *lexic)
tree_cell * nasl_func_unnamed_args(lex_ctxt *lexic)
char * get_str_local_var_by_name(lex_ctxt *, const char *)
tree_cell * nasl_ftp_log_in(lex_ctxt *lexic)
int nsend(int fd, void *data, int length, int i_opt)
#define SIVAL(buf, pos, val)
int add_var_to_list(nasl_array *a, int i, const anon_nasl_var *v)
tree_cell * nasl_max_index(lex_ctxt *lexic)
int read_stream_connection(int fd, void *buf0, int len)
tree_cell * alloc_typed_cell(int typ)
int read_stream_connection_min(int fd, void *buf0, int min_len, int max_len)
void arg_add_value(struct arglist *arglst, const char *name, int type, void *value)
struct st_a_nasl_var ** num_elt
void * openvas_compress(const void *src, unsigned long srclen, unsigned long *dstlen)
Compresses data in src buffer.
tree_cell * nasl_gunzip(lex_ctxt *lexic)
tree_cell * nasl_dec2str(lex_ctxt *lexic)
tree_cell * nasl_defined_func(lex_ctxt *lexic)
tree_cell * nasl_rand(lex_ctxt *lexic)
tree_cell * nasl_gettimeofday(lex_ctxt *lexic)
long int cell_cmp(lex_ctxt *lexic, tree_cell *c1, tree_cell *c2)
long int get_int_var_by_num(lex_ctxt *, int, int)
void nasl_perror(lex_ctxt *lexic, char *msg,...)
char * get_str_var_by_num(lex_ctxt *, int)
struct timeval timeval(unsigned long val)
int write_stream_connection(int fd, void *buf0, int n)
tree_cell * nasl_gzip(lex_ctxt *lexic)
tree_cell * nasl_sleep(lex_ctxt *lexic)
int ftp_log_in(int soc, char *username, char *passwd)
tree_cell * var2cell(anon_nasl_var *v)
int open_sock_opt_hn(const char *hostname, unsigned int port, int type, int protocol, int timeout)
tree_cell * nasl_get_byte_order(lex_ctxt *lexic)
tree_cell * nasl_func_has_arg(lex_ctxt *lexic)
int ftp_get_pasv_address(int soc, struct sockaddr_in *addr)
struct st_n_nasl_var ** hash_elt
tree_cell * nasl_start_denial(lex_ctxt *lexic)
tree_cell * alloc_tree_cell(int lnb, char *s)
int arg_get_value_int(struct arglist *args, const char *name)
const char * var2str(const anon_nasl_var *v)
int array_max_index(nasl_array *a)
tree_cell * nasl_typeof(lex_ctxt *lexic)
unsigned int plug_get_host_open_port(struct arglist *desc)
tree_cell * nasl_end_denial(lex_ctxt *lexic)
struct arglist * script_infos
tree_cell * nasl_open_sock_kdc(lex_ctxt *lexic)
tree_cell * nasl_dump_ctxt(lex_ctxt *lexic)
void * arg_get_value(struct arglist *args, const char *name)
tree_cell * nasl_localtime(lex_ctxt *lexic)
tree_cell * nasl_make_array(lex_ctxt *lexic)
#define NASL_EXIT_NOTVULN
void dump_ctxt(lex_ctxt *c)
tree_cell * nasl_tcp_ping(lex_ctxt *lexic)
int get_var_size_by_name(lex_ctxt *, const char *)
nasl_func * get_func_ref_by_name(lex_ctxt *ctxt, const char *name)
struct struct_lex_ctxt * up_ctxt
int get_var_type_by_num(lex_ctxt *, int)
Returns NASL variable/cell type, VAR2_UNDEF if value is NULL.
int close_stream_connection(int fd)