title: Convert 48-bits (6 octets) from DNP3 time to timestamp in python
body: <p>I'm trying to convert 48-bits (8 octets) to a timestamp using python for a little security project. I'm working with some network packets from the DNP3 protocol and I'm trying to decode timestamp values foreach DNP3 class object. </p>
  
  <p>According to the DNP3 standard, "DNP3 time (in the form of an UINT48): Absolute time value expressed as the number of milliseconds since the start of January 1, 1970". </p>
  
  <p>I have the following octets which need to be converted into a datetime:</p>
  
  <pre><code># List of DNP3 timestamps
  DNP3_ts = []
  
  # Feb 20, 2016 00:27:07.628000000 UTC
  DNP3_ts.append('\xec\x58\xed\xf9\x52\x01')
  
  # Feb 20, 2016 00:34:08.107000000 UTC
  DNP3_ts.append('\x6b\xc3\xf3\xf9\x52\x01')
  
  # Feb 20, 2016 00:42:40.460000000 UTC
  DNP3_ts.append('\xcc\x94\xfb\xf9\x52\x01')
  
  # Feb 20, 2016 00:56:47.642000000 UTC
  DNP3_ts.append('\x1a\x82\x08\xfa\x52\x01')
  
  # Feb 20, 2016 00:56:48.295000000 UTC
  DNP3_ts.append('\xa7\x84\x08\xfa\x52\x01')
  
  # Feb 20, 2016 00:58:21.036000000 UTC
  DNP3_ts.append('\xec\xee\x09\xfa\x52\x01')
  
  # Feb 20, 2016 01:17:09.147000000 UTC
  DNP3_ts.append('\x9b\x25\x1b\xfa\x52\x01')
  
  # Feb 20, 2016 01:49:05.895000000 UTC
  DNP3_ts.append('\xe7\x64\x38\xfa\x52\x01')
  
  # Feb 20, 2016 01:58:30.648000000 UTC
  DNP3_ts.append('\xf8\x02\x41\xfa\x52\x01')
  
  for ts in DNP3_ts:
      print [ts]
  </code></pre>
  
  <p>So I need figure out the following steps:</p>
  
  <pre><code># 1. Converting the octets into a 48bit Integer (which can't be done in python)
  
  # 2. Using datetime to calculate time from 01/01/1970
  
  # 3. Convert current time to 48bits (6 octets)
  </code></pre>
  
  <p>If anyone can help me out with these steps it would be very much appreciated! </p>