Pliki konfiguracyjne komunikatora Tlen.pl

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *