newaetech / chipwhisperer

ChipWhisperer - the complete open-source toolchain for side-channel power analysis and glitching attacks
http://chipwhisperer.com
Other
1.12k stars 284 forks source link

Enhancements by DJShepherd #434

Open DJShepherd opened 1 year ago

DJShepherd commented 1 year ago

Hey everyone! First time contributor but long time fan of the project! I have been developing a handful of features on my own fork that suit my own personal workflow and general enhancements that I wanted to make. Thought I'd reach out and ask if it was worth it or not to create branches and PR's to contribute to the main project.

Feel free to decline my work, just thought I'd say hi and thanks to everyone's hard work and to extend my own assistance! :)

My branch for reference: DJShepherd/chipwhisperer/DJShepherd/develop

~DJ Shepherd

colinoflynn commented 1 year ago

Wow, awesome thanks! As there is a pretty large number of changes will review here too to see if any conflicts with anything else we had ongoing. One quick high-level question: we've been slowly moving some of ChipWhisperer to Apache2 license, would you have any problem with that (currently a lot is under GPL, but some is MIT & some is Apache2)? We haven't fully done that yet & some stuff may stay GPL for other reasons, but wanted to check with you as well since this would be one of the larger external commits it looks like with many files touched. In particular the demo firmware (victims/firmware/etc) would become Apache2 & most of the Python interface for example.

DJShepherd commented 1 year ago

@colinoflynn thank you! As I mentioned, I can break down my develop branch into specific features so you don't have to absorb such a big change at once (unless desired, haha). As far as licensing goes, I don't mind. Whatever I can provide for the greater project belongs to the project, as far as I'm concerned. :)

alex-dewar commented 1 year ago

Took a quick look over and it looks great! Some parts definitely look a lot cleaner than before. Only thing I'd like to see changed is moving the constants into the class they're used for. IMO it get a bit annoying having to swap back and forth between files when working on something, and it might be nice as an end user to have an easy way to print the constants out, something like scope.io.consts or similar.

DJShepherd commented 1 year ago

@alex-dewar Thank you! Yeah I understand the const stuff, definitely a change I can work on and implement into my stuff.

DJShepherd commented 1 year ago

Sorry for the delay with getting this implemented. I've been doing new chip bring-up these last few months at work sooo RIP my free time haha.

I am beginning to jump back onto the project and I think I'm going to break up all these enhancements into separate PR's/features. I'm gunna start with some of the IO optimizations and the glitch demo optimization suppression. I'll slowly work on getting the others opened into a PR.

IO Optimizations Glitch Demo Optimization Suppression

DJShepherd commented 1 year ago

Opened some PR's for the next pieces of my contribution. API changes with the CONSTS are a lot, to say the least... breaking that up into smaller chunks of their own respective setting, starting with VCC glitch HP/LP setting. On the side, I added the looper API (as a draft, for now).

Main hold up for good testing is that I think I burned my CWLITE mosfets. I have the HUSKY, but I have to find time to set that up. Hopefully soon!

VCC Glitch Mosfet Control Update GlitchController Updates and Looper Script

alex-dewar commented 1 year ago

Thanks for working on this! I'm going to be busy with traveling for the next week or so, but I'll take an in depth look once I get back.

DJShepherd commented 1 year ago

As mentioned in the VCC Glitcht PR, I have been working on the next enhancement as well. This is the GPIO API refactoring. I have the feature branch ready to go, but it's dependent on the VCC change merging in. When that gets the okay and gets pulled in, I'll create the PR.

An added benefit to this GPIO change is that it halves the serial/USB traffic related to pin management after simplifying reading and writing GPIO modes/states.

Compare: DJShepherd/fast_glitcht...DJShepherd/gpio_api_update

DJShepherd commented 1 year ago

When I have approval for the API design, I have a handful of branches ready to create a PR for. GPIO Refactor Ext Clock Refactor Target Power Refactor IO Trigger Refactor Glitch Output Refactor

I'll edit this list as I finish the features.