Nmap Development mailing list archives
nmap-2.54b5+V-CVS (I know... I know... BETA6...)
From: "Jay Freeman \(saurik\)" <saurik () saurik com>
Date: Sun, 8 Oct 2000 13:55:45 -0500
Oh, god :). OK, I have a lot of notes to say about _this_ one. First off, sorry it took so long to get _something_ supporting nmap-2.54b5 (which was a semi-important bug fix, wasnt it?). The main reason is actually because I kept putting off putting some form of licenses on the new nmap-related-yet-not-really code sections. The release of nmap-2.54b6 got me off my ass about that semi-interesting note: when Fyodor released nmap-2.54b6 I almost started beating my head on my desk (more information available below). About a month ago I decided I would open up my CVS servers once I got more time to do active development on nmap, so here it is. I don't have a new release for anyone right now, things are a little too busted. I started making an omelettes, and realized I would have to break a few eggs, but accidently dropped them all on the floor and need to wait until I can buy a few more eggs.... Besides, I didn't make much headway to the stuff most people are interested in. End result? Here it is, and it isn't all that pretty (more information available below). All right, what we have here: Not much changed on the version scanning front. I am going to go out on a limb here and say I changed nothing, I really don't remember, but it definitly wasn't an interesting change if there was one. This release is all about moving towards modularizing existing functionality, including the version scanning into a new application/library called "anakrino" (which doesn't work yet, totally defeating the purpose, so nmap+V is still there with its built-in nmap modifications). This is the biggee: table based output. I got mad, and wrote a library I dont even like anymore called "libtabular" that lets me multiplex my output to all sorts of different file formats. Because of this, nmap+V now has HTML and XML output. Yes, thats right: __ Fyodor and I both independently added XML output. __ ACK! I didn't think he would ever get around to it :). Mines more general (single API, every file format, hardly any "if its this file format, do this, but otherwise do that", few places it is like that are to support places where existing output methods showed different data, like the exact time of a scan), but Fyodors is much "better" (concentrated more time on the output itself than the process of outputting it). My goal was to get any output at all (as libtabular didn't even work yet), and then modify _all_ the output forms at once until the XML output looked better. I even managed to get libtabular supporting grepable output (as Fyodor now calls it... I don't really like the name as I never really felt like I could safely grep that for most purposes... maybe a few seds? one to get it onto multiple lines, another to break out the /''s?... the XML is almost better for that, run it through xml2 and start scripting away).... I wanted to send an e-mail to Paul (Tod Rieger) about this stuff, who had sent me an e-mail asking about something and making a few general suggestions, but his e-mail address didnt work . Through libtabular, I started modularizing stuff. A new directory that separates out the scans, and source files for them. Not quite what I want currently, going to keep playing with it. The files have output commands that libtabular calls as it needs more output to fill in outstanding tables. The outputted columns can then be registered dynamically. Currently they are only being registered by the function that used to do the per-host output (I renamed it, and dont remember what it used to be called). The goal would be to get this to a stage where Fyodor likes the organization (I dont even yet ) and then get him to move pos_scan and super_scan out into the separate source files on his end so I can start work on _really_ modularizing stuff (I dont like making changes to nmap that are _too_ extreme in my CVS for fear of later updates from Fyodor driving me well insane because I can't easily add his new changes). I actually thought it was kind of funny that I added a few new libraries for the same release that Fyodor did (had this stuff ready before nmap-2.54b5), and ended up making quite the same changes to add the new library to the build scripts . CVS actually thought we were going in similar directions and that we just thought of different names for our stuff :). Oh, and I moved the regex stuff into nbase, where it seemed more appropriate. BTW, I have _no_, I repeat _no_ idea where _this_ stuff builds. Im not even going to mention Solaris or FreeBSD this time (DOH, already did well ignore that ). Just remember, it _is_ quasi-released CVS code, after all :)... I haven't even tested to make sure everything compiles OK with g++ yet (kept forgetting, will try to do that more often from now on). BTW, the way I currently think of this is "super experimental branch of nmap to see what kind of neat features can be added without screwing up the general population". The flag of nmap+V doesn't really fit this anymore (and never really fit my CVS server, which is also where I originally built the nmap g++ patches). All the versions of nmap+V are tagged and accessable, as well as CVS Info: Server: saurik.com User: cvs Password: cvs Repository: /cvs/nmap Module: nmap Obligatory CVS command reference: Get the source code: cvs -d :pserver:cvs () saurik com:/cvs/nmap login <password is "cvs"> cvs -z3 -d :pserver:cvs () saurik com:/cvs/nmap co nmap Later, from the new directory, to get new files: cvs update -dP Check for all the changes you have made to the code: cvs diff -u Get a list of log entries for a file: cvs log <filename> I will probably move these to another box off of anakrino.org in the next week or so... I kind of firewalled myself out of that one yesterday... will need to wait until Monday when someone is in the office :). That's the one with the nice, new version of CVS and the really secure environment for it, etc. For right now I just made myself a few backup copies of the code.... CVS currently doesn't have the protocol database for anakrino (not that anakrino can read it, or even that much is in the protocol database, so it doesn't matter). I hadn't commited my really messed up nmap.c in a while... but... well, its there if anyone wants to look at what its outputting and make comments (like "roll this change back, NOW!!!! and port to nmap-2.54b6 IMMEDIATLY!"). Seriously, I like comments... comments are good. Moving to nmap-2.54b6 is going to be a relatively slow process as it currently stands, as I removed almost all of the old output code and rebuilt it all... I'm probably going to work on the next output idea of mine, and then mess with it. Maybe I should just back port the Red Hat 7 change, as that's the only thing that even applies anymore.... BTW, what happens when it gets to the point where Fyodor makes a release that doesn't even affect any of my code? Oy ve... that's going to be funky. Here is what I finally decided I wanted to do (as of a week or so ago): _Only_ have XML output from the internals of nmap. Not even bother outputing other formats. Instead of having a generalized structure for building all the output formats at once (libtabular), build a generalized system for generating a certain version of a certain type of output through chains of XSLT. This is a more generalized way of doing what I suggested before in the XML output discussions for allowing drastic changes to the XML format (regular changes, adding this here, adding that there, etc. are handled by the shear fact that it is XML, after all). So if you wanted grapable output format version 1.1, I could see that "oh, we have an XSLT here from the XML format version 1.2... currently we are on XML format version 1.3, but that's all right, we will run the XML-1.3->XML-1.2 step and then do XML-1.2->Grep-1.1". Not sure if libxml is going to be able to do that, however. Might end up being forced to finally fork and say "C++ past here". Although that leads to the question of "why am I building this"? The main reason for spending so much time on the output methods is the hope that it could improve nmap, not allow me to splinter off a bunch of versions of different output formats that are never going to get used in applications anyway (hehe). In fact, it gets worse, as the biggest problem to inclusion isn't even the C++ but the Xerces (Apache's really powerful XML library) dependancy :(. The web server for www.libxml.org doesn't seem to be working well today, so I will have to put off checking for in memory multi-level XSLT support later. I really think this method would work better. That way the XML output could be designed to be as sophisticated as is neccessary, and we just need to get XSLT to the other formats (which shouldn't be difficult, I write XSLT all the time, and being the person who ends up writing the functionality, and probably the only person to ever use it, I guess I would be in charge of that). Sincerely, Jay Freeman (saurik) saurik () saurik com
Current thread:
- nmap-2.54b5+V-CVS (I know... I know... BETA6...) Jay Freeman (saurik) (Oct 08)
- Re: nmap-2.54b5+V-CVS (I know... I know... BETA6...) Fyodor (Oct 08)
- RE: nmap-2.54b5+V-CVS (I know... I know... BETA6...) Jay Freeman (saurik) (Oct 08)
 
 
 - Re: nmap-2.54b5+V-CVS (I know... I know... BETA6...) Fyodor (Oct 08)
 
