Backing up the laptop again? There has to be a better way…

There should be… so here is a start on the better way https://github.com/aking1012/usb-hd-backup.  Anyway, the gist of it is: if I lazily copy all my junk on to the external disk that I always start sorting, but never finish…  When I copy all the junk again, it shouldn’t copy everything.  Only the stuff that isn’t on that disk yet.

I may add a gui or deduping at some point, but it serves the purpose for now.

The strings plugin

The strings plugin is working.  Thinking about putting all found strings in a tree-view instead of a list - sorted by section.  String and offset both in the window, so you could shortcut key - set EA.  Clicking the string shouldn’t jump to it.  It should let you have an option dialog where you could edit it, jump to it, cast it to a different string interpretation, etc.

Smaller step

Got import and export finding for ELF binaries is working this morning.  Still no tab population for any of it, since I’m doing all the nuts and bolts work in the elf_parser plugin at once.  Then doing all the UI updating at once.  All I have left is reloc and string table before I start hooking up the UI.  Then it’s on to the next.  Time for the day job.

Accomplishments for the day

Plug-in queue-ing is working.  Plug-in dependencies are working.  Selectors for [GUI, CLI, and BATCH] mode are half working (the flags and honoring them are there, but the switches on the launcher are not).

Next up, file loading.  This way, I can have real data in the widget blocks instead of test data.

Hopefully the plug-in api is mostly stable now.  Put the working “template” in documentation and made it importable.  This way you can subclass a basic template, override the options you want, or just have it actually load and call it manually from the interactive console.

Design decisions are often the hardest.

As it stands, the API looks like:
app.ui
*use app.ui.builer.get_object to add UI components*
app.core.datastore
app.core.plugin_manager
app.core.plugin_manager.plugins[‘plugin_filename_string’].method()
ODA.random_depname_here
ODA.documentation.random_template_classfile_here

Any recommendations?  Seems like a good design, but I’m open to recommendations.

Plans

So, someone brought up that I should dockerize this.  I think that’s a littleLOT premature.  I need to get a basic over-simplified use case working first.  Example:  I just had to restructure some code because I was running the GUI launcher directly with an if name main blob.  Now that I’m importing it and planning to be able to run it headless/batchable via ssh or whatever - I had to change the app namespace, to the app.ui namespace.  It’s more important that I get this right, than it is that something broken or not yet working is deploy-able.

So, on to the sketch.

  1. Get a basic use case for a completely non-obfuscated linux blob working
  2. Get enough plugins done to populate most of the tabs
  3. Get a video of it partially working up somewhere
  4. Get it working in a venv deployable by people who aren’t me
  5. Get it working in an LXC container with GUI sharing
  6. Get it working headless
  7. Dockerize headless

So, in short, 1 isn’t finished yet.  I will not divide my attention on 2 through 7 until 1 is done.  I’m a human.  I need goalposts, not god requests ;)

Thanks for being interested…