title: Reverse engineering a statistics data file from my insulin pump controller
body: <p>This may or may not be a grey area subject, though my intentions are certainly not, so my intention is not to stir up an ethical debate on the topic of reverse engineering.  </p>
  
  <p>I'm a type 1 diabetic currently undergoing pump therapy.  I'm an <a href="http://myomnipod.com" rel="nofollow noreferrer">OmniPod</a> user, it's a disposable pod that adheres to my body and dispenses insulin for 3 days.  It's controlled by a personal diabetes manager [PDM] (seen below) which controls how much insulin to dispense during meals, bloor sugar readings, and it contains a food index for carb counting on the go.</p>
  
  <p><a href="https://i.stack.imgur.com/ZSXa1.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZSXa1.jpg" alt="alt text"></a><br>
  <sub>(source: <a href="http://www.myomnipod.com/images/pdm-200.jpg" rel="nofollow noreferrer">myomnipod.com</a>)</sub>  </p>
  
  <p>The new PDM has a USB port for the downloading of data.  The software is free for Windows users (a package called CoPilot), but there is no Mac support.</p>
  
  <p>Upon plugging the PDM into my Mac, it mounted like any other USB device would and presented me with a readable volume with a single file on it with an IBF extension.  It weighs in at 16KB.</p>
  
  <p>My first instinct was to pass it through a text editor and was presented with a very binary looking file.  I then passed it through strings (see below) and opened it up with a hex editor.  Though I couldn't gain much information aside from the strings below; no compression format details or anything. </p>
  
  <pre><code>$ strings omnipoddata.ibf 
  Insulet
  OmniPod
  basal 1
  Post-meal
  e-meal
  Pre-meal
  e-bedtime
  Pre-bedtime
  .(@P
  .(@P
  .(@P
  </code></pre>
  
  <p>What should be my next step in this process?  I'm a dynamic language guy, so any resources for Ruby would be great, or Python.  Are there any test driven reverse engineering processes?</p>
  
  <p>As far as the data I'm looking to obtain, it's information I would like to chart to gain more information on my progress (insulin intake, blood sugar readings, timestamps); all of which is possible in the Windows software package.</p>