=== Currently working on: -- LPEG in NSE. -- HTTP Library in LPeg. === Maybe: -- NSE Debugger. Look at Diman's implementation: http://seclists.org/nmap-dev/2008/q1/0228.html http://www.keplerproject.org/remdebug/ -- Review NSE Nsock Socket Allocation: o Dynamically increase socket slots if nothing has been done in the last ~5 seconds. Also decrease once traffic is working again. This resolves any sort of socket deadlock. -- Deadlock identification and correction: o Add detection for deadlocks and print which threads are involved. o use above results to make a strategy for automatic deadlock resolution. -- Look into moving Packet Module to C. === Done: -- Review and Improve NSE Nsock Library. o Move away from C pointer references and allocation over to Lua. If a function ends in error, all the userdata will be collected. We would otherwise need to use pcalls everywhere to clean up and free malloc()'d memory. o Use thread calling nsock_loop (or currently running thread) for restoring waiting threads to the running queue. Making a function call on a yielded thread is a hack and could cause problems in the future. o Get rid of the static nsock_pool and use a dynamically allocated structure on a per-host-group basis. o Prepare for Lua 5.2 --> Change to real errors. -- Update NSE Book Implementation Section. -- Added boolean operator patch. -- Update NSE --script section (book) to include Boolean operators. -- Fix ceil for runlevels. -- Solve Brandon's Segfault for thread's sockets and close them when the thread ends. -- Change the error on finding the name of a nonexistent file in script.db into a non-fatal warning. -- Correct nsock_connect to unlock the socket slot if the connection fails. -- Remove packet.hextobin and packet.bintohex. Fix scripts that used them to instead use bin.(un)pack. -- Commit --script-args patch and update the relevant section in the book. -- Deadlock identification and correction: o Release mutexes upon script death. -- Review NSE Nsock Socket Allocation: o Release socket locks on connection failure or timeout. o Track active sockets in the nsock library and don't rely on garbage collection for reallocation. -- HTTP Caching: o Add ability to use a proxy to http.lua. o Test http.lua performance using local caching proxy. o Implement a cache in http.lua.