So this November
Nikto 2.0 was released. Having used Nikto 1.0 in the past, I decided to give version 2.0 a try and I was very impressed. I was so impressed that I decided that I would contribute to the project.
In mid December, I had sometime to take another look at Nikto 2.0 and dive into some code. One thing that I thought was missing was the lack of XML support. Therefore, I wrote an email to Sullo (Nikto's author) and asked him if he had any plans to add XML support. He told me that if I wanted to add XML support he would apply the patch(es) to Nikto.
One of the main changes for 2.0 was adding HTML template files which separated the HTML formating from the data. I decided that this would be ideal for adding XML, because I would only need to pass the data to the template. So I did some research on building a
DTD and built a DTD that I would base the XML on. Once I completed the DTD, I used the HTML templates as a base for building the XML templates. I configured the XML templates to meet the DTD specification. I added the XML format to the nikto_core.plugin so that it would execute the appropriate subroutines.
Next, I added a few subroutine to write the XML in nikto_reports.plugin. I spoke with
Jon and he suggested that each item that Nikto finds should have a unique ID. The reason for this is that it would be easy to determine the changes between two scans if everything had a unique ID (think
PBNJ heh). I suggested this to Sullo and he added the IDs for everything in Nikto. Then I updated the DTD and XML templates to include the IDs.
Finally, the patches were done and with that,
Nikto 2.02 was released.
I am very happy that I could contribute to Nikto. I look forward to using Nikto and the new XML output in the future.