I'm not convinced it's a good idea. We know that with our amount of sampling CEM yields a good margin for the right byte. If the latency difference is almost indistinguishable - something is wrong. Either cracker hw is not perfect, or CAN-bus is not operational, or pin shuffle order is not right, or CEM code has some special peculiarity that hardens it against timing attack.RickHaleParker wrote: ↑11 Jan 2022, 06:51 I think it is a fine idea. I am just suggesting a possible way to automate it. Can you figure out a way to store the top three candidates for each of the three bytes and call them as needed?
Brute-forcing 3 bytes takes 100*100*100/1600=1666 seconds, ~1/2 hour. By adding 3*3*3 top candidates you just have to wait up to 12.5 hours. That still would be acceptable in some cases, I get it, but in most cases something is not right with something, so waiting 12 hours is wasting 12 hours. I've had 2 or 3 CEM dumps flashed into my CEM, previously reported as uncrackable. The cracker was able to crack them. After all, my bench CEM is itself among those "difficult" ones, with the stubborn third byte.
It would be quicker to run the cracker 3-5 times on the first two bytes. Don't wait for the rest, just start over. If you see them detected correctly most of the times, with a good margin over the next candidate - let the user enter these two values and brute force the rest 4. It would take up to 100*100*100*100/1600= ~17-18 hours, usually much less, but the correct result will be granted.
The current algo does something similar: instead of judging the best candidate in just one pass, it does a few iterations, shrinking the candidates list in half and increasing sampling time on every pass. In theory, the right candidate will float up to the top. When it's not - something is, again, not right. When folks post their logs here for such cases and then confirm their pin, I don't remember seeing the right values in top-3 or so.






