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)