Skocz do zawartości


Zdjęcie

Struktura archiwum Gadu Gadu 8


  • Zaloguj się, aby dodać odpowiedź
21 odpowiedzi w tym temacie

#1 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2009.07.17, 17:36

Rozpracowałem archiwum nowego GG, jest to baza SQLite 3 w pliku Archive.db w katalogu %AppData%\Nowe Gadu-Gadu\{numer GG}\.

Mamy 3 tabele:
-> chats - lista rozmów
-> communication_items - treści wiadomości
-> interlocutors - użytkownicy, z którymy rozmawialiśmy)

chats
Struktura tabeli: chats.gif
chat_id - identyfikator rozmowy w bazie
interlocutor_id - identyfikator rozmówcy w tabeli interlocutors
is_initialized_by_user - czy rozmowa rozpoczęta przez "posiadacza archiwum" [1 = tak, 0 = nie]
start_date - data i godzina rozpoczęcia rozmowy np. 2000-01-01T00:00:00 (wszystkie w takim formacie)
first_communication_item_id - id pierwszej wiadomości należącej do tej rozmowy (z tabeli communication_items)

communication_items
Struktura tabeli: comitems.gif
communication_item_id - identyfikator wiadomości
chat_id - identyfikator rozmowy w tabeli chats
is_sent_by_user - czy wiadomość wysłana przez "posiadacza archiwum" [1 = tak, 0 = nie]
start_date - data wysłania wiadomości
content_type - typ wiadomości [0 = tekstowa (ewentualnie z obrazkiem), 1 = SMS, 2 = plik]*
content - wiadmość
plain_text_content - nie wiem, zawsze puste

interlocutors
Struktura tabeli: int.gif
interlocutor_id - identyfikator rozmówcy w bazie (nie mylić z numerem GG)
identification_type - rodzaj identyfikatora [0 = numer GG, 1 = tel.komórkowy]
identification - numer GG/komórki (w zależności od identification_type)

I jeszcze taki schemat:
rel.gif

*) treść zwykłej wiadomości tekstowej wygląda w bazie tak (przynajmniej u mnie):
<span style="color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; ">{treść wiadomości}</span>
Przejście do kolejnej linii jest zapisane za pomocą <br>
Obrazek: <img src="{pełna ścieżka}" alt="" /> lub <img style="max-width:100%" src="{pełna ścieżka}"> Obrazki zapisywane są w folderze ImgCache i są bez rozszerzenia. Niestety dla obrazków wysyłanych, jest to ścieżka pierwotna, czyli jak wysyłaliśmy plik z pulpitu i go usuniemy, to w archiwum też zniknie.
SMS:
<?xml version="1.0" encoding="UTF-8"?>
<communicationItemSMS>
	<smsStatus>{liczba - nie wiem co oznaczają}</smsStatus>
	<receiverName>{Numer GG}</receiverName>
	<senderName>{Nazwa profilu}</senderName>
	<smsContent>{Treść}</smsContent>
	<receiverPhoneNumber>{nr tel.}</receiverPhoneNumber>
	<smsGateResult></smsGateResult>
	<senderPhoneNumber></senderPhoneNumber>
	<smsGate>{bramka}</smsGate>
</communicationItemSMS>
Plik:
<?xml version="1.0" encoding="UTF-8"?>
<communicationItemFileTransfer>
	<fileTransferStatus>{liczba - nie wiem co oznaczają}</fileTransferStatus>
	<fileName>{pełna ścieżka}</fileName>
	<guid>{identyfikator, ale przy konwersji archiwum bez znaczenia}</guid>
	<fileSize>{wiadomo:)}</fileSize>
</communicationItemFileTransfer>

Jak jeszcze coś znajdę, to dopiszę tutaj.

:: Jeśli chcesz zobaczyć strukturę archiwum AQQ 2.x >>> kliknij tutaj <<<

#2 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2009.11.17, 23:05

Wielkie dzięki za przejrzysty opis struktury archive.db z pewnością wymagało to sporo pracy i wysiłku. Skoro już tak wiele osiągnąłeś może zdołał byś opanować jakoś metodę odzyskiwania ręcznie usuniętych wiadomości z archiwum ngg? (np. u mnie communication item id zaczyna się od 1 i leci tak do np. 65228 i potem od razu mi przeskakuje na 66548 [od początku leci wg kolejności].podziały wiadomości które powinny podpadać pod ten 1320 brakujących id.

Dla jasności mam 2 pliki archive.db

Pierwsze archiwum prowadzę od początku swojego gg i w pewnym momencie zrobiłem kopię która kończy się na 65228 wtedy korzystałem jeszcze przez moment z oryginalnego pliku archiwum i coś mnie naszło na ręczne skasowanie wszystkiego.

Obecnie moje archiwum jest liczone od 66548 aż do 74922(oczywiście nie mam w nim wiadomości poniżej 66548), wniosek z tego taki że po prostu chcę odzyskać te wiadomości które nastąpiły już po zrobieniu kopii zapasowej archiwum a przed rozpoczęciem prowadzenia na nowo archwiwizacji.

Różnica między nimi to 1320 których brakuje pomiędzy starą wersją archiwum a tą nową i ni jak nie wiem jak je odzyskać.
Dodam że plik archive.db ten archiwalny od obecnie prowadzonego różni się zaledwie o 0,2 MB (12,3 vs 12,5 MB) czyli że te wiadomości gdzieś tam muszą być ukryte tylko kwestia jak do nich dojść.

Mam nadzieję że jasno wytłumaczyłem o co mi chodzi. Wierzę w Twój talent i umiejętności co do zabawy w SQl xD
Pozdro !

#3 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2009.11.19, 01:28

Czy dobrze rozumiem, że skasowane wiadomości były w pliku, gdzie teraz masz wiadomości od 1 do 65228?

Niestety nie wiem, czy da się to odzyskać, nie wiem dokładnie jak działa SQLite, jedyne co mogę zrobić, to przetestować to na jakimś małym archiwum i porównać edytorem heksadecymalnym. Jak będę miał chwilę, to sprawdzę to.

#4 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2009.11.19, 08:17

Teraz mam 2 pliki z archiwum i dla mnie istotniejszy jest ten drugi gdzie historia wiadomości zaczyna się od momentu wyczyszczenia archiwum (czyli sprzed jakies 2 mies.) ale odziwo wiadomości numerycznie lecą od 66548 czyli tak jak by sam plik zapamiętał że te wczesniejsze skasowane wiadomości. No i kwestia też tego że rozmiar archive.db nie zmniejszył się przez ręczne usunięcie wiadomości a nawet się po 2 mies zwiększył rozmiarowo.
pozdro i dzieki ;)

PS
wiadomości od 1 do 65228 mam w kopii zapasowej archiwum którą zrobiłem przed wakacjami.

Użytkownik wiz88 edytował ten post 2009.11.19, 08:57


#5 Oconnel

Oconnel

    AQQ Developer

  • Właściciel
  • 4622 postów

Napisano 2009.11.19, 09:55

Dobre. To może jeszcze rozpracuj kodowanie hasła? Wówczas wprowadził bym to natychmiast do AQQ.
MyPortalYouTubeTwitter54slty.png

#6 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2009.11.25, 17:38

@wiz88, te dane są w pliku, ale ich odczytanie będzie trudne. Struktura SQLite jest dość złożona. Odczytanie treści wiadomości jest możliwe, "wyciągając tekst" z pliku. Nie spotkałem się nigdy z narzędziem do odzyskiwania usuniętych rekordów z bazy.

sqlite_dr.GIF
Po prawej jest usunięty (wiadomości test0 i test0_odp). Teoretycznie można przeszukiwać plik z użyciem wyrażeń regularnych. W WinHex jest Specialist->Gather text, ale ciężko będzie go dopasować do godziny i osoby, z którą rozmawiałeś. Proponuję poszukać czegoś typu "SQLite3 deleted records recovery".
W AQQ jest dużo prościej;)

@OC, patrzyłem na to jakiś czas tego, jak będę miał chwilę (ostatnio różnie z tym bywało), to zajrzę, ale łatwo nie będzie, bo chyba użyli Blowfish. Może pomógłby disassebler, ale (pomijając kwestię legalności) nie znam asma.

#7 SaperR

SaperR

    Bywalec

  • Użytkownik
  • 116 postów
  • MiejscowośćMiędzychód

Napisano 2009.11.25, 17:57

@Oconnel:
http://lowbyte.da.ru...articles&id=224

#8 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2009.11.25, 22:38

@wiz88, te dane są w pliku, ale ich odczytanie będzie trudne. Struktura SQLite jest dość złożona. Odczytanie treści wiadomości jest możliwe, "wyciągając tekst" z pliku. Nie spotkałem się nigdy z narzędziem do odzyskiwania usuniętych rekordów z bazy.


Dzięki wielkie za wgłębienie się w problem. Generalnie jest to dobra wiadomość kwestią jest tylko czekać aż ktoś skonstruuje jakiś łatwy programik do "wyciągania" usuniętych wiadomości z tego pliku.

W WinHex jest Specialist->Gather text, ale ciężko będzie go dopasować do godziny i osoby, z którą rozmawiałeś. Proponuję poszukać czegoś typu "SQLite3 deleted records recovery".

Wstępnie grzebiąc w wujku google nie mogłem nigdzie znaleźć takiej wersji WinHex`a aby był z licencją dla specjalistów i w pełni udostępniał funkcję Gether text. :/:/ Gdy jakaś wpadła mi w łapki to okazało się że max plik text może mieć 200kb :/.
Poświęciłem chwilę żeby poszukać czegoś z dziedziny "SQLite3 deleted records recovery" ale niestety nie znalazłem ani programów ani opisów jak wygrzebać usunięte rekordy. Jak mnie jeszcze natchnie jakaś boska siła (kawa) to spróbuję coś jeszcze znaleźć... ale cała ta sprawa uświadamia mi jak bardzo jestem zielony jeśli chodzi o informatykę.

Oki oki poradziłem sobie z WinHex`em i ładnie exportowałem wszystkie te krzaczki do pliku Archive.db.txt tam wykorzystałem opcję wyszukiwania wpisałem datę rozmowy i ładnie znalazło mi to co było skasowane :D:D:D:D oczywiście forma wygląda okropnie sporo jest wyciętego ... ale sens idzie wywnioskować. Śmiało mogę stwierdzić że można wyciągnąć z archive.db ręcznie usunięte rozmowy. :):) Może by tak opatentować jakiś sposób zgrabnego i całościowego exportowania tych rozmów do jakiejś normalnej postaci... ;)
Dzieki 4-help i jak byście coś gdzieś wygrzebali w otchłani internetu wrzucajcie chętnie się bliżej przyjrzę ;) pzdr

Użytkownik wiz88 edytował ten post 2009.11.26, 01:11


#9 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2009.11.26, 11:10

Forma będzie okropna, nie wiem jak dopasujesz daty do rozmów, może to składać po kolei, ale coś mi się wydaje, że będziesz musiał napisać jakiś mały programik do tego.

@SaperR, myślałem kiedyś, żeby zaproponować wykorzystanie jakiegoś identyfikatora komputera do zabezpieczenia haseł (tylko numer seryjny parytcji wydał mi się za krótki), widać nie tylko ja na to wpadłem. Dobrze, że ktoś to już złamał. Ciekawe kiedy dekodowanie pojawi się w AQQ.

PS. Trochę mnie zdziwiło, że OC znowu użył XORa, jak w OpenSSLu ma do dyspozycji pełno lepszych szyfrów.

#10 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2009.11.26, 15:34

"napisać programik" no nie powiem połechtało to moje EGO xD. Ja ledwo co się znam na zrobieniu formata a gdzie tam pisanie programów. Co do samych rozmów to na szczęście znałem dokładne daty kiedy i jaka rozmowa przebiegała, więc idąc tym tropem można znaleźć całkiem sporo. Nie wygląda to olśniewająco ale ktoś bardziej obeznany coś w końcu stworzy dla takich laików jak ja.
Co do samego kodowania czy dekodowania gg 8 znalazłem kiedyś coś takiego: http://rafal.jelito.org/download.php ;)

Użytkownik wiz88 edytował ten post 2009.11.26, 15:42


#11 SaperR

SaperR

    Bywalec

  • Użytkownik
  • 116 postów
  • MiejscowośćMiędzychód

Napisano 2009.11.26, 15:42

@up:
Ten program, działa na tej samej zasadzie, jaka jest opisana w artykule, do którego podałem odnośnik.

#12 Morpheus

Morpheus

    Weteran

  • Wtyczkopisarz
  • 712 postów

Napisano 2009.11.26, 17:43

@SaperR, myślałem kiedyś, żeby zaproponować wykorzystanie jakiegoś identyfikatora komputera do zabezpieczenia haseł (tylko numer seryjny parytcji wydał mi się za krótki), widać nie tylko ja na to wpadłem.

<offtopic>To znaczy, że po przerzuceniu GG na Pendrive'a nie będzie działać na innym PC ? Tylko pogratulować ;P</offtopic>

#13 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2009.11.26, 18:11

Można przerzucić zaszyfrowane profil ngg z innego kompa na swojego ale z tego co się orientuję nie będzie dostępne archiwum. Kiedyś próbowałem to obejść i w sumie z tego co pamiętam wystarczyło stworzyć nowy profil z tym samym nr gg i hasłem a potem tylko podmienić np. archiwum i normalnie odpalić. Gdzieś w internecie jest mały programik który służy do ściągania z kompa potrzebnych plików do odszyfrowania hasła ngg i do tego zasysa niezbędne dane sprzętu na jakim jest profil. ;)

#14 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2009.11.27, 22:58

Podobnie jest na Skype. Po zrobieniu backupu i formacie dysku jak wkleiłem kopię do %AppData%, to hasło musiałem podawać jeszcze raz. Nie ma GG portable więc pendrive'ami się chyba nie zajmowali, a nawet gdyby, to nr seryjny partycji z pendrive'a można wyciągnąć, także mogłoby to działać.

#15 cimix

cimix

    Początkujący

  • Użytkownik
  • 1 postów

Napisano 2010.06.09, 18:44

Witam!
Posty trochę stare, ale mam pytanie dotyczące właśnie tego tematu.

Sprzedawałem ostatnio swój stary komputer. Nauczony doświadczeniem ze starszych wersji gg przekopiowałem pliki profilów najpierw na pendrive'a, a później na nowego kompa myśląc naiwnie, że będą działały bez problemów.

Wszystko jest ok, oprócz tego, że nie działają archiwa. Profile były zabezpieczone hasłami.

Czy jeśli zdobędę numer seryjny woluminu poprzedniego komputera i nadam go nowemu to archiwa będą działały normalnie?

To dla mnie ważne ponieważ mam tam informacje warte dość duże pieniądze.

Z góry dziękuję za odpowiedź.

#16 Lord ByRad

Lord ByRad

    Expert

  • Użytkownik
  • 985 postów

Napisano 2010.06.09, 20:25

Myślę, że lektur tego tematu: http://forum.aqq.eu/...3546-archeolog/ powinna Ci pomóc ... Tyle tylko, że ta wtyczka nie będzie działała z programem GG, tylko z AQQ, w którym możesz również korzystać z sieci Gadu-Gadu, jak również z kilku innych.

279.gif


#17 karololszak

karololszak

    podróżnik w czasie

  • Moderator
  • 1562 postów

Napisano 2010.06.09, 21:45

@Lord ByRad: Archeolog IMO nie zadziała -> nie wiem nawet czy oferuje on import z profilu zabezpieczonego hasłem .. Nawet jeśli działa, to bierze numer seryjny dysku z tego komputera co jest aktualnie używany - a, że u osoby wyżej dysk się zmienił -- Archeolog na nic się nie zda :P

@cimix: mogę Ci polecić użyć któregoś z programów Rafała Jelitto - jego download -- zwróć uwagę na NoweGG Tools i PassTool Password Recovery / Reader ;) O ile się nie mylę, to NGGT ma opcję podania numeru seryjnego woluminu C, a także jego odczytanie z używanego komputera (co potrzebne Tobie nie będzie :P)

Miłego (łamania własnego archiwum) ;)

#18 wiz88

wiz88

    Początkujący

  • Użytkownik
  • 10 postów

Napisano 2010.06.09, 22:04

Drogi kolego ... dobrze że napisałeś, mały nekroposting nie zaszkodzi.

Ja bym spróbował coś takiego:

Mając te wszystki pliki oczywiście kodowane, załóż nowy profil (te same hasła ten sam nr. ta sama wersja gg) pozamykaj gg ... podmień plik z archiwum i spróbuj otworzyć archiwum.

Daj znac jaki efekt (najlepiej na meila)
pozdro !

Użytkownik wiz88 edytował ten post 2010.06.09, 22:06


#19 bartek-525

bartek-525

    Adept

  • Wtyczkopisarz
  • 273 postów

Napisano 2010.06.10, 10:51

Widziałem gdzieś program do deszyfrowania archiwum przy znanym haśle i volume id, tylko nie pamiętam gdzie, poszukam. Jeśli zdobędziesz numer seryjny woluminu, to powinno działać, tylko skąd go weźmiesz. Nawet gdyby, ID woluminu to ciąg 32-bitowy, także masz trochę ponad 4 miliardy możliwości, to jeszcze można złamać metodą brute-force (lecisz na pętli od 0x00000000 do 0xFFFFFFFF).

PS. Programów, które podał karololszak nie testowałem dokładnie, nie wiem czy sobie z tym poradzą, możliwe.

#20 SaperR

SaperR

    Bywalec

  • Użytkownik
  • 116 postów
  • MiejscowośćMiędzychód

Napisano 2010.06.11, 21:01

Widziałem gdzieś program do deszyfrowania archiwum przy znanym haśle i volume id, tylko nie pamiętam gdzie, poszukam.

Na stronie lowbyte.da.ru znajdowała się taka aplikacja jak i kod źródłowy, jednak strona padła.
Znalazłem ten program na legalne.info, ale nie jestem pewien czy działa tak jak powinien.

Jakiś czas temu pojawiła się nowa wersja archive.db Tools z możliwością dekodowania archiwum. I ten właśnie program polecam :)

Edit: Przypominam, że archiwum należy dekodować na tym samym dysku, na którym zostało utworzone i zaszyfrowane! :)

Pozdrawiam.

Użytkownik SaperR edytował ten post 2010.06.11, 21:03





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych