I am trying to run the chip whisperer on an external target chip (not one that is part of the chip whisperer package). I had two questions:
Is there a possibility to start capturing a trace using an external trigger? say my chip has some signal that i want to listen for and once it goes up to trigger a trace capture? i have the ChipWhisperer lite- ARM? if so how would i do that?
I want to use the Jupyter interface to capture on my external chip but i noticed that most of the functions there need a target as an input (ex. capture_trace receives the target as input ), could i use this function to capture an external chip or do i need to create a whole new function based on your one?
1- ChipWhisperer hardware starts to capture when it sees the IO4 pin go high. So just route your target’s capture signal to IO4 on the 20-pin connector.
2- Have a look at the definition of capture_trace() in software/chipwhisperer/__init__.py. You’ll see that target is used for 3 things:
send the key and plaintext to the target (using the SimpleSerial protocol);
wait for the target to indicate that it’s done (although for our simpleserial targets, is_done() always returns true, so this code is there just to show you that you could implement a mechanism to wait for a done signal; you can see for example what the CW305 target does there, look at CW305.py)
read the result (e.g. output of encryption) from the target.
If your target doesn’t communicate with the same protocol, then you’ll have to provide your own version of capture_trace().
If things are still murky, then I recommend that you go through some of the tutorials and try to understand exactly what’s happening “under the hood” in terms of communication between host, CW capture hardware, and target; hopefully that’ll make the path clear for any modifications you may need to make for your custom target.