v0.7.0, 28/02/2016 -- A few bugfixes
                    - fixe of endless loop in Nmap.Process. Fix provided by @rcarrillo, many thanks!
v0.6.3, 18/08/2015 -- Merged pull requests for automatic pypi upload, thanks @bmx0r
v0.6.2, 03/01/2015 -- Fixed a few bugs
                    - bulk fix for issues 37, 41, 42, 43, 44, 46
                    - added cpe_list method
                    - added elasticsearch example code
v0.6.1, 29/06/2014 -- Added full support for python 3.X
                    - python now supports python 2.6, 2.7, 3.3, 3.4
v0.5.1, 26/05/2014 -- Added basic API for class CPE
                    - interface similar to python-cpe for more
                      advanced usage of CPE, I strongly recommend you
                      to use python-cpe. Nice code, good doc.
v0.5.0, 17/05/2014 -- Rewrite of NmapProcess
                    - removed Threads to read stdout/stderr
                    - replaced by Process
                    - use of semaphore to not consume CPU while looping
                    - added NmapTask class
                    - added NmapProcess.current_task
                    - added NmapProcess.tasks list
                    - fixed bug in NmapProcess.state
                    - note NmapProcess.is_alive() is not recommended
v0.4.9, 14/05/2014 -- Fix for issue 28 and added code samples
v0.4.8, 05/05/2014 -- Changes in OS fingerprint data API
                    - NmapHost now holds its OS fingerprint data in NmapHost.os
                      (NmapOSFingerpring object)
                    - fingerprint is now a property which means you have to call
                      it without () NmapHost.os.fingerprint and should be called
                      directly from NmapHost.os
                    - NmapHost.os.fingerprints return an array of os
                      fingerprints (strings)
                    - NmapHost.os.fingerprint return a concatenated string of
                      all fingerprints
                    - Fingerprints data are now accessible via
                      NmapHost.os.osmatches which returns a list of NmapOSMatch
                      objects
                    - NmapOSMatch objects might contain a list of NmapOSClass
                      objects matching with it
                    - NmapOSClass objects might contain a list of CPE object
                      related to the os class (CPE class will be improved and
                      API enriched)
                    - TODO: finalize API doc and create all related unit tests
v0.4.7, 03/05/2014 -- minor fix for issue25
                    - fixed exception when optional service tag is not present
                      in <port> tag
                    - added support for <owner> if present in <port>:
                      accessible via NmapService.owner
v0.4.6, 06/04/2014 -- minor fix
                    - corrected missing incomplete parameter on parse_fromfile
                      and parse_fromstring
                    - added support to run scan in background with sudo support
                      added NmapProcess.sudo_run_background()
                    - fixed issue with run() blocking when an error triggered
                      during the scan
v0.4.5, 06/04/2014 -- minor fixes and botox injections
                    - Added "incomplete" argument in NmapReport.parse()
                      in order to enable parsing of incomplete or interrupted
                      nmap scans. Could be useful to use with a background
                      scan to parse incomplete data blocks from callback
                      function (thanks @Sibwara for the idea).
                    - Fixed bug when NmapReport.summary is empty
                    - added NmapReport.endtimestr
                    - remplaced ElementTree by cElementTree (performance)
v0.4.4, 04/04/2014 -- Bugs and features requests
                    - added support for tunnel attribute from <service> tag
                    - added support for servicefp (service fingerprint) in
                      attributes from <port><service> tag
                    - added support for reasons attributes from <port> tag
                    - added support for extraports/extrareasons tags
                    - corrected bug in serialization: missing extra data
                      (pull request from DougRoyal)
v0.4.3, 14/03/2014 -- Lots of bug corrections - Warning small changes in API:
                      - fix issue#14: better scripts parsing
                      - API change for NmapService.scripts_results:
                          NmapService.scripts_results is now a property
                          NmapService.scripts_results return an array of scripts results
                  
                      - fix issue#9 address field not correcly parsed:
                        MAC Address would erase an ipv4 address type.
                      - added new properties in hosts object API:
                          NmapHost.ipv4, NmapHost.ipv6, NmapHost.mac
                      - NmapHost.address property returns the IPv4 or IPv6 or MAC
                        in that preference order. Use specific calls for determinists
                        results
                      - fix API issue#10: os_ports_used
v0.4.2, 26/12/2013 -- Bug corrected: issue 8
                      There is no guarantee that "finished" or "runstats" will be
                      received by event parser of process.py.
                      Summary functions are now flagged as deprecated. To use data
                      from scan summary of numbers of hosts up, the user of the
                      lib will have to use NmapParser.parse() and the appropriate
                      accessors.
v0.4.1, 26/12/2013 -- Bug corrected: issue6
                      Infinite loop while launching several nmap scans in background
v0.4.0, 28/10/2013 -- Bug corrected in missing data from nmap scan output
                      Added stop() to terminate nmap scan running in background
v0.3.1, 17/06/2013 -- Refactory of objects to isolate each nmap object in a
                      separate file
v0.3.0, 17/06/2013 -- Added fingerprint class
                    - added NmapOSFingerprint class to provide better API to
                      fingerprint data
                    - added unit tests for basic NmapHost API check
                    - added unit test for basic NmapOSFingerprint class
v0.2.9, 17/06/2013 -- Add S3 plugin, allow to store nmapreport object to aws
                    - S3. and compatible (via boto)
v0.2.8, 11/06/2013 -- Prepare packaging for pypi
v0.2.1, 17/05/2013 -- Code Docstring and added support for additional data
                    - added support for scripts in NmapService
                    - added support for hosts extra data in NmapHost (uptime, distance,...)
                    - added support for OS fingerprint data in NmapHost
                    - added python docstrings for all modules
                    - added sphinx documentation
                    - reviewed API for libnmap objects
                    - fixed errors with hash() in diff
                    - fixed errors/exceptions in NmapParser
v0.2.0, 18/04/2013 -- Added Serialization and Plugin support
                    - added serialization encoders and decoders for NmapReport
                    - added basic plugin capability to NmapReport
                    - added basic mongodb plugin to validate plugin setup
v0.1.5, 08/04/2013 -- Refactory of NmapDiff system
                    - rework of NmapHost and NmapService API
                    - added __hash__, id and get_dict() for common Nmap
                      Objects
                    - added NmapDiff class
                    - full rework of unittests
                    - NmapParser now supports parsing from file
                    - NmapParser is able to handle nmap XML portions
                    - added import in reports
v0.1.4, 05/04/2013 -- Bug Fixes and improvements
                    - unittest for diff on NmapHost
                    - unittest for diff on NmapService
                    - fixed: __eq__ in NmapService: protocol not honoured
                    - fixed: sudo_run hardened and added exception handling
v0.1.3, 04/04/2013 -- Full refactory of NmapParser with static method
                    - added support for diffing NmapHost and NmapService
                    - corrected en hardened code for NmapParser
                    - added NmapParserException class
                    - added NmapReport class
                    - added unittest for report api
                    - added unittest for parser
v0.1.2, 13/03/2013 -- Bug Fixes and improvement after refactory
                    - added scaninfo parsing
                    - corrected unused variables and wrong unittests
                    - parse() method reviewed to call "independent" XML bloc
                      parsers
v0.1.1, 12/03/2013 -- Complete refactory of code to isolate NMAP objects.
v0.1.0, 11/03/2013 -- First developement release packaged for Project Ninaval
