AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Skype Timestamp format
Thema durchsuchen
Ansicht
Themen-Optionen

Skype Timestamp format

Ein Thema von semo · begonnen am 22. Apr 2009 · letzter Beitrag vom 27. Apr 2009
Antwort Antwort
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#1

Skype Timestamp format

  Alt 22. Apr 2009, 20:42
Dies ist der Auszug aus einer chatmsg256.dbb. Gelistet ist hier genau ein Record der Länge 264 Bytes.

6C 33 33 6C 93 00 00 00 16 00 00 00 41 0C 00 09 09 03 E0 03 23 6D 61 72 63 75 73 68 61 73 73 6D 61 6E 6E 2F 24 61 7A 61 6C 69 73 38 33 3B 62 62 30 33 62 38 66 35 39 64 65 39 36 63 39 34 00 00 E5 03 BD A8 88 CF 04 03 E8 03 6D 61 72 63 75 73 68 61 73 73 6D 61 6E 6E 00 03 EC 03 6D 61 72 63 75 73 68 61 73 73 6D 61 6E 6E 00 00 81 04 02 00 0B A3 EB AA E5 04 00 07 D7 B2 AB 48 03 FC 03 6A 75 68 75 00 00 F1 03 03 00 03 A3 EB AA E5 04 03 D8 18 61 7A 61 6C 69 73 38 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Der Timestamp steht an Offset 66 (davor stehen die drei bytes 00 E5 03)
Es handelt sich hier also um die Werte BD A8 88 CF 04.
Laut dieser URL (Seite 4 oben) besteht der Timestamp aus 5 Bytes?! Nach der Anleitung komme ich aber nicht auf den hier angeblich hinterlegten TDateTime Wert von "12.04.2009 18:18:05".

Hat jemand eine Idee?
Meines Wissens ist Skype ja auch mit Delphi geschrieben. Warum sollten die Entwickler vom Standard TDateTime Wert Handling abweichen?
Ich frage mich also ob die Angaben in dem genannten PDF stimmen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Skype Timestamp format

  Alt 22. Apr 2009, 21:11
Da steht doch:
Zitat:
Time stamp
The timestamps in records are stored in the standard UNlX format of seconds since 1/1/1970
00:00:00. However the data isn't represented as the standard 4 byte unsigned integer as is
usually the case, instead using 5 bytes to represent the timestamp with the format below
(where 'd' indicates a bit of data):

0000dddd 1ddddddd 1ddddddd 1ddddddd 1ddddddd

Stripping the leading 0's from this and removing the '1' at the most significant bit or each byte
yields 32 bits of information. If these are concatenated into 4 bytes, the number can be
handled using standard time functions. It is unknown why this format has been chosen.
Du musst also die Bits entsprechend zusammenfrickeln und darauf auchten, dass es keine Delphi-Zeit ist, sondern Unix-Timestamp.

Evtl. sind die Bytes auch umgedrecht - weil das hinterste rote Byte vorne ein 0-Nibble hat isses wahrscheinlich das erste Bytes des Zeitstempels

Warum die Entwickler davon abweichen kann viele Gründe haben. Einer ist vielleicht, dass es andere nicht so einfach haben, die Daten auszulesen

Probiers mal so in etwa: (Daten aus deiner Datei genommen)

Wert: Cardinal = 0;
Wert := Wert or BD;
Wert := Wert or A8 shl 7;
Wert := Wert or 88 shl 14;
Wert := Wert or CF shl 21;
Wert := Wert or 04 shl 28;
Zeit : TDatetime = UnixToDatetime(Wert);
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Skype Timestamp format

  Alt 23. Apr 2009, 10:19
Das Format sieht nach folgender "Idee" aus:
7 Bits Daten
1 Bit (MSB) Flag (1 = ein weiteres Byte einlesen)

So lassen sich kleine Integer-Werte platzsparend speichern (0..127 = 1 Byte).

Beispiel zum Lesen eines 32-Bit Integers (mit Datenzeiger und (restlicher) Datengröße als Parameter):
Delphi-Quellcode:
function ReadLong(var AData: Pointer; var ASize: Cardinal): LongWord;
var
  Index: Integer;
  Value: Byte;
begin
  Result := 0;
  Index := 0;
  repeat
    if ASize = 0 then
      raise EReadError.CreateRes(PResStringRec(@SReadError));
    Value := PByte(AData)^;
    if (Value and $7F) <> 0 then
    begin
      if (Index >= 32) or ((Index >= 28) and ((Value and $70) <> 0)) then
        raise EIntOverflow.CreateRes(PResStringRec(@SIntOverflow));
      Inc(Result, (Value and $7F) shl Index);
    end;
    Inc(Index, 7);
    Inc(PByte(AData));
    Dec(ASize);
  until Value and $80 = 0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Skype Timestamp format

  Alt 23. Apr 2009, 10:27
Zitat von nicodex:
Das Format sieht nach folgender "Idee" aus:
Ist keine "Idee", ist ein gebräuchlicher Standard: ASN.1
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Skype Timestamp format

  Alt 23. Apr 2009, 11:03
Zitat von M. Hassmann:
Nach der Anleitung komme ich aber nicht auf den hier angeblich hinterlegten TDateTime Wert von "12.04.2009 18:18:05".
Das ist die lokale Zeit, gespeichert wurde "12.04.2009 16:18:05".
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Skype Timestamp format

  Alt 23. Apr 2009, 19:03
danke erst einmal für die hinweise.
ich hoffe ich komme am wochenende mal dazu mir das genauer anzusehen.

grüße an dich nico(dex) - lang nix mehr voneinander gehört
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Skype Timestamp format

  Alt 25. Apr 2009, 15:33
okay, ich habe den richtigen wert auslesen können.
vielen dank an alle.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Skype Timestamp format

  Alt 27. Apr 2009, 10:05
Zitat von M. Hassmann:
lang nix mehr voneinander gehört
Wie immer, viel zu tun
Zitat von M. Hassmann:
ich habe den richtigen wert auslesen können.
Na dann viel Erfolg mit den Skype-Logs.
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Skype Timestamp format

  Alt 27. Apr 2009, 10:14
ChatMsg***.dbb Dateien habe ich damit erledigt, am Wochenende auch die Transfer***.dbb Dateien.
Es läuft also
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz