Thursday, 15 November 2018

Development bi-week: GTK+3 migration, and other small big changes.

Welcome to the first (hopefully of many) updates on Inguma development.  I've been heads-down getting again a bit more familiar with the codebase and trying to get a grasp on some of the concepts that I would like to have in an open-source intelligence tool.  So far I'd say that it's been a frustrating and also a rewarding experience because I have been able to achieve big things.

As a side note, I'l say that in the past I never understood very well the Inguma codebase, given its organic growth nature from the console version, and I also was not familiar with many of the security tools that it was trying to emulate or replace.  It's very interesting how 6 years of working in demanding computer security roles may change your perspective.

Main highlights

  • I can't believe that the migration to GTK+3 is (mostly) complete.  I have been patching many files manually after running a script to do the bulk of the conversion, but as I get deeper in the code more minor issues will keep arising.
  • The code is still Python 2.x only but I'm taking small steps to convert things to an intermediate state where the amount of print's and other things like that get reduced and the code uses more abstractions.
  • External dependencies: I updated and IPy, and I removed our local copy of Scapy from the tree.  I'm determined to remove as much old cruft as I can from the local tree, some of it dating more that  9 or 10 years back.
  • Everything from menus to buttons seems horribly broken but I'm trying to fix things as fast as I can.
  • I added a new data type called IPv6.  It's a first step to understand how difficult is to make a datatype-agnostic KB and interface.
The summary is that Inguma is in a terrible state of flux right now.  The code assumes, for example, that you are going to run several if not all "gather" and "discover" modules for every IPv4 or domain that you enter, instead of letting the user trigger it manually.

I added a small Trello board with some ideas, so feel free to add issues to Github if you have a particular feature of problem that you want us to tackle first.

Thank you for reading!