Pliki konfiguracyjne komunikatora Tlen.pl

tech • 397 słów • 2 minuty czytania

Ta notatka jest częścią serii Tlen.pl bez tajemnic. Zapoznaj się z pozostałymi wpisami.

Nowa publikacja z cyklu “Tlen.pl bez tajemnic”, na temat plików konfiguracyjnych komunikatora Tlen.pl oraz metody ich szyfrowania.

Komunikator tlen.pl, zależnie od ustawień, może przechowywać pliki konfiguracyjne wraz z danymi profili w katalogu instalacyjnym programu, domowym katalogu danych (C:\Documents and Settings\username\Dane aplikacji\Tlen.pl) lub dowolnym innym miejscu, wybranym przez użytkownika podczas instalacji.

Dwa ważniejsze pliki znajdujące się w katalogu z konfiguracją:

  • `options.dat` - podstawowe, globalne ustawienia komunikatora
  • `profiles.dat` - profile obsługiwane przez komunikator (wraz z hasłami)

Pozostałe pliki konfiguracyjne maja zasięg lokalny, ograniczony dla danego profilu i znajdują się w katalogu tegoż profilu:

  • `options.dat` - wszelkie ustawienia naszego profilu
  • `contactsdata.dat` - dodatkowe informacje jakie przypisaliśmy poszczególnym kontaktom
  • `roster.dat` - roster z kontaktami tlenowymi w wersji offline
  • `gg.dat` - roster z kontaktami GG
  • `smsbook.dat` - książka telefoniczna
  • `outbox.dat` - lista smsów do wysłania - SMS Outbox
  • `last` - lista ostatnich wysyłanych obrazków (nie szyfrowane)
  • `Avatars/avatars.dat` - informacje o avatarch (nie szyfrowane)
  • `PublicAvatars/avatars.dat` - j/w

Wszystkie pliki, jeśli nie zaznaczono inaczej, są zaszyfrowanymi plikami XML lub pseudoXML, bo do prawdziwego, zgodnego z standardem i specyfikacją XML-a momentami troszkę im brakuje. Kodowanie ANSI, bo jakby inaczej do XML-a bez prologu w o2 :P

Metoda szyfrowania opiera się na prostym przekształcaniu za pomocą funkcji XOR każdego znaku danych.

Wartość wektora przesunięcia bitowego dla każdego kolejnego znaku jest inna i przyjmuje wartość:

v = (133 * v + 231) % 256

Początkowa wartość wektora równa jest:

v = size % 256

gdzie size określa rozmiar danych do de/kodowania.

Żeby było jeszcze ciekawiej, przed jakimikolwiek operacjami de/kodowania wartość początkowa podana jest odpowiedniej ilości przekształceń za pomocą prostej operacji matematycznej:

v = (133 * v + 231) % 256

Ilość iteracji tych przekształceń zapisana jest w zaszyfrowanym pliku w 2 pierwszych bajtach jako liczba typu short bez znaku.

Implementacja funkcji do de/kodowania w języku C:

void code(unsigned char* buf, int size, unsigned short iterate) {
	int i;
	int v = size % 256;

	for (i = 0; i < iterate; i++) {
		v = (133 * v + 231) % 256;
	}

	for (i = 0; i < size; i++) {
		v = (133 * v + 231) % 256;
		buf[i] = buf[i] ^ v;
	}
}

Dla tych, którzy szybko chcieliby przeprowadzić operacje de/kodowania pliku powstał programik (skrypt) w perlu - o2cfg.pl. Sposób użycia znajdziecie po wydaniu polecenia o2cfg.pl --help.

Przykładowy programik w C i Pascalu można znaleźć w tym temacie na forum ekipy tlenowej.

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/