August to October-2024

Reverse engineering on prepaid meters

The energy company for which this work was done had a deadline to either update its software or purchase new meters due to an issue with the STS protocol. This protocol, used by over 70% of prepaid meters worldwide, faced a built-in obsolescence issue set for November 24, 2024. The problem stemmed from a token timestamp limitation, which would cause meters to reject new tokens and stop functioning.

The conventional solution required purchasing an updated new hardware to reset the meters. However, the energy company for which this work was done had 1,100 meters from 2012-2013 that were incompatible with the upgrade, requiring a costly replacement exceeding $100,000.

As lead engineer, I reverse-engineered the vendor’s system—built in PHP 6, Perl (for PRISM serial communication), and JavaScript—to bypass the expiration. My approach included:

  • Kernel-Level Modifications to override system restrictions.

  • Bash Scripting to manipulate date handling.

  • REST API Development to inject real-time timestamps into the system.

  • Database Enhancements in MySQL to track energy sales and transactions.

Outcome

On November 24, 2024, the solution worked seamlessly, preventing disruptions and saving $100,000+ in 💵 hardware costs for energy company for which this work was done. This project demonstrated the power of reverse engineering and strategic system modifications to extend the lifespan of critical infrastructure.

Many companies were racing 🏃‍♂️ to find a solution to this problem, including several in Africa, where these meters are most commonly used. However, the few that joined the race were unable to succeed. In our case, we did succeed. Not only did we win the race, but we also put Honduran programmers </> on the map 🌎

Reverse engineering for prepaid meters

Performed reverse engineering on prepaid meters set to expire globally on November 24, 2024. Modified the code and server of the vendor system to manipulate the PRISM device responsible for generating the tokens used to update the meters

10/20/20242 min read