Cloning Navionics charts
I was trying to get charts working on a very basic plotter (Lowrance Elite 4 HDI), but was unhappy with the crappy low-quality raster chart I purchased online. I found a German site with free working autogenerated charts based on OSM data, however these were not suitable for navigation.
There is a torrent file floating around containing a collection of worldwide C-MAP CM93v2 (S63) charts, compatible with OpenCPN. Unfortunately, C-MAP updated the encryption/DRM around 2012, with a new format called CM93v3. Not the end of the world, as LINZ provides free raster charts for all of NZ. They also provide free vector charts as individual layers, but no-one has publicly compiled them into a usable chart file. Unfortunately, I had no luck getting any of these working on the plotter.
Eventually, I managed to procure a 2gb Navionics SD from a friend. These worked in my plotter, but were not recognized when copied to a microSD. A little research revealed that SD cards come with several hardcoded values, including a CID (unique serial number).
Samsung EVO plus cards happen to share the same hardware as their eMMC chips (embeddable flash memory for phones etc). As a result, they implement a feature in violation of the SD spec, which allows the CID to be written more than once.
Beating the DRM on a Navionics card happened to be as easy as copying the files and cloning the CID. The only caveat is that you must use a SD reader that reports the true CID; USB-based readers return their own CID, and not that of the card. I installed busybox on my android phone and cloned the following repo. It took a couple of tries to actually write the correct value, but the card now works on every navionics-supporting plotter I've tried.
This would undoubtedly work on every other type of SD-card-based DRM. In theory it'd be possible to push firmware updates to every chartplotter in existence blacklisting certain CSDs (serial numbers similar to CIDs, but instead reporting the brand/capacity of a card). However, spoofing CSDs is as easy as spoofing CIDs.