Nmap Development mailing list archives

Re: [nmap-svn] r31387 - nmap-exp/d33tah/ncat-lua-with/ncat


From: Jacek Wielemborek <wielemborekj1 () gmail com>
Date: Wed, 17 Jul 2013 19:30:12 +0200

2013/7/17  <commit-mailer () nmap org>:
Author: d33tah
Date: Wed Jul 17 17:32:16 2013
New Revision: 31387

Log:
implement basic support for passing command-line arguments to scripts.

Modified:
   nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.c
   nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.h
   nmap-exp/d33tah/ncat-lua-with/ncat/ncat_main.c
   nmap-exp/d33tah/ncat-lua-with/ncat/ncat_posix.c

Modified: nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.c
==============================================================================
--- nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.c       (original)
+++ nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.c       Wed Jul 17 17:32:16 2013
@@ -219,13 +219,18 @@
     return 0;
 }

-void lua_setup(void)
+void lua_setup(char *dostring)
 {
     ncat_assert(o.cmdexec!=NULL);

     L = luaL_newstate();
     luaL_openlibs(L);

+    if (dostring != NULL) {
+        if (luaL_dostring(L, dostring))
+            report("Error parsing the command-line");
+    }
+
     if (luaL_loadfile(L,o.cmdexec) != 0)
         report("Error loading the Lua script");

@@ -286,10 +291,11 @@
     lua_close(L);
 }

-void script_list_add_filename(struct script_list_node **list, char *filename)
+void script_list_add_filename(struct script_list_node **list, char *filename, char *args)
 {
     struct script_list_node *node = (struct script_list_node *) safe_malloc(sizeof(*node));
     node->filename = filename;
+    node->args = args;
     node->next = *list;
     *list = node;
 }

Modified: nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.h
==============================================================================
--- nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.h       (original)
+++ nmap-exp/d33tah/ncat-lua-with/ncat/ncat_lua.h       Wed Jul 17 17:32:16 2013
@@ -106,16 +106,17 @@
 }
 #endif

-void lua_setup(void);
+void lua_setup(char *dostring);
 void lua_add_pipe(int fd, char *varname, char* mode);
 void lua_run(void);
 void lua_shutdown(void);

 struct script_list_node {
     char *filename;
+    char *args;
     struct script_list_node *next;
 };

-void script_list_add_filename(struct script_list_node **list, char *filename);
+void script_list_add_filename(struct script_list_node **list, char *filename, char *args);

 #endif

Modified: nmap-exp/d33tah/ncat-lua-with/ncat/ncat_main.c
==============================================================================
--- nmap-exp/d33tah/ncat-lua-with/ncat/ncat_main.c      (original)
+++ nmap-exp/d33tah/ncat-lua-with/ncat/ncat_main.c      Wed Jul 17 17:32:16 2013
@@ -514,20 +514,28 @@
                    http://seclists.org/nmap-dev/2013/q2/492 */
                 ncat_assert(argc == 3);
                 o.cmdexec = argv[2];
-                lua_setup();
+                lua_setup(NULL);
                 lua_run();
             }
             else if (strcmp(long_options[option_index].name, "lua-extensions") == 0) {
                 o.lua_extensions = 1;
             }
             else if (strcmp(long_options[option_index].name, "with") == 0) {
-                char *script_name;
-                int name_len;
+                char *script_name, *script_args, *args_expr = NULL;
+                int name_len, args_expr_len;

                 if (o.scripts != NULL && o.execmode != EXEC_SCRIPT)
                     bye("Cannot mix --with command-line switch with --lua-exec,"
                             " --sh-exec or --exec.");

+                if (script_args = strstr(optarg,",")) {
+                    optarg[script_args-optarg] = '\0';
+                    script_args++; //skip the comma
+                    args_expr_len = strlen("args = {") + strlen(script_args) + 16;
+                    args_expr = (char*) safe_zalloc(args_expr_len);
+                    Snprintf(args_expr, args_expr_len, "args = {%s}\n", script_args);
+                }
+
                 /* at the moment the search directory is hardcoded. */
                 name_len = strlen("scripts/") + strlen(optarg) + strlen(".lua") + 32;
                 script_name = (char*) safe_malloc(name_len);
@@ -540,9 +548,9 @@
                     logdebug("Registering script name %s\n", script_name);

                 o.cmdexec = script_name;
-                lua_setup();
+                lua_setup(NULL);
                 lua_shutdown();
-                script_list_add_filename(&o.scripts, script_name);
+                script_list_add_filename(&o.scripts, script_name, args_expr);

                 o.execmode = EXEC_SCRIPT;
                 o.lua_extensions = 1;
@@ -879,7 +887,7 @@
         bye("--lua-extensions requires --lua-exec to work.");
     }
     if (o.execmode == EXEC_LUA)
-        lua_setup();
+        lua_setup(NULL);
 #endif

     if (o.listen)

Modified: nmap-exp/d33tah/ncat-lua-with/ncat/ncat_posix.c
==============================================================================
--- nmap-exp/d33tah/ncat-lua-with/ncat/ncat_posix.c     (original)
+++ nmap-exp/d33tah/ncat-lua-with/ncat/ncat_posix.c     Wed Jul 17 17:32:16 2013
@@ -448,7 +448,7 @@
                 /* Discard the pipes possibly created before calling netexec(),
                    in ncat_connect.c/ncat_listen.c. This has to be tested or
                    redesigned. */
-                lua_setup(); //Actually load the script.
+                lua_setup(current->args); //Actually load the script.
                 if (current->next != NULL) {
                     /* Only close the other sides of the pipe if it's not the
                        topmost script - otherwise, they weren't created. */

_______________________________________________
Sent through the svn mailing list
http://nmap.org/mailman/listinfo/svn

Since the branch feels kind of doomed now, I thought I'd commit the
patch I had in stash.
_______________________________________________
Sent through the dev mailing list
http://nmap.org/mailman/listinfo/dev
Archived at http://seclists.org/nmap-dev/


Current thread: