ちょっとしたセキュリティプロジェクトでは、48ビット(8オクテット)をタイムスタンプに変換しようとしています。私はDNP3プロトコルからのいくつかのネットワークパケットを扱っています。私はforeach DNP3クラスオブジェクトのタイムスタンプ値をデコードしようとしています。DNP3時刻からタイムスタンプまで48ビット(6オクテット)をPythonのタイムスタンプに変換する
DNP3標準によると、「DNP3時間(UINT48形式):1970年1月1日開始からのミリ秒数で表される絶対時間値」。
私は日時に変換する必要があり、次のオクテットがあります
# 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]
だから私は、次の手順を見つけ出す必要があります。誰もがこれらの手順で私を助けることができる場合
# 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)
を非常に感謝しています!
あなたは伝説です!詳細な説明をありがとうございます!タイムスタンプはオーストラリアのブリスベン(UTC + 10)です。私は、機器のクロックに間違った設定があるかもしれないと思う。ここに示すのは、ブリスベンのタイムゾーンからUTC 0への変換で、時間は以前に提供された時間[World Clock converter](http://www.timeanddate.com/worldclock/converted.html?iso=20160219T1420&p1=0&p2= 47)。乾杯! – nicRodz
@nicRodzそれは素晴らしいです。私は、エポックの日時に対して正しい結果を得ることができたという事実からいくらか相殺されなければならないことはほとんど確信していました。 – Reti43