Die Art der Speicherung von Cookies für SAFARI hat sich mit SAFARI 5.1 geändert und dass sie eine Art Integritätskontrollcode hinzufügen in den letzten 8 Bytes der Datei:
Die Datei ist% APPDATA% \ Apple Computer \ Safari \ Cookies \ Cookies.binarycookies
Weiß jemand, was den letzten 8 Bytes entspricht?
CRC32 prüfen?
Bitte helfen Sie
Cookie.binarycookies:
Ich denke, das wird hilfreich sein. Ich habe die Datei mit einem Hex-Editor umgekehrt und beginne, die Cookies zu ändern.
Die Datei besteht aus mehreren Seiten, die jeweils ein oder mehrere Cookies enthalten können. Jede Seite hat eine Kopfzeile, die variabel ist, 0x10, 0x14 und 0x1c sind gemeinsame Werte, die wir sehen können.
Die Datei beginnt mit einem 4-Byte-Header, der nicht von Interesse ist.
Die nächsten 4 Bytes sind wirklich interessant, weil sie die Anzahl der Seiten in der Datei angeben.
Dann haben wir die Länge jeder Seite, auch dargestellt durch eine 4-Byte-Nummer. Es ist wichtig zu wissen, dass all diese Zahlen in Big-Endian geschrieben sind. Also, wir haben 4 * Anzahl der Seiten von Bytes und dann die Seiten.
Wir haben 8 Bytes am Ende, die auch nicht von Interesse sind.
Jede Seite hat eine Kopfzeile, deren Länge sich von einer Seite zur anderen ändern kann. Um die Länge des Headers zu kennen, müssen wir die ersten fünf Bytes verwerfen, und die nächsten 4 Bytes geben die Länge des Headers an.
Nach dem Header wird die Länge des Cookies durch 4 Bytes repräsentiert, geordnet in Little-Endian! Diese Länge enthält auch die 4 Bytes, die zum Darstellen der Länge benötigt werden.
Wenn dieser Cookie endet, wird ein anderer gestartet und so weiter bis zum Ende der Seite.
Das Datum jedes Cookies beginnt bei 0x2B. Das Datum besteht aus 4 Bytes, die in Little-Endian geordnet sind. Das Datum wird in Sekunden, aber nicht seit der Epoche dargestellt, also müssen wir diese Zahl subtrahieren: 1706047360. (Es funktioniert nur bis zu einem Tag im Jahr 2017)
Das nächste Interessenfeld beginnt bei 0x38. Diese Felder sind dynamische Felder, daher sind sie durch ein NULL-Byte "0x00" getrennt und haben folgende Reihenfolge: Name, Wert, URL, Pfad.
Die Länge des gesamten Cookies ist 0x82. Neben diesem Cookie wird ein weiterer in genau demselben Format gestartet, wenn er der Seitenlänge entspricht.
Das wird Ihre Frage nicht genau beantworten, aber hoffentlich kommt es zu dem, was Sie versuchen zu tun.
Sie können den Inhalt der Binär-Cookie-Datei unter ~/Library/Cookies/Cookies.binarycookies
mit der Klasse NSHTTPCookieStorage
lesen, wie im folgenden Code-Schnipsel gezeigt:
Ich habe einen Parser für Swift geschrieben, der das für dich tun kann. Ich brauchte das, weil NSHTTPCookieStorage.sharedHTTPCookieStorage()
Ihnen keinen Zugriff auf die globalen Cookies gibt, wenn Sie eine Sandbox erstellen.
Sie können es so verwenden
%Vor%Gegenwärtig gibt es ein paar Projekte, die dies auch in anderen Sprachen tun können:
Ich habe gerade eine Liste von URLs von:
$ strings Cookies.binarycookies | grep '^A\.' | uniq