Und3rf10w / external_c2_framework

Python api for usage with cobalt strike's External C2 specification
224 stars 95 forks source link

Rewrite project based on lessons learned #26

Open Und3rf10w opened 6 years ago

Und3rf10w commented 6 years ago

As much as I hate to do this, at this point, I'm strongly leaning towards a total rewrite of this project based on lessons learned thus far. I believe I can architect a much more sane design that can easily support recovery of sessions, simple and understandable threading, record keeping, straightforward api implementation, and simplify the process to add new features.

Here is a diagram I created that outlines my vision for what a rewrite would look like: API logic redesign rev 0.1.png

Und3rf10w commented 6 years ago

See the above referenced issues for additional context and insight into challenges with the current implementation that this redesign aims to mitigate.

Und3rf10w commented 6 years ago

A rewrite should also attempt to better comply with PEP8. At a minimum, a rewrite should comply with the following objectives (taken mostly from PEP8):

If the rewrite successfully follows this standard, a CONTRIBUTING.md guide will be created and the above will used as a styleguide.

Und3rf10w commented 6 years ago

Opened new branch rewrite, will use that to track progress of rebuild.

ghost commented 6 years ago

Are you looking for any contributors to help? I'd be happy to help you get this ball rolling. @Und3rf10w

Und3rf10w commented 6 years ago

@realoriginal I promise I'm not ignoring this; honestly, I'm somewhat struggling with what I want the final result to look like and how to best approach it. At this time, I'm not quite yet ready to get started the actual implementation of the rewrite, but would sincerely appreciate any input on it. Once the actual vision gets solidified, I would LOVE to have contributors to that goal! I'm purposely trying to avoid writing code then revisiting it later in the rewrite, but have the obvious risk of feature creep. Classic example of second system effect :)

Short of input on the rewrite (for now), I would love any contributions to the dev branch that attempts to fix #13 (no clue how to best tackle this, but some ideas documented in the issue), and/or #14 (ideally a solution that doesn't rely on writing "state" files for each session or using a database, as I'm not particularly yet concerned about tracking sessions between server executions). Once these issues are resolved, that would bring the dev branch to a state where it is ready to be merged into master and released as the beta version. At that point, I'd like to either get started on the rewrite, or see some usability enhancements; such an easier to use builder, perhaps a simple console interface akin to GreatSCT or Veil.

ghost commented 6 years ago

No worries mate, I'll give it a look over, apologies for slow reply and ill pr a few things @Und3rf10w