Home page logo

nmap-dev logo Nmap Development mailing list archives

Jacek's status report - #10 of 16
From: Jacek Wielemborek <wielemborekj1 () gmail com>
Date: Mon, 12 Aug 2013 21:37:04 +0200

Hi guys,

This is the report 10/16 for the Google Summer of Code project
“Bringing Lua to Ncat”.


* Prepared the ncat-env-conninfo branch for merging:
        - Did some architectural changes both in the inner interfaces
(removed not_socket, which made the code less error-prone) and the Lua
API (replaced io.fdopen with io.ncatin/io.ncatout),
        - Fixed a memory leak and a bug related to sharing buffers in Windows code,
        - Added an io.ncatin demo - a websocket client written in Python
(since there's no select() in Lua yet), currently doesn't work on
        - Wrote some documentation, both in the code and the manual page.

* Started the ncat-lua-select branch:
        - Ported the POSIX code I developed six weeks ago in ncat-lua-script branch,
        - Found a way to get io.select() Lua extension working on Windows!
This took a few hours, but finally I discovered that an “assume it's a
socket, if getsockopt call failed, assume it's a named pipe” approach
worked in this case. It's the second time I'm using a technique that
involves non-intrusive system calls and trying alternative code paths
if they fail,
        - Added an IRC client demo that works both on POSIX and Windows
(copied from ncat-lua-script branch),
        - Wrote a man page entry for the io.select() feature.

* Played with Ncat on Windows, managed to fix my Cygwin environment to
work with ncat-test.pl script. I ran the tests, which gave me a pretty
clear vision of what doesn't work on this system (I posted the results
here: http://seclists.org/nmap-dev/2013/q3/282). My fselect changes in
ncat-lua-select fixed one of the bugs found, as I reported in the same
thread. I also experimented with SCTP on Windows, but all I could
achieve with these drivers was crashing the system.

* Wrote a lengthy report on the current state of Ncat-Lua development
and discussion. I did my best to make it complete; the report can be
found here: https://secwiki.org/w/Talk:Ncat-Lua

* Added some test code for my HTTP server to lua-exec-examples branch.
It checks the UTF-8 validation routine, making sure it doesn't let
through overlong Unicode sequences. Unfortunately, it also showed me
how complex the problem is (for example, some programs consider a test
case erroneous and some not) and I'll need to discuss the tests with

* Started my early experiments with the socket abstraction mechanism.
Didn't commit my code yet, because there wasn't really much to show so


* Prepare the ncat-lua-select code for merging. That will involve more
testing of the lua_select function.

* Prepare httpd.lua from lua-exec-examples for merging. That primarily
means solving the Unicode puzzle.

* Explore the socket abstractions model. Hopefully this time it'll go
smoother than in the ncat-lua-callbacks branch. The socket
abstractions problem is quite complicated - there is no common
read/write routine I could play with, the code handling these actions
are different in connect/listen mode and also differ depending on
whether we're using TCP/SCTP or UDP.

Jacek Wielemborek
Sent through the dev mailing list
Archived at http://seclists.org/nmap-dev/

  By Date           By Thread  

Current thread:
  • Jacek's status report - #10 of 16 Jacek Wielemborek (Aug 12)
[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]