OpenVAS Libraries  9.0.3
nasl_init.c
Go to the documentation of this file.
1 /* Nessus Attack Scripting Language
2  *
3  * Copyright (C) 2002 - 2004 Tenable Network Security
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2,
7  * as published by the Free Software Foundation
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  *
18  */
19 
20 #include "nasl_raw.h" /* to e.g. favour BSD, but also for IPPROTO_TCP
21  and TH_FIN */
22 
23 #include <string.h> /* for memset */
24 #include <stdlib.h> /* for getenv. */
25 
26 #include "../misc/nvt_categories.h" /* for ACT_INIT */
27 #include "../misc/network.h" /* for OPENVAS_ENCAPS_* */
28 
29 #include "nasl.h"
30 #include "nasl_tree.h"
31 #include "nasl_global_ctxt.h"
32 #include "nasl_func.h"
33 #include "nasl_var.h"
34 #include "nasl_lex_ctxt.h"
35 #include "exec.h"
36 #include "nasl_packet_forgery.h"
37 #include "nasl_debug.h"
38 #include "nasl_socket.h"
39 #include "nasl_http.h"
40 #include "nasl_host.h"
41 #include "nasl_text_utils.h"
42 #include "nasl_scanner_glue.h"
43 #include "nasl_misc_funcs.h"
44 #include "nasl_cmd_exec.h"
45 #include "nasl_crypto.h"
46 #include "nasl_crypto2.h"
47 #include "nasl_wmi.h"
48 #include "nasl_smb.h"
49 #include "nasl_packet_forgery_v6.h"
50 #include "nasl_builtin_plugins.h"
51 #include "nasl_ssh.h"
52 #include "nasl_snmp.h"
53 #include "nasl_cert.h"
54 #include "nasl_isotime.h"
55 
56 
57 /* **************************************************************** */
58 
59 typedef struct
60 {
61  const char *name;
62  tree_cell *(*c_code) (lex_ctxt *);
63  int unnamed;
64  const char *args[16];
65 } init_func;
66 
72 static init_func libfuncs[] = {
73  {"script_name", script_name, 1, {NULL}},
74  {"script_version", script_version, 1, {NULL}},
75  {"script_timeout", script_timeout, 1, {NULL}},
76  {"script_copyright", script_copyright, 999, {NULL}},
77  {"script_summary", script_summary, 999, {NULL}},
78  {"script_category", script_category, 1, {NULL}},
79  {"script_family", script_family, 999, {NULL}},
80  {"script_dependencies", script_dependencies, 999, {NULL}},
81  {"script_require_keys", script_require_keys, 999, {NULL}},
82  {"script_mandatory_keys", script_mandatory_keys, 999, {NULL}},
83  {"script_require_ports", script_require_ports, 999, {NULL}},
84  {"script_require_udp_ports", script_require_udp_ports, 999, {NULL}},
85  {"script_exclude_keys", script_exclude_keys, 999, {NULL}},
86  {"script_add_preference", script_add_preference, 0,
87  {"name", "type", "value", NULL}},
88  {"script_get_preference", script_get_preference, 1, {NULL}},
89  {"script_get_preference_file_content", script_get_preference_file_content, 1,
90  {NULL}},
91  {"script_get_preference_file_location", script_get_preference_file_location,
92  1, {NULL}},
93 
94  {"script_id", script_id, 1, {NULL}},
95  {"script_oid", script_oid, 1, {NULL}},
96  {"script_cve_id", script_cve_id, 999, {NULL}},
97  {"script_bugtraq_id", script_bugtraq_id, 999, {NULL}},
98  {"script_xref", script_xref, 0, {"name", "value", NULL}},
99  {"script_tag", script_tag, 0, {"name", "value", NULL}},
100  {"vendor_version", nasl_vendor_version, 0, {"name", "value", NULL}},
101  {"get_preference", nasl_get_preference, 1, {NULL}},
102  {"safe_checks", safe_checks, 0, {NULL}},
103  {"get_script_oid", get_script_oid, 0, {NULL}},
104  {"replace_kb_item", replace_kb_item, 0, {"name", "value", NULL}},
105  {"set_kb_item", set_kb_item, 0, {"name", "value", NULL}},
106  {"get_kb_item", get_kb_item, 2, {NULL}},
107  {"get_kb_list", get_kb_list, 1, {NULL}},
108  {"security_message", security_message, 1,
109  {"data", "port", "proto", "protocol", NULL}},
110 
111  {"log_message", log_message, 1, {"data", "port", "proto", "protocol", NULL}},
112  {"error_message", error_message, 1,
113  {"data", "port", "proto", "protocol", NULL}},
114 
115  {"open_sock_tcp", nasl_open_sock_tcp, 1,
116  {"bufsz", "priority", "timeout", "transport", NULL}},
117  {"open_sock_udp", nasl_open_sock_udp, 1, {NULL}},
118  {"open_priv_sock_tcp", nasl_open_priv_sock_tcp, 0,
119  {"dport", "sport", "timeout", NULL}},
120  {"open_priv_sock_udp", nasl_open_priv_sock_udp, 0, {"dport", "sport", NULL}},
121  {"socket_get_error", nasl_socket_get_error, 1, {NULL}},
122 
123  {"recv", nasl_recv, 0, {"length", "min", "socket", "timeout", NULL}},
124  {"recv_line", nasl_recv_line, 0, {"length", "socket", "timeout", NULL}},
125  {"send", nasl_send, 0, {"data", "length", "option", "socket", NULL}},
126  {"socket_negotiate_ssl", nasl_socket_negotiate_ssl, 0,
127  {"socket", "transport", NULL}},
128  {"socket_get_cert", nasl_socket_get_cert, 0, {"socket", NULL}},
129  {"socket_get_ssl_version", nasl_socket_get_ssl_version, 0, {"socket", NULL}},
130  {"socket_get_ssl_ciphersuite", nasl_socket_get_ssl_ciphersuite, 0,
131  {"socket", NULL}},
132  {"socket_get_ssl_session_id", nasl_socket_get_ssl_session_id, 0,
133  {"socket", NULL}},
134  {"socket_get_ssl_compression", nasl_socket_get_ssl_compression, 0,
135  {"socket", NULL}},
136  {"close", nasl_close_socket, 1, {NULL}},
137  {"join_multicast_group", nasl_join_multicast_group, 1, {NULL}},
138  {"leave_multicast_group", nasl_leave_multicast_group, 1, {NULL}},
139  {"get_source_port", nasl_get_source_port, 1, {NULL}}, /* DOC! */
140  {"get_sock_info", nasl_get_sock_info, 2, {"asstring", NULL}},
141 
142  {"cgibin", cgibin, 0, {NULL}},
143  {"http_open_socket", http_open_socket, 1, {NULL}},
144  {"http_head", http_head, 0, {"data", "item", "port", NULL}},
145  {"http_get", http_get, 0, {"data", "item", "port", NULL}},
146  {"http_post", http_post, 0, {"data", "item", "port", NULL}},
147  {"http_delete", http_delete, 0, {"data", "item", "port", NULL}},
148  {"http_put", http_put, 0, {"data", "item", "port", NULL}},
149  {"http_close_socket", http_close_socket, 0, {"socket", NULL}},
150 
151  {"get_host_name", get_hostname, 0, {NULL}},
152  {"get_host_ip", get_host_ip, 0, {NULL}},
153  {"same_host", nasl_same_host, 2, {"cmp_hostname"}},
154  {"TARGET_IS_IPV6", nasl_target_is_ipv6, 0, {NULL}},
155 
156  {"get_host_open_port", get_host_open_port, 0, {NULL}},
157  {"get_port_state", get_port_state, 1, {NULL}},
158  {"get_tcp_port_state", get_port_state, 1, {NULL}},
159  {"get_udp_port_state", get_udp_port_state, 1, {NULL}},
160  {"scanner_add_port", nasl_scanner_add_port, 0, {"port", "proto", NULL}},
161  {"scanner_status", nasl_scanner_status, 0, {"current", "total", NULL}},
162  {"scanner_get_port", nasl_scanner_get_port, 1, {NULL}},
163  {"islocalhost", nasl_islocalhost, 0, {NULL}},
164  {"islocalnet", nasl_islocalnet, 0, {NULL}},
165  {"get_port_transport", get_port_transport, 1, {"asstring", NULL}},
166  {"this_host", nasl_this_host, 0, {NULL}},
167  {"this_host_name", nasl_this_host_name, 0, {NULL}},
168 
169  {"string", nasl_string, 9999, {NULL}},
170  {"raw_string", nasl_rawstring, 9999, {NULL}},
171  {"strcat", nasl_strcat, 9999, {NULL}},
172 
173  {"display", nasl_display, 9999, {NULL}},
174  {"ord", nasl_ord, 1, {NULL}},
175  {"hex", nasl_hex, 1, {NULL}},
176  {"hexstr", nasl_hexstr, 1, {NULL}},
177  {"strstr", nasl_strstr, 2, {NULL}},
178  {"ereg", nasl_ereg, 0, {"icase", "multiline", "pattern", "string", NULL}},
179  {"ereg_replace", nasl_ereg_replace, 0,
180  {"icase", "pattern", "replace", "string", NULL}},
181  {"egrep", nasl_egrep, 0, {"icase", "pattern", "string", NULL}},
182  {"eregmatch", nasl_eregmatch, 0, {"icase", "pattern", "string", NULL}},
183 
184  {"match", nasl_match, 0, {"icase", "pattern", "string", NULL}},
185  {"substr", nasl_substr, 3, {NULL}},
186  {"insstr", nasl_insstr, 4, {NULL}},
187  {"tolower", nasl_tolower, 1, {NULL}},
188  {"toupper", nasl_toupper, 1, {NULL}},
189  {"crap", nasl_crap, 1, {"data", "length", NULL}},
190  {"strlen", nasl_strlen, 1, {NULL}},
191  {"split", nasl_split, 1, {"keep", "sep", NULL}},
192  {"chomp", nasl_chomp, 1, {NULL}},
193  {"int", nasl_int, 1, {NULL}},
194  {"stridx", nasl_stridx, 3, {NULL}},
195  {"str_replace", nasl_str_replace, 0,
196  {"count", "find", "replace", "string", NULL}},
197 
198  {"make_list", nasl_make_list, 9999, {NULL}},
199  {"make_array", nasl_make_array, 9999, {NULL}},
200  {"keys", nasl_keys, 9999, {NULL}},
201  {"max_index", nasl_max_index, 1, {NULL}},
202  {"sort", nasl_sort_array, 9999, {NULL}},
203 
204  {"unixtime", nasl_unixtime, 0, {NULL}},
205  {"gettimeofday", nasl_gettimeofday, 0, {NULL}},
206  {"localtime", nasl_localtime, 1, {"utc"}},
207  {"mktime", nasl_mktime, 0,
208  {"hour", "isdst", "mday", "min", "mon", "sec", "year"}},
209 
210  {"open_sock_kdc", nasl_open_sock_kdc, 0, {NULL}},
211 
212  {"telnet_init", nasl_telnet_init, 1, {NULL}},
213  {"ftp_log_in", nasl_ftp_log_in, 0, {"pass", "socket", "user", NULL}},
214  {"ftp_get_pasv_port", nasl_ftp_get_pasv_address, 0, {"socket", NULL}},
215  {"start_denial", nasl_start_denial, 0, {NULL}},
216  {"end_denial", nasl_end_denial, 0, {NULL}},
217 
218  {"dump_ctxt", nasl_dump_ctxt, 0, {NULL}},
219  {"typeof", nasl_typeof, 1, {NULL}},
220 
221  {"exit", nasl_do_exit, 1, {NULL}},
222  {"rand", nasl_rand, 0, {NULL}},
223  {"usleep", nasl_usleep, 1, {NULL}},
224  {"sleep", nasl_sleep, 1, {NULL}},
225  {"isnull", nasl_isnull, 1, {NULL}},
226  {"defined_func", nasl_defined_func, 1, {NULL}},
227  {"func_named_args", nasl_func_named_args, 1, {NULL}},
228  {"func_unnamed_args", nasl_func_unnamed_args, 1, {NULL}},
229  {"func_has_arg", nasl_func_has_arg, 2, {NULL}},
230 
231  {"forge_ip_packet", forge_ip_packet, 0,
232  {"data", "ip_dst", "ip_hl", "ip_id", "ip_len", "ip_off", "ip_p",
233  "ip_src", "ip_sum", "ip_tos", "ip_ttl", "ip_v", NULL}},
234  {"forge_ipv6_packet", forge_ipv6_packet, 0,
235  {"data", "ip6_dst", "ip6_fl", "ip6_hlim", "ip6_p", "ip6_src",
236  "ip6_tc", "ip6_v", NULL}},
237 
238  {"get_ip_element", get_ip_element, 0, {"element", "ip", NULL}},
239  {"get_ipv6_element", get_ipv6_element, 0, {"element", "ipv6", NULL}},
240 
241  {"set_ip_elements", set_ip_elements, 0,
242  {"ip", "ip_dst", "ip_hl", "ip_id",
243  "ip_len", "ip_off", "ip_p", "ip_src",
244  "ip_sum", "ip_tos", "ip_ttl", "ip_v", NULL}},
245  {"set_ipv6_elements", set_ipv6_elements, 0,
246  {"ip6", "ip6_dst", "ip6_fl", "ip6_hlim", "ip6_nxt", "ip6_plen",
247  "ip6_src", "ip6_tc", "ip6_v", NULL}},
248 
249  {"insert_ip_options", insert_ip_options, 0,
250  {"code", "ip", "length", "value", NULL}},
251  {"insert_ipv6_options", insert_ipv6_options, 0,
252  {"code", "flags", "ip6", "length", "lifetime", "reacheable_time",
253  "retransmit_timer", "value", NULL}},
254  {"dump_ip_packet", dump_ip_packet, 9999, {NULL}},
255  {"dump_ipv6_packet", dump_ipv6_packet, 9999, {NULL}},
256 
257  {"forge_tcp_packet", forge_tcp_packet, 0,
258  {"data", "ip", "th_ack", "th_dport", "th_flags", "th_off", "th_seq",
259  "th_sport", "th_sum", "th_urp", "th_win", "th_x2", "update_ip_len", NULL}},
260  {"forge_tcp_v6_packet", forge_tcp_v6_packet, 0,
261  {"data", "ip6", "th_ack", "th_dport", "th_flags", "th_off",
262  "th_seq", "th_sport", "th_sum", "th_urp",
263  "th_win", "th_x2", NULL}},
264 
265  {"get_tcp_element", get_tcp_element, 0,
266  {"element", "tcp", NULL}},
267  {"get_tcp_v6_element", get_tcp_v6_element, 0,
268  {"element", "tcp", NULL}},
269 
270  {"set_tcp_elements", set_tcp_elements, 0,
271  {"data", "tcp", "th_ack", "th_dport", "th_flags", "th_off", "th_seq",
272  "th_sport", "th_sum", "th_urp", "th_win", "th_x2", NULL}},
273  {"set_tcp_v6_elements", set_tcp_v6_elements, 0,
274  {"data", "tcp", "th_ack", "th_dport",
275  "th_flags", "th_off", "th_seq", "th_sport",
276  "th_sum", "th_urp", "th_win", "th_x2", NULL}},
277 
278  {"dump_tcp_packet", dump_tcp_packet, 999, {NULL}},
279  {"dump_tcp_v6_packet", dump_tcp_v6_packet, 999, {NULL}},
280  {"tcp_ping", nasl_tcp_ping, 0, {"port", NULL}},
281  {"tcp_v6_ping", nasl_tcp_v6_ping, 0, {"port", NULL}},
282 
283  {"forge_udp_packet", forge_udp_packet, 0,
284  {"data", "ip", "uh_dport", "uh_sport", "uh_sum", "uh_ulen", "update_ip_len",
285  NULL}},
286  {"forge_udp_v6_packet", forge_udp_v6_packet, 0,
287  {"data", "ip6", "uh_dport", "uh_sport", "uh_sum", "uh_ulen",
288  "update_ip6_len", NULL}},
289 
290  {"get_udp_element", get_udp_element, 0,
291  {"element", "udp", NULL}},
292  {"get_udp_v6_element", get_udp_v6_element, 0,
293  {"element", "udp", NULL}},
294 
295  {"set_udp_elements", set_udp_elements, 0,
296  {"data", "udp", "uh_dport", "uh_sport", "uh_sum", "uh_ulen", NULL}},
297  {"set_udp_v6_elements", set_udp_v6_elements, 0,
298  {"data", "udp", "uh_dport", "uh_sport", "uh_sum", "uh_ulen", NULL}},
299 
300  {"dump_udp_packet", dump_udp_packet, 999, {NULL}},
301  {"dump_udp_v6_packet", dump_udp_v6_packet, 999, {NULL}},
302 
303  {"forge_icmp_packet", forge_icmp_packet, 0,
304  {"data", "icmp_cksum", "icmp_code", "icmp_id", "icmp_seq", "icmp_type",
305  "ip", "update_ip_len", NULL}},
306  {"forge_icmp_v6_packet", forge_icmp_v6_packet, 0,
307  {"data", "icmp_cksum", "icmp_code", "icmp_id", "icmp_seq", "icmp_type",
308  "ip6", "update_ip6_len", NULL}},
309 
310  {"get_icmp_element", get_icmp_element, 0,
311  {"element", "icmp", NULL}},
312  {"get_icmp_v6_element", get_icmp_v6_element, 0,
313  {"element", "icmp", NULL}},
314 
315  {"forge_igmp_packet", forge_igmp_packet, 0,
316  {"code", "data", "group", "ip", "type", "update_ip_len", NULL}},
317  {"forge_igmp_v6_packet", forge_igmp_v6_packet, 0,
318  {"code", "data", "group", "ip", "type", "update_ip6_len", NULL}},
319  {"send_packet", nasl_send_packet, 99,
320  {"length", "pcap_active", "pcap_filter", "pcap_timeout", NULL}},
321  {"send_v6packet", nasl_send_v6packet, 99,
322  {"length", "pcap_active", "pcap_filter", "pcap_timeout", NULL}},
323 
324  {"pcap_next", nasl_pcap_next, 1,
325  {"interface", "pcap_filter", "timeout", NULL}},
326  {"send_capture", nasl_send_capture, 1,
327  {"data", "interface", "length", "option", "pcap_filter", "socket", "timeout",
328  NULL}},
329 
330  {"MD2", nasl_md2, 1, {NULL}},
331  {"MD4", nasl_md4, 1, {NULL}},
332  {"MD5", nasl_md5, 1, {NULL}},
333  {"SHA1", nasl_sha1, 1, {NULL}},
334  {"SHA256", nasl_sha256, 1, {NULL}},
335  {"RIPEMD160", nasl_ripemd160, 1, {NULL}},
336  {"HMAC_MD2", nasl_hmac_md2, 0, {"data", "key", NULL}},
337  {"HMAC_MD5", nasl_hmac_md5, 0, {"data", "key", NULL}},
338  {"HMAC_SHA1", nasl_hmac_sha1, 0, {"data", "key", NULL}},
339  {"HMAC_SHA256", nasl_hmac_sha256, 0, {"data", "key", NULL}},
340  {"HMAC_SHA384", nasl_hmac_sha384, 0, {"data", "key", NULL}},
341  {"HMAC_SHA512", nasl_hmac_sha512, 0, {"data", "key", NULL}},
342  {"HMAC_RIPEMD160", nasl_hmac_ripemd160, 0, {"data", "key", NULL}},
343  {"prf_sha256", nasl_prf_sha256, 0, {"label", "outlen", "secret", "seed", NULL}},
344  {"prf_sha384", nasl_prf_sha384, 0, {"label", "outlen", "secret", "seed", NULL}},
345  {"tls1_prf", nasl_tls1_prf, 0, {"label", "outlen", "secret", "seed", NULL}},
346  {"ntlmv2_response", nasl_ntlmv2_response, 0,
347  {"address_list", "address_list_len", "crypt_key", "domain", "ntlmv2_hash",
348  "user", NULL}},
349  {"ntlm2_response", nasl_ntlm2_response, 0,
350  {"cryptkey", "nt_hash", "password", NULL}},
351  {"ntlm_response", nasl_ntlm_response, 0,
352  {"cryptkey", "neg_flags", "nt_hash", "password", NULL}},
353  {"key_exchange", nasl_keyexchg, 0,
354  {"cryptkey", "nt_hash", "session_key", NULL}},
355  {"NTLMv1_HASH", nasl_ntlmv1_hash, 0, {"cryptkey", "passhash", NULL}},
356  {"NTLMv2_HASH", nasl_ntlmv2_hash, 0,
357  {"cryptkey", "length", "passhash", NULL}},
358  {"nt_owf_gen", nasl_nt_owf_gen, 1, {NULL}},
359  {"lm_owf_gen", nasl_lm_owf_gen, 1, {NULL}},
360  {"ntv2_owf_gen", nasl_ntv2_owf_gen, 0, {"domain", "login", "owf", NULL}},
361  {"insert_hexzeros", nasl_insert_hexzeros, 0, {"in", NULL}},
362  {"dec2str", nasl_dec2str, 0, {"num", NULL}},
363  {"get_signature", nasl_get_sign, 0,
364  {"buf", "buflen", "key", "seq_number", NULL}},
365  {"get_smb2_signature", nasl_get_smb2_sign, 0,
366  {"buf", "key", NULL}},
367  {"dh_generate_key", nasl_dh_generate_key, 0, {"g", "p", "priv", NULL}},
368  {"bn_random", nasl_bn_random, 0, {"need", NULL}},
369  {"bn_cmp", nasl_bn_cmp, 0, {"key1", "key2", NULL}},
370  {"dh_compute_key", nasl_dh_compute_key, 0,
371  {"dh_server_pub", "g", "p", "priv_key", "pub_key", NULL}},
372  {"rsa_public_encrypt", nasl_rsa_public_encrypt, 0,
373  {"d", "data", "e", "n", "p", "padd", "q", NULL}},
374  {"rsa_private_decrypt", nasl_rsa_private_decrypt, 0,
375  {"d", "data", "e", "n", "p", "padd", "q", NULL}},
376  {"rsa_public_decrypt", nasl_rsa_public_decrypt, 0, {"e", "n", "sig", NULL}},
377  {"bf_cbc_encrypt", nasl_bf_cbc_encrypt, 0, {"data", "iv", "key", NULL}},
378  {"bf_cbc_decrypt", nasl_bf_cbc_decrypt, 0, {"data", "iv", "key", NULL}},
379  {"rc4_encrypt", nasl_rc4_encrypt, 0, {"data", "key", NULL}},
380  {"aes128_cbc_encrypt", nasl_aes128_cbc_encrypt, 0, {"data", "key", NULL}},
381  {"aes256_cbc_encrypt", nasl_aes256_cbc_encrypt, 0, {"data", "key", NULL}},
382  {"aes128_ctr_encrypt", nasl_aes128_ctr_encrypt, 0, {"data", "key", NULL}},
383  {"aes256_ctr_encrypt", nasl_aes256_ctr_encrypt, 0, {"data", "key", NULL}},
384  {"aes128_gcm_encrypt", nasl_aes128_gcm_encrypt, 0, {"data", "key", NULL}},
385  {"aes256_gcm_encrypt", nasl_aes256_gcm_encrypt, 0, {"data", "key", NULL}},
386  {"des_ede_cbc_encrypt", nasl_des_ede_cbc_encrypt, 0, {"data", "key", NULL}},
387  {"dsa_do_verify", nasl_dsa_do_verify, 0,
388  {"data", "g", "p", "pub", "q", "r", "s", NULL}},
389  {"pem_to_rsa", nasl_pem_to_rsa, 0, {"passphrase", "priv", NULL}},
390  {"pem_to_dsa", nasl_pem_to_dsa, 0, {"passphrase", "priv", NULL}},
391  {"rsa_sign", nasl_rsa_sign, 0, {"d", "data", "e", "n", NULL}},
392  {"dsa_do_sign", nasl_dsa_do_sign, 0,
393  {"data", "g", "p", "priv", "pub", "q", NULL}},
394  {"gunzip", nasl_gunzip, 0, {"data", "len", NULL}},
395  {"gzip", nasl_gzip, 0, {"data", "len", NULL}},
396  {"DES", nasl_cipher_des, 0, {"data", "key", NULL}},
397 
398 #ifdef HAVE_NETSNMP
399  {"snmpv1_get", nasl_snmpv1_get, 0, {"community", "oid", "port", "protocol",
400  NULL }},
401  {"snmpv2c_get", nasl_snmpv2c_get, 0, {"community", "oid", "port", "protocol",
402  NULL }},
403  {"snmpv3_get", nasl_snmpv3_get, 0, {"authpass", "authproto", "oid", "port",
404  "privpass", "privproto", "username",
405  NULL }},
406 #endif /* HAVE_NETSNMP */
407 
408  {"ssh_connect", nasl_ssh_connect, 0, {"port", "socket", NULL }},
409  {"ssh_disconnect", nasl_ssh_disconnect, 1, {NULL }},
410  {"ssh_session_id_from_sock", nasl_ssh_session_id_from_sock, 1, {NULL }},
411  {"ssh_get_sock", nasl_ssh_get_sock, 1, {NULL }},
412  {"ssh_set_login", nasl_ssh_set_login, 1, {"login", NULL }},
413  {"ssh_userauth", nasl_ssh_userauth, 1, {"login", "password", NULL }},
414  {"ssh_login_interactive", nasl_ssh_login_interactive, 1, {"login", NULL }},
415  {"ssh_login_interactive_pass", nasl_ssh_login_interactive_pass, 1, {"password", NULL }},
416  {"ssh_request_exec", nasl_ssh_request_exec,
417  1, {"cmd", "stderr", "stdout",NULL }},
418  {"ssh_shell_open", nasl_ssh_shell_open, 1, { NULL }},
419  {"ssh_shell_read", nasl_ssh_shell_read, 1, { NULL }},
420  {"ssh_shell_write", nasl_ssh_shell_write, 1, { "cmd" }},
421  {"ssh_shell_close", nasl_ssh_shell_close, 1, { NULL }},
422  {"ssh_get_issue_banner", nasl_ssh_get_issue_banner, 1, {NULL }},
423 #if LIBSSH_VERSION_INT >= SSH_VERSION_INT (0, 6, 0)
424  {"ssh_get_server_banner", nasl_ssh_get_server_banner, 1, {NULL }},
425 #endif
426  {"ssh_get_auth_methods", nasl_ssh_get_auth_methods, 1, {NULL }},
427  {"ssh_get_host_key", nasl_ssh_get_host_key, 1, {NULL }},
428 
429 #ifdef HAVE_LIBKSBA
430  {"cert_open", nasl_cert_open, 1, {"errorvar", NULL }},
431  {"cert_close", nasl_cert_close, 1, {NULL }},
432  {"cert_query", nasl_cert_query, 2, {"idx", NULL }},
433 #endif /*HAVE_LIBKSBA*/
434 
435  {"pread", nasl_pread, 0, {"argv", "cd", "cmd", "nice", NULL}},
436  {"find_in_path", nasl_find_in_path, 1, {NULL}},
437  {"fread", nasl_fread, 1, {NULL}},
438  {"fwrite", nasl_fwrite, 0, {"data", "file", NULL}},
439  {"unlink", nasl_unlink, 1, {NULL}},
440  {"get_tmp_dir", nasl_get_tmp_dir, 0, {NULL}},
441 
442  {"get_byte_order", nasl_get_byte_order, 0, { NULL }},
443 
444  {"file_stat", nasl_file_stat, 1, {NULL}},
445  {"file_open", nasl_file_open, 0, {"mode", "name", NULL}},
446  {"file_close", nasl_file_close, 1, {NULL}},
447  {"file_read", nasl_file_read, 0, {"fp", "length", NULL}},
448  {"file_write", nasl_file_write, 0, {"data", "fp", NULL}},
449  {"file_seek", nasl_file_seek, 0, {"fp", "offset", NULL}},
450 
451  {"wmi_versioninfo", nasl_wmi_versioninfo, 0, {NULL}},
452  {"wmi_connect", nasl_wmi_connect, 4,
453  {"ns", "password", "username", NULL}},
454  {"wmi_close", nasl_wmi_close, 0, {"wmi_handle", NULL}},
455  {"wmi_query", nasl_wmi_query, 0, {"query", "wmi_handle", NULL}},
456  {"wmi_connect_rsop", nasl_wmi_connect_rsop, 0,
457  {"password", "username", NULL}},
458  {"wmi_query_rsop", nasl_wmi_query_rsop, 0, {"query", "wmi_handle", NULL}},
459  {"wmi_connect_reg", nasl_wmi_connect_reg, 0,
460  {"password", "username", NULL}},
461  {"wmi_reg_enum_key", nasl_wmi_reg_enum_key, 0,
462  {"hive", "key", "wmi_handle", NULL}},
463  {"wmi_reg_enum_value", nasl_wmi_reg_enum_value, 0,
464  {"hive", "key", "wmi_handle", NULL}},
465  {"wmi_reg_get_sz", nasl_wmi_reg_get_sz, 0,
466  {"hive", "key", "key_name", "wmi_handle", NULL}},
467  {"wmi_reg_get_bin_val", nasl_wmi_reg_get_bin_val, 0,
468  {"hive", "key", "val_name", "wmi_handle", NULL}},
469  {"wmi_reg_get_dword_val", nasl_wmi_reg_get_dword_val, 0,
470  {"hive", "key", "val_name", "wmi_handle", NULL}},
471  {"wmi_reg_get_ex_string_val", nasl_wmi_reg_get_ex_string_val, 0,
472  {"hive", "key", "val_name", "wmi_handle", NULL}},
473  {"wmi_reg_get_mul_string_val", nasl_wmi_reg_get_mul_string_val, 0,
474  {"hive", "key", "val_name", "wmi_handle", NULL}},
475  {"wmi_reg_get_qword_val", nasl_wmi_reg_get_qword_val, 0,
476  {"hive", "key", "val_name", "wmi_handle", NULL}},
477  {"wmi_reg_set_dword_val", nasl_wmi_reg_set_dword_val, 0,
478  {"hive", "key", "val", "val_name", "wmi_handle"}},
479  {"wmi_reg_set_qword_val", nasl_wmi_reg_set_qword_val, 0,
480  {"hive", "key", "val", "val_name", "wmi_handle"}},
481  {"wmi_reg_set_ex_string_val", nasl_wmi_reg_set_ex_string_val, 0,
482  {"hive", "key", "val", "val_name", "wmi_handle"}},
483  {"wmi_reg_set_string_val", nasl_wmi_reg_set_string_val, 0,
484  {"hive", "key", "val", "val_name", "wmi_handle"}},
485  {"wmi_reg_create_key", nasl_wmi_reg_create_key, 0,
486  {"hive", "key", "wmi_handle"}},
487  {"wmi_reg_delete_key", nasl_wmi_reg_delete_key, 0,
488  {"hive", "key", "wmi_handle"}},
489 
490  {"smb_versioninfo", nasl_smb_versioninfo, 0, {NULL}},
491  {"smb_connect", nasl_smb_connect, 0,
492  {"password", "share", "username", NULL}},
493  {"smb_close", nasl_smb_close, 0, {"smb_handle", NULL}},
494  {"smb_file_SDDL", nasl_smb_file_SDDL, 0, {"filename", "smb_handle", NULL}},
495  {"smb_file_owner_sid", nasl_smb_file_owner_sid, 0,
496  {"filename", "smb_handle", NULL}},
497  {"smb_file_group_sid", nasl_smb_file_group_sid, 0,
498  {"filename", "smb_handle", NULL}},
499  {"smb_file_trustee_rights", nasl_smb_file_trustee_rights, 0,
500  {"filename", "smb_handle", NULL}},
501  {"win_cmd_exec", nasl_win_cmd_exec, 0,
502  {"cmd", "password", "username"}},
503 
504  {"scan_phase", scan_phase, 0, {NULL}},
505  {"network_targets", network_targets, 0, {NULL}},
506 
507  {"plugin_run_find_service", plugin_run_find_service, 0, {NULL}},
508  {"plugin_run_openvas_tcp_scanner", plugin_run_openvas_tcp_scanner, 0, {NULL}},
509  {"plugin_run_synscan", plugin_run_synscan, 0, {NULL}},
510  {"plugin_run_nmap", plugin_run_nmap, 0, {NULL}},
511 
512  {"isotime_now", nasl_isotime_now, 0, {NULL}},
513  {"isotime_is_valid", nasl_isotime_is_valid, 1, {NULL}},
514  {"isotime_scan", nasl_isotime_scan, 1, {NULL}},
515  {"isotime_print", nasl_isotime_print, 1, {NULL}},
516  {"isotime_add", nasl_isotime_add, 1, {"days", "seconds", "years", NULL}},
517 
518  {NULL, NULL, 0, {NULL}}
519 };
520 
521 /* String variables */
522 static struct
523 {
524  const char *name;
525  const char *val;
526 } libsvars[] =
527 {
528  {
529  "OPENVAS_VERSION", OPENVASLIB_VERSION},
530  {
531 NULL, NULL},};
532 
533 /* Integer variables */
534 static struct
535 {
536  const char *name;
537  int val;
538 } libivars[] =
539 {
540  {
541  "TRUE", 1},
542  {
543  "FALSE", 0},
544  {
545  "pcap_timeout", 5},
546  {
547  "IPPROTO_TCP", IPPROTO_TCP},
548  {
549  "IPPROTO_UDP", IPPROTO_UDP},
550  {
551  "IPPROTO_ICMP", IPPROTO_ICMP},
552  {
553  "IPROTO_IP", IPPROTO_IP},
554  {
555  "IPPROTO_IGMP", IPPROTO_IGMP},
556  {
557  "ENCAPS_AUTO", OPENVAS_ENCAPS_AUTO},
558  {
559  "ENCAPS_IP", OPENVAS_ENCAPS_IP},
560  {
561  "ENCAPS_SSLv23", OPENVAS_ENCAPS_SSLv23},
562  {
563  "ENCAPS_SSLv2", OPENVAS_ENCAPS_SSLv2},
564  {
565  "ENCAPS_SSLv3", OPENVAS_ENCAPS_SSLv3},
566  {
567  "ENCAPS_TLSv1", OPENVAS_ENCAPS_TLSv1},
568  {
569  "ENCAPS_TLSv11", OPENVAS_ENCAPS_TLSv11},
570  {
571  "ENCAPS_TLSv12", OPENVAS_ENCAPS_TLSv12},
572  {
573  "ENCAPS_TLScustom", OPENVAS_ENCAPS_TLScustom},
574  {
575  "ENCAPS_MAX", OPENVAS_ENCAPS_MAX},
576  {
577  "TH_FIN", TH_FIN},
578  {
579  "TH_SYN", TH_SYN},
580  {
581  "TH_RST", TH_RST},
582  {
583  "TH_PUSH", TH_PUSH},
584  {
585  "TH_ACK", TH_ACK},
586  {
587  "TH_URG", TH_URG},
588  {
589  "IP_RF", IP_RF},
590  {
591  "IP_DF", IP_DF},
592  {
593  "IP_MF", IP_MF},
594  {
595  "IP_OFFMASK", IP_OFFMASK},
596  {
597  "ACT_INIT", ACT_INIT},
598  {
599  "ACT_GATHER_INFO", ACT_GATHER_INFO},
600  {
601  "ACT_ATTACK", ACT_ATTACK},
602  {
603  "ACT_MIXED_ATTACK", ACT_MIXED_ATTACK},
604  {
605  "ACT_DESTRUCTIVE_ATTACK", ACT_DESTRUCTIVE_ATTACK},
606  {
607  "ACT_DENIAL", ACT_DENIAL},
608  {
609  "ACT_SCANNER", ACT_SCANNER},
610  {
611  "ACT_SETTINGS", ACT_SETTINGS},
612  {
613  "ACT_KILL_HOST", ACT_KILL_HOST},
614  {
615  "ACT_FLOOD", ACT_FLOOD},
616  {
617  "ACT_END", ACT_END},
618  {
619  "MSG_OOB", MSG_OOB},
620  {
621  "NOERR", NASL_ERR_NOERR},
622  {
623  "ETIMEDOUT", NASL_ERR_ETIMEDOUT},
624  {
625  "ECONNRESET", NASL_ERR_ECONNRESET},
626  {
627  "EUNREACH", NASL_ERR_EUNREACH},
628  {
629  "EUNKNOWN", NASL_ERR_EUNKNOWN},
630  {
631  /* Since OpenVAS-8, libssh is mandatory. To maintain compatibility of
632  the NVT feed with older versions, this variable needs to be set.
633  Once OpenVAS-7 is retired, this setting of the variable can be removed
634  and also any occurrences in the NVTs, which should lead to some
635  significant NASL code removals. */
636  "_HAVE_LIBSSH", 1},
637  {
638 NULL, 0},};
639 
640 /* See also in exec.c:
641  * COMMAND_LINE
642  * description
643  */
644 
650 int
652 {
653  int i, j, c;
654  nasl_func *pf;
655  tree_cell tc;
656  const char **p, *q;
657 
658  memset (&tc, 0, sizeof (tc));
659  for (i = 0, c = 0; i < sizeof (libfuncs) / sizeof (libfuncs[0]) - 1; i++)
660  {
661  if ((pf = insert_nasl_func (lexic, libfuncs[i].name, NULL)) == NULL)
662  {
663  nasl_perror (lexic, "init_nasl_library: could not define fct '%s'\n",
664  libfuncs[i].name);
665  continue;
666  }
667  pf->block = libfuncs[i].c_code;
668  pf->flags |= FUNC_FLAG_INTERNAL;
669  pf->nb_unnamed_args = libfuncs[i].unnamed;
670 
671  for (j = 0, p = libfuncs[i].args, q = NULL; (*p) != NULL; j++)
672  {
673  if (q != NULL && strcmp (q, *p) > 0)
674  nasl_perror (lexic,
675  "init_nasl_library: unsorted args for function %s: %s > %s\n",
676  libfuncs[i].name, q, (*p));
677  q = (*p);
678  p++;
679  }
680  pf->nb_named_args = j;
681  pf->args_names = (char **) libfuncs[i].args;
682 
683  c++;
684  }
685 
686  // Initialize constant integer terms
687  tc.type = CONST_INT;
688  for (i = 0; i < sizeof (libivars) / sizeof (libivars[0]) - 1; i++)
689  {
690  tc.x.i_val = libivars[i].val;
691  if (add_named_var_to_ctxt (lexic, libivars[i].name, &tc) == NULL)
692  {
693  nasl_perror (lexic, "init_nasl_library: could not define var '%s'\n",
694  libivars[i].name);
695  continue;
696  }
697  c++;
698  }
699 
700  // Initialize constant string terms
701  tc.type = CONST_DATA;
702  for (i = 0; i < sizeof (libsvars) / sizeof (libsvars[0]) - 1; i++)
703  {
704  tc.x.str_val = (char *) libsvars[i].val;
705  tc.size = strlen (libsvars[i].val);
706  if (add_named_var_to_ctxt (lexic, libsvars[i].name, &tc) == NULL)
707  {
708  nasl_perror (lexic, "init_nasl_library: could not define var '%s'\n",
709  libsvars[i].name);
710  continue;
711  }
712  c++;
713  }
714 
715  // Add the "NULL" variable
716  if (add_named_var_to_ctxt (lexic, "NULL", NULL) == NULL)
717  nasl_perror (lexic, "init_nasl_library: could not define var 'NULL'\n");
718 
719  return c;
720 }
721 
722 
723 char *
725 {
726  static char vers[sizeof (OPENVASLIB_VERSION) + 1];
727  strncpy (vers, OPENVASLIB_VERSION, sizeof (vers) - 1);
728  vers[sizeof (vers) - 1] = '\0';
729  return vers;
730 }
tree_cell * plugin_run_find_service(lex_ctxt *lexic)
Protos and data structures for CERT functions used by NASL scripts.
tree_cell * nasl_scanner_get_port(lex_ctxt *lexic)
tree_cell * nasl_rsa_public_decrypt(lex_ctxt *lexic)
Definition: nasl_crypto2.c:838
tree_cell * script_get_preference_file_content(lex_ctxt *lexic)
tree_cell * nasl_ssh_get_server_banner(lex_ctxt *lexic)
Get the server banner.
Definition: nasl_ssh.c:1774
tree_cell * nasl_fread(lex_ctxt *lexic)
Read file.
tree_cell * forge_icmp_packet(lex_ctxt *lexic)
void * block
Definition: nasl_func.h:36
tree_cell * nasl_socket_get_ssl_version(lex_ctxt *lexic)
Definition: nasl_socket.c:691
tree_cell * nasl_file_close(lex_ctxt *lexic)
Close file.
Protos for NASL SMB API.
tree_cell * get_script_oid(lex_ctxt *lexic)
Return the OID of the current script.
tree_cell * nasl_file_write(lex_ctxt *lexic)
Write file.
tree_cell * nasl_chomp(lex_ctxt *lexic)
tree_cell * set_udp_v6_elements(lex_ctxt *lexic)
tree_cell * nasl_leave_multicast_group(lex_ctxt *lexic)
Definition: nasl_socket.c:1061
tree_cell * nasl_smb_file_trustee_rights(lex_ctxt *lexic)
Obtain File Trustee SID with Access Mask.
Definition: nasl_smb.c:321
tree_cell * nasl_ssh_shell_open(lex_ctxt *lexic)
Request an ssh shell.
Definition: nasl_ssh.c:1951
#define NASL_ERR_ETIMEDOUT
Definition: nasl.h:68
tree_cell * nasl_hmac_md2(lex_ctxt *lexic)
Definition: nasl_crypto.c:212
tree_cell * forge_ip_packet(lex_ctxt *lexic)
tree_cell * nasl_socket_get_ssl_session_id(lex_ctxt *lexic)
Definition: nasl_socket.c:647
tree_cell * get_icmp_element(lex_ctxt *lexic)
tree_cell * forge_igmp_v6_packet(lex_ctxt *lexic)
tree_cell * get_ipv6_element(lex_ctxt *lexic)
Obtain IPv6 header element.
tree_cell * nasl_str_replace(lex_ctxt *lexic)
tree_cell * nasl_sha1(lex_ctxt *lexic)
Definition: nasl_crypto.c:133
tree_cell * nasl_ssh_login_interactive(lex_ctxt *lexic)
Authenticate a user on an ssh connection.
Definition: nasl_ssh.c:1275
tree_cell * script_exclude_keys(lex_ctxt *lexic)
tree_cell * nasl_func_named_args(lex_ctxt *lexic)
tree_cell * nasl_bn_random(lex_ctxt *lexic)
Definition: nasl_crypto2.c:210
tree_cell * script_oid(lex_ctxt *lexic)
tree_cell * nasl_wmi_reg_set_string_val(lex_ctxt *lexic)
Set Registry string value.
Definition: nasl_wmi.c:1020
Protos and data structures for SSH functions used by NASL scripts.
tree_cell * get_tcp_element(lex_ctxt *lexic)
tree_cell * nasl_pcap_next(lex_ctxt *lexic)
tree_cell * nasl_smb_close(lex_ctxt *lexic)
Close SMB service handle.
Definition: nasl_smb.c:153
tree_cell * scan_phase(lex_ctxt *lexic)
tree_cell * http_get(lex_ctxt *lexic)
Definition: nasl_http.c:214
const char * val
Definition: nasl_init.c:525
tree_cell * get_tcp_v6_element(lex_ctxt *lexic)
Get TCP Header element.
tree_cell * nasl_wmi_reg_set_qword_val(lex_ctxt *lexic)
Set Registry QWORD value.
Definition: nasl_wmi.c:925
tree_cell * nasl_unixtime(lex_ctxt *lexic)
tree_cell * nasl_smb_file_SDDL(lex_ctxt *lexic)
Obtain Security Descriptor in SDDL format.
Definition: nasl_smb.c:185
tree_cell * http_open_socket(lex_ctxt *lexic)
Definition: nasl_http.c:47
tree_cell * set_tcp_v6_elements(lex_ctxt *lexic)
Set TCP Header element.
tree_cell * nasl_sort_array(lex_ctxt *lexic)
tree_cell * nasl_hmac_sha512(lex_ctxt *lexic)
Definition: nasl_crypto.c:566
tree_cell * nasl_ssh_connect(lex_ctxt *lexic)
Connect to the target host via TCP and setup an ssh connection.
Definition: nasl_ssh.c:486
#define NASL_ERR_ECONNRESET
Definition: nasl.h:69
tree_cell * nasl_telnet_init(lex_ctxt *lexic)
tree_cell * nasl_bf_cbc_encrypt(lex_ctxt *lexic)
Header file for built-in plugins.
tree_cell * nasl_keyexchg(lex_ctxt *lexic)
Definition: nasl_crypto.c:730
tree_cell * get_udp_element(lex_ctxt *lexic)
#define NASL_ERR_NOERR
Definition: nasl.h:67
tree_cell * nasl_rawstring(lex_ctxt *lexic)
tree_cell * nasl_md5(lex_ctxt *lexic)
Definition: nasl_crypto.c:127
tree_cell * nasl_wmi_connect(lex_ctxt *lexic)
Connect to a WMI service and return a handle for it.
Definition: nasl_wmi.c:148
tree_cell * nasl_aes128_cbc_encrypt(lex_ctxt *lexic)
tree_cell * nasl_ssh_shell_close(lex_ctxt *lexic)
Close an ssh shell.
Definition: nasl_ssh.c:2118
tree_cell * nasl_socket_get_error(lex_ctxt *lexic)
Definition: nasl_socket.c:1137
tree_cell * script_family(lex_ctxt *lexic)
tree_cell * nasl_isnull(lex_ctxt *lexic)
short type
Definition: nasl_tree.h:107
tree_cell * script_require_ports(lex_ctxt *lexic)
tree_cell * get_kb_item(lex_ctxt *lexic)
#define NASL_ERR_EUNREACH
Definition: nasl.h:70
#define ACT_DENIAL
tree_cell * nasl_do_exit(lex_ctxt *lexic)
tree_cell * nasl_wmi_query_rsop(lex_ctxt *lexic)
WMI RSOP query.
Definition: nasl_wmi.c:377
tree_cell * nasl_ereg_replace(lex_ctxt *lexic)
tree_cell * script_bugtraq_id(lex_ctxt *lexic)
char * str_val
Definition: nasl_tree.h:113
tree_cell * nasl_send_capture(lex_ctxt *lexic)
tree_cell * nasl_split(lex_ctxt *lexic)
tree_cell * nasl_smb_file_group_sid(lex_ctxt *lexic)
Obtain File Group SID.
Definition: nasl_smb.c:275
tree_cell * get_port_state(lex_ctxt *lexic)
Definition: nasl_host.c:105
tree_cell * nasl_make_list(lex_ctxt *lexic)
tree_cell * nasl_ntlm2_response(lex_ctxt *lexic)
Definition: nasl_crypto.c:655
tree_cell * nasl_send(lex_ctxt *lexic)
Definition: nasl_socket.c:899
tree_cell * get_ip_element(lex_ctxt *lexic)
tree_cell * nasl_keys(lex_ctxt *lexic)
tree_cell * nasl_wmi_reg_get_dword_val(lex_ctxt *lexic)
Get registry DWORD value.
Definition: nasl_wmi.c:681
tree_cell * nasl_sha256(lex_ctxt *lexic)
Definition: nasl_crypto.c:139
tree_cell * nasl_crap(lex_ctxt *lexic)
tree_cell * insert_ipv6_options(lex_ctxt *lexic)
tree_cell * nasl_target_is_ipv6(lex_ctxt *lexic)
Definition: nasl_host.c:433
tree_cell * nasl_scanner_status(lex_ctxt *lexic)
tree_cell * nasl_send_v6packet(lex_ctxt *lexic)
Send forged IPv6 Packet.
tree_cell * nasl_wmi_reg_get_ex_string_val(lex_ctxt *lexic)
Get registry expanded string value.
Definition: nasl_wmi.c:731
tree_cell * nasl_isotime_print(lex_ctxt *lexic)
Convert an SIO time string into a better readable string.
Definition: nasl_isotime.c:724
char * nasl_version()
Definition: nasl_init.c:724
tree_cell * nasl_tolower(lex_ctxt *lexic)
tree_cell * nasl_mktime(lex_ctxt *lexic)
tree_cell * nasl_aes128_ctr_encrypt(lex_ctxt *lexic)
tree_cell * http_delete(lex_ctxt *lexic)
Definition: nasl_http.c:246
tree_cell * forge_tcp_v6_packet(lex_ctxt *lexic)
Forge TCP packet.
tree_cell * nasl_nt_owf_gen(lex_ctxt *lexic)
Definition: nasl_crypto.c:794
tree_cell * script_version(lex_ctxt *lexic)
tree_cell * forge_tcp_packet(lex_ctxt *lexic)
tree_cell * nasl_hmac_md5(lex_ctxt *lexic)
Definition: nasl_crypto.c:218
tree_cell * nasl_dsa_do_verify(lex_ctxt *lexic)
tree_cell * nasl_ntlm_response(lex_ctxt *lexic)
Definition: nasl_crypto.c:691
tree_cell * nasl_aes128_gcm_encrypt(lex_ctxt *lexic)
#define ACT_FLOOD
tree_cell * nasl_islocalnet(lex_ctxt *lexic)
Definition: nasl_host.c:158
char ** args_names
Definition: nasl_func.h:35
#define ACT_ATTACK
tree_cell * nasl_usleep(lex_ctxt *lexic)
tree_cell * script_add_preference(lex_ctxt *lexic)
tree_cell * dump_udp_packet(lex_ctxt *lexic)
tree_cell * nasl_open_priv_sock_tcp(lex_ctxt *lexic)
Definition: nasl_socket.c:411
tree_cell * nasl_ftp_get_pasv_address(lex_ctxt *lexic)
tree_cell * script_cve_id(lex_ctxt *lexic)
tree_cell * nasl_func_unnamed_args(lex_ctxt *lexic)
tree_cell * nasl_wmi_reg_get_bin_val(lex_ctxt *lexic)
Get registry binary value.
Definition: nasl_wmi.c:634
int nb_named_args
Definition: nasl_func.h:34
tree_cell * get_icmp_v6_element(lex_ctxt *lexic)
tree_cell * dump_tcp_packet(lex_ctxt *lexic)
union TC::@7 x
tree_cell * nasl_cipher_des(lex_ctxt *lexic)
Definition: nasl_crypto.c:184
tree_cell * nasl_ftp_log_in(lex_ctxt *lexic)
#define ACT_MIXED_ATTACK
tree_cell * nasl_wmi_reg_set_ex_string_val(lex_ctxt *lexic)
Set Registry Expanded string value.
Definition: nasl_wmi.c:977
tree_cell * set_tcp_elements(lex_ctxt *lexic)
tree_cell * forge_udp_v6_packet(lex_ctxt *lexic)
tree_cell * nasl_wmi_reg_get_qword_val(lex_ctxt *lexic)
Get registry QWORD value.
Definition: nasl_wmi.c:825
tree_cell * log_message(lex_ctxt *lexic)
tree_cell * nasl_rsa_sign(lex_ctxt *lexic)
Definition: nasl_crypto2.c:980
tree_cell * cgibin(lex_ctxt *lexic)
Definition: nasl_http.c:265
tree_cell * nasl_fwrite(lex_ctxt *lexic)
Write file.
tree_cell * nasl_prf_sha384(lex_ctxt *lexic)
Definition: nasl_crypto.c:554
tree_cell * nasl_ssh_request_exec(lex_ctxt *lexic)
Run a command via ssh.
Definition: nasl_ssh.c:1603
tree_cell * nasl_max_index(lex_ctxt *lexic)
tree_cell * nasl_ntv2_owf_gen(lex_ctxt *lexic)
Definition: nasl_crypto.c:886
tree_cell * nasl_get_smb2_sign(lex_ctxt *lexic)
Definition: nasl_crypto.c:572
tree_cell * nasl_hmac_ripemd160(lex_ctxt *lexic)
Definition: nasl_crypto.c:236
tree_cell * set_ipv6_elements(lex_ctxt *lexic)
Set IPv6 header element.
tree_cell * nasl_cert_open(lex_ctxt *lexic)
Create a certificate object.
Definition: nasl_cert.c:176
tree_cell * nasl_socket_get_ssl_ciphersuite(lex_ctxt *lexic)
Definition: nasl_socket.c:708
tree_cell * http_head(lex_ctxt *lexic)
Definition: nasl_http.c:226
tree_cell * nasl_scanner_add_port(lex_ctxt *lexic)
nasl_func * insert_nasl_func(lex_ctxt *lexic, const char *fname, tree_cell *decl_node)
Definition: nasl_func.c:65
tree_cell * nasl_win_cmd_exec(lex_ctxt *lexic)
Execute the command in windows.
Definition: nasl_smb.c:369
tree_cell * nasl_ssh_userauth(lex_ctxt *lexic)
Authenticate a user on an ssh connection.
Definition: nasl_ssh.c:1047
tree_cell * nasl_dh_compute_key(lex_ctxt *lexic)
Definition: nasl_crypto2.c:513
tree_cell * nasl_open_priv_sock_udp(lex_ctxt *lexic)
Definition: nasl_socket.c:417
tree_cell * get_kb_list(lex_ctxt *lexic)
tree_cell * nasl_hexstr(lex_ctxt *lexic)
tree_cell * nasl_hex(lex_ctxt *lexic)
tree_cell * script_dependencies(lex_ctxt *lexic)
tree_cell * nasl_ssh_get_host_key(lex_ctxt *lexic)
Get the host key.
Definition: nasl_ssh.c:1819
int unnamed
Definition: nasl_init.c:63
tree_cell * nasl_ssh_login_interactive_pass(lex_ctxt *lexic)
Authenticate a user on an ssh connection.
Definition: nasl_ssh.c:1387
tree_cell * get_hostname(lex_ctxt *lexic)
Definition: nasl_host.c:51
tree_cell * nasl_wmi_connect_rsop(lex_ctxt *lexic)
Connect to a WMI RSOP service and return a handle for it.
Definition: nasl_wmi.c:307
tree_cell * nasl_this_host(lex_ctxt *lexic)
Definition: nasl_host.c:172
tree_cell * nasl_bn_cmp(lex_ctxt *lexic)
Definition: nasl_crypto2.c:173
tree_cell * nasl_ntlmv1_hash(lex_ctxt *lexic)
Definition: nasl_crypto.c:761
tree_cell * nasl_tls1_prf(lex_ctxt *lexic)
Definition: nasl_crypto.c:560
tree_cell * nasl_md2(lex_ctxt *lexic)
Definition: nasl_crypto.c:115
#define ACT_SCANNER
tree_cell * set_kb_item(lex_ctxt *lexic)
tree_cell * script_timeout(lex_ctxt *lexic)
#define FUNC_FLAG_INTERNAL
Definition: nasl_func.h:25
tree_cell * nasl_islocalhost(lex_ctxt *lexic)
Definition: nasl_host.c:144
tree_cell * nasl_isotime_add(lex_ctxt *lexic)
Add days or seconds to an ISO time string.
Definition: nasl_isotime.c:776
tree_cell * nasl_hmac_sha1(lex_ctxt *lexic)
Definition: nasl_crypto.c:224
tree_cell * nasl_smb_versioninfo(lex_ctxt *lexic)
Get a version string of the SMB implementation.
Definition: nasl_smb.c:67
tree_cell * nasl_bf_cbc_decrypt(lex_ctxt *lexic)
named_nasl_var * add_named_var_to_ctxt(lex_ctxt *, const char *, tree_cell *)
Definition: nasl_var.c:908
tree_cell * nasl_ssh_shell_write(lex_ctxt *lexic)
Write string to ssh shell.
Definition: nasl_ssh.c:2070
tree_cell * nasl_rc4_encrypt(lex_ctxt *lexic)
tree_cell * script_require_keys(lex_ctxt *lexic)
tree_cell * nasl_wmi_close(lex_ctxt *lexic)
Close WMI service handle.
Definition: nasl_wmi.c:225
Definition: nasl_tree.h:105
tree_cell * nasl_ssh_get_issue_banner(lex_ctxt *lexic)
Get the issue banner.
Definition: nasl_ssh.c:1723
tree_cell * nasl_file_seek(lex_ctxt *lexic)
Seek in file.
Protos for NASL WMI API.
tree_cell * script_tag(lex_ctxt *lexic)
tree_cell * nasl_ord(lex_ctxt *lexic)
tree_cell * nasl_aes256_gcm_encrypt(lex_ctxt *lexic)
tree_cell * nasl_pread(lex_ctxt *lexic)
Definition: nasl_cmd_exec.c:66
tree_cell * nasl_gunzip(lex_ctxt *lexic)
tree_cell * set_udp_elements(lex_ctxt *lexic)
tree_cell * forge_igmp_packet(lex_ctxt *lexic)
tree_cell * nasl_dsa_do_sign(lex_ctxt *lexic)
tree_cell * nasl_recv(lex_ctxt *lexic)
Definition: nasl_socket.c:726
tree_cell * nasl_wmi_reg_set_dword_val(lex_ctxt *lexic)
Set Registry DWORD value.
Definition: nasl_wmi.c:873
tree_cell * nasl_dec2str(lex_ctxt *lexic)
tree_cell * nasl_string(lex_ctxt *lexic)
tree_cell * nasl_close_socket(lex_ctxt *lexic)
Definition: nasl_socket.c:947
tree_cell * nasl_ssh_session_id_from_sock(lex_ctxt *lexic)
Given a socket, return the corresponding session id.
Definition: nasl_ssh.c:802
tree_cell * safe_checks(lex_ctxt *lexic)
tree_cell * set_ip_elements(lex_ctxt *lexic)
tree_cell * nasl_rsa_private_decrypt(lex_ctxt *lexic)
Definition: nasl_crypto2.c:747
tree_cell * nasl_defined_func(lex_ctxt *lexic)
tree_cell * plugin_run_nmap(lex_ctxt *lexic)
Run the nmap_net subsystem.
tree_cell * nasl_join_multicast_group(lex_ctxt *lexic)
Definition: nasl_socket.c:993
tree_cell * nasl_smb_connect(lex_ctxt *lexic)
Connect to SMB service and return a handle for it.
Definition: nasl_smb.c:97
tree_cell * nasl_rand(lex_ctxt *lexic)
tree_cell * script_id(lex_ctxt *lexic)
tree_cell * nasl_lm_owf_gen(lex_ctxt *lexic)
Definition: nasl_crypto.c:813
#define ACT_GATHER_INFO
tree_cell * forge_ipv6_packet(lex_ctxt *lexic)
Forge IPv6 packet.
tree_cell * nasl_gettimeofday(lex_ctxt *lexic)
const char * name
Definition: nasl_init.c:524
tree_cell *(* c_code)(lex_ctxt *)
Definition: nasl_init.c:62
tree_cell * nasl_md4(lex_ctxt *lexic)
Definition: nasl_crypto.c:121
tree_cell * nasl_smb_file_owner_sid(lex_ctxt *lexic)
Obtain File Owner SID.
Definition: nasl_smb.c:230
tree_cell * plugin_run_openvas_tcp_scanner(lex_ctxt *lexic)
tree_cell * nasl_socket_get_cert(lex_ctxt *lexic)
Definition: nasl_socket.c:623
tree_cell * nasl_ssh_set_login(lex_ctxt *lexic)
Set the login name for the authentication.
Definition: nasl_ssh.c:956
tree_cell * get_udp_v6_element(lex_ctxt *lexic)
tree_cell * nasl_aes256_cbc_encrypt(lex_ctxt *lexic)
tree_cell * nasl_get_tmp_dir(lex_ctxt *lexic)
tree_cell * script_name(lex_ctxt *lexic)
tree_cell * forge_udp_packet(lex_ctxt *lexic)
tree_cell * nasl_insert_hexzeros(lex_ctxt *lexic)
Definition: nasl_crypto.c:843
tree_cell * nasl_strcat(lex_ctxt *lexic)
int nb_unnamed_args
Definition: nasl_func.h:34
tree_cell * nasl_insstr(lex_ctxt *lexic)
tree_cell * nasl_file_open(lex_ctxt *lexic)
Open file.
void nasl_perror(lex_ctxt *lexic, char *msg,...)
Definition: nasl_debug.c:94
tree_cell * nasl_wmi_reg_delete_key(lex_ctxt *lexic)
Delete Registry key.
Definition: nasl_wmi.c:1104
tree_cell * nasl_match(lex_ctxt *lexic)
tree_cell * nasl_ssh_get_auth_methods(lex_ctxt *lexic)
Get the list of authmethods.
Definition: nasl_ssh.c:1863
tree_cell * script_get_preference_file_location(lex_ctxt *lexic)
tree_cell * nasl_socket_negotiate_ssl(lex_ctxt *lexic)
Definition: nasl_socket.c:589
tree_cell * nasl_tcp_v6_ping(lex_ctxt *lexic)
Performs TCP Connect to test if host is alive.
#define ACT_DESTRUCTIVE_ATTACK
tree_cell * get_host_ip(lex_ctxt *lexic)
Definition: nasl_host.c:69
tree_cell * nasl_ssh_get_sock(lex_ctxt *lexic)
Given a session id, return the corresponding socket.
Definition: nasl_ssh.c:844
tree_cell * nasl_ntlmv2_response(lex_ctxt *lexic)
Definition: nasl_crypto.c:611
int init_nasl_library(lex_ctxt *lexic)
Adds "built-in" variable and function definitions to a context.
Definition: nasl_init.c:651
tree_cell * nasl_wmi_reg_enum_key(lex_ctxt *lexic)
Enumerate registry keys.
Definition: nasl_wmi.c:588
tree_cell * dump_ipv6_packet(lex_ctxt *lexic)
Print IPv6 Header.
tree_cell * nasl_gzip(lex_ctxt *lexic)
tree_cell * nasl_find_in_path(lex_ctxt *lexic)
tree_cell * nasl_unlink(lex_ctxt *lexic)
Unlink file.
tree_cell * nasl_sleep(lex_ctxt *lexic)
tree_cell * nasl_rsa_public_encrypt(lex_ctxt *lexic)
Definition: nasl_crypto2.c:663
tree_cell * nasl_get_sock_info(lex_ctxt *lexic)
Get info pertaining to a socket.
Definition: nasl_socket.c:1240
tree_cell * dump_ip_packet(lex_ctxt *lexic)
tree_cell * nasl_get_byte_order(lex_ctxt *lexic)
tree_cell * nasl_dh_generate_key(lex_ctxt *lexic)
Definition: nasl_crypto2.c:467
tree_cell * nasl_same_host(lex_ctxt *lexic)
Definition: nasl_host.c:307
const char * name
Definition: nasl_init.c:61
tree_cell * nasl_func_has_arg(lex_ctxt *lexic)
long int i_val
Definition: nasl_tree.h:114
#define ACT_SETTINGS
tree_cell * nasl_ssh_disconnect(lex_ctxt *lexic)
Disconnect an ssh connection.
Definition: nasl_ssh.c:737
tree_cell * nasl_this_host_name(lex_ctxt *lexic)
Definition: nasl_host.c:227
tree_cell * nasl_pem_to_dsa(lex_ctxt *lexic)
Definition: nasl_crypto2.c:397
tree_cell * script_mandatory_keys(lex_ctxt *lexic)
tree_cell * nasl_start_denial(lex_ctxt *lexic)
tree_cell * http_close_socket(lex_ctxt *lexic)
Definition: nasl_http.c:53
tree_cell * get_host_open_port(lex_ctxt *lexic)
Definition: nasl_host.c:90
tree_cell * nasl_pem_to_rsa(lex_ctxt *lexic)
Definition: nasl_crypto2.c:380
tree_cell * nasl_substr(lex_ctxt *lexic)
tree_cell * nasl_wmi_reg_get_sz(lex_ctxt *lexic)
Get string value from Registry.
Definition: nasl_wmi.c:495
tree_cell * nasl_display(lex_ctxt *lexic)
tree_cell * nasl_get_sign(lex_ctxt *lexic)
Definition: nasl_crypto.c:243
tree_cell * nasl_ripemd160(lex_ctxt *lexic)
Definition: nasl_crypto.c:145
tree_cell * nasl_cert_close(lex_ctxt *lexic)
Release a certificate object.
Definition: nasl_cert.c:264
tree_cell * nasl_egrep(lex_ctxt *lexic)
tree_cell * nasl_des_ede_cbc_encrypt(lex_ctxt *lexic)
Protos and data structures for ISOTIME functions used by NASL scripts.
tree_cell * nasl_socket_get_ssl_compression(lex_ctxt *lexic)
Definition: nasl_socket.c:672
#define ACT_INIT
tree_cell * nasl_get_preference(lex_ctxt *lexic)
tree_cell * nasl_typeof(lex_ctxt *lexic)
tree_cell * nasl_ntlmv2_hash(lex_ctxt *lexic)
Definition: nasl_crypto.c:974
tree_cell * nasl_file_read(lex_ctxt *lexic)
Read file.
tree_cell * nasl_file_stat(lex_ctxt *lexic)
Stat file.
tree_cell * nasl_wmi_connect_reg(lex_ctxt *lexic)
Connect to a WMI Registry service and return a handle for it.
Definition: nasl_wmi.c:424
tree_cell * replace_kb_item(lex_ctxt *lexic)
#define ACT_KILL_HOST
#define NASL_ERR_EUNKNOWN
Definition: nasl.h:71
tree_cell * nasl_end_denial(lex_ctxt *lexic)
tree_cell * http_post(lex_ctxt *lexic)
Definition: nasl_http.c:237
tree_cell * forge_icmp_v6_packet(lex_ctxt *lexic)
tree_cell * nasl_toupper(lex_ctxt *lexic)
tree_cell * nasl_open_sock_udp(lex_ctxt *lexic)
Definition: nasl_socket.c:539
tree_cell * nasl_cert_query(lex_ctxt *lexic)
Query a certificate object.
Definition: nasl_cert.c:765
tree_cell * nasl_wmi_reg_create_key(lex_ctxt *lexic)
Create Registry key.
Definition: nasl_wmi.c:1062
tree_cell * insert_ip_options(lex_ctxt *lexic)
tree_cell * nasl_wmi_versioninfo(lex_ctxt *lexic)
Get a version string of the WMI implementation.
Definition: nasl_wmi.c:112
tree_cell * http_put(lex_ctxt *lexic)
Definition: nasl_http.c:255
tree_cell * script_category(lex_ctxt *lexic)
tree_cell * nasl_hmac_sha256(lex_ctxt *lexic)
Definition: nasl_crypto.c:346
tree_cell * nasl_strstr(lex_ctxt *lexic)
tree_cell * nasl_open_sock_kdc(lex_ctxt *lexic)
tree_cell * nasl_ssh_shell_read(lex_ctxt *lexic)
Read the output of an ssh shell.
Definition: nasl_ssh.c:2033
tree_cell * nasl_aes256_ctr_encrypt(lex_ctxt *lexic)
tree_cell * nasl_isotime_is_valid(lex_ctxt *lexic)
Check whether an ISO time string is valid.
Definition: nasl_isotime.c:620
tree_cell * nasl_dump_ctxt(lex_ctxt *lexic)
tree_cell * script_get_preference(lex_ctxt *lexic)
tree_cell * nasl_isotime_scan(lex_ctxt *lexic)
Convert a string into an ISO time string.
Definition: nasl_isotime.c:672
tree_cell * nasl_send_packet(lex_ctxt *lexic)
tree_cell * dump_tcp_v6_packet(lex_ctxt *lexic)
Print TCP/IPv6 packet.
tree_cell * network_targets(lex_ctxt *lexic)
tree_cell * script_require_udp_ports(lex_ctxt *lexic)
tree_cell * nasl_prf_sha256(lex_ctxt *lexic)
Definition: nasl_crypto.c:548
tree_cell * plugin_run_synscan(lex_ctxt *)
tree_cell * nasl_open_sock_tcp(lex_ctxt *lexic)
Open a TCP socket to the target host.
Definition: nasl_socket.c:527
tree_cell * error_message(lex_ctxt *lexic)
tree_cell * nasl_vendor_version(lex_ctxt *lexic)
tree_cell * nasl_stridx(lex_ctxt *lexic)
Returns index of a substring.
tree_cell * nasl_wmi_query(lex_ctxt *lexic)
Perform WQL query.
Definition: nasl_wmi.c:257
tree_cell * nasl_eregmatch(lex_ctxt *lexic)
Does extended regular expression pattern matching.
tree_cell * nasl_strlen(lex_ctxt *lexic)
tree_cell * nasl_localtime(lex_ctxt *lexic)
#define ACT_END
tree_cell * nasl_wmi_reg_get_mul_string_val(lex_ctxt *lexic)
Get registry multi valued strings.
Definition: nasl_wmi.c:778
tree_cell * get_udp_port_state(lex_ctxt *lexic)
Definition: nasl_host.c:124
tree_cell * nasl_make_array(lex_ctxt *lexic)
tree_cell * nasl_get_source_port(lex_ctxt *lexic)
Definition: nasl_socket.c:1094
tree_cell * security_message(lex_ctxt *lexic)
Send a security message to the client.
tree_cell * nasl_tcp_ping(lex_ctxt *lexic)
tree_cell * nasl_ereg(lex_ctxt *lexic)
tree_cell * script_copyright(lex_ctxt *lexic)
tree_cell * nasl_int(lex_ctxt *lexic)
tree_cell * nasl_recv_line(lex_ctxt *lexic)
Definition: nasl_socket.c:828
tree_cell * nasl_isotime_now(lex_ctxt *lexic)
Return the current time in ISO format.
Definition: nasl_isotime.c:588
tree_cell * get_port_transport(lex_ctxt *lexic)
Return the encapsulation mode of a port.
Definition: nasl_host.c:277
tree_cell * nasl_wmi_reg_enum_value(lex_ctxt *lexic)
Enumerate registry values.
Definition: nasl_wmi.c:542
tree_cell * nasl_hmac_sha384(lex_ctxt *lexic)
Definition: nasl_crypto.c:230
int size
Definition: nasl_tree.h:110
tree_cell * script_summary(lex_ctxt *lexic)
tree_cell * script_xref(lex_ctxt *lexic)
tree_cell * dump_udp_v6_packet(lex_ctxt *lexic)