Dekoder Haseł Gadu-Gadu

Ten prosty skrypt pozwala odzyskać zapomniane hasło dla numeru komunikatora Gadu-Gadu oraz hasło zabezpieczające profil użytkownika. Dekoder Gadu-Gadu został już użyty 12265 razy.

Co to jest Gadu-Gadu?

Gadu-Gadu to polski komunikator internetowy wykorzystujący własnościowy protokół komunikacyjny.

Gadu-Gadu był najpopularniejszym komunikatorem w latach 90 i 2000 w Polsce, z łączną liczbą 15 milionów zarejestrowanych użytkowników i średnią liczbą 6.5 miliona dziennie aktywnych użytkowników.

Pierwsze wersje Gadu-Gadu trzymały ustawienia użytkownika jak hasło do logowania i hasło do profilu na komputerze w pliku konfiguracyjnym, wykorzystując do tego celu prosty algorytm szyfrujący.

Wykorzystanie inżynierii wstecznej pozwoliło na odzyskanie jego kodu źródłowego.

Poniższy dekoder pozwala na odtworzenie obu haseł oraz numeru użytkownika z tegoż pliku konfiguracyjnego.

Dekoder hasła dla komunikatora Gadu-Gadu lub inaczej GG

Zdekoduj hasło z pliku konfiguracyjnego

* Zdekodowane dane nie są zapisywane na tej stronie. Jeśli w to nie wierzysz, możesz równie szybko zmienić hasło po jego rozkodowaniu.

Położenie pliku konfiguracyjnego

Hasła sa dekodowane bezpośrednio z pliku konfiguracyjnego config.dat, plik ten zazwyczaj można znaleźć w katalogach:

System operacyjny Ścieżka pliku
Windows Vista / 7 / 8 / 10 C:\Users\Profil\Gadu-Gadu\Użytkownik\config.dat
Windows NT/XP C:\Documents and Settings\Profil\Gadu-Gadu\Użytkownik\config.dat
Windows 9x/ME C:\Program Files\Gadu-Gadu\users\Username\config.dat

Kod źródłowy algorytmu dekodowania hasła

Minęło wiele lat od czasów świetności Gadu-Gadu dlatego ze względów historycznych postanowiłem opublikować algorytm dekodowania hasła poddany inżynierii wstecznej w języku programowania PHP.

////////////////////////////////////////////////////////////////////////////////
//
// zamien z 1025 na ISO
//
////////////////////////////////////////////////////////////////////////////////

public static function convert_pl($text)
{
  $pol = [ "ą", "ę", "ó", "ł", "ń", "ś", "ż", "ź", "ć", "Ą", "Ę", "Ó", "Ł", "Ń", "Ś", "Ż", "Ź", "Ć" ];
  $eng = [ "±", "ę", "ó", "ł", "ń", "¶", "ż", "Ľ", "ć", "ˇ", "Ę", "Ó", "Ł", "Ń", "¦", "Ż", "¬", "Ć" ];

  return str_replace($pol, $eng, $text);
}

////////////////////////////////////////////////////////////////////////////////
//
// znajdz numer UIN uzytkownika
//
////////////////////////////////////////////////////////////////////////////////

public static function find_gg_uin($configfile, $size)
{
  $uin = "";

  for ($i = 0; $i < $size - 6; $i++)
  {
    if ($configfile[$i + 0] == 'N' &&
        $configfile[$i + 1] == 'u' &&
        $configfile[$i + 2] == 'm' &&
        $configfile[$i + 3] == 'b' &&
        $configfile[$i + 4] == 'e' &&
        $configfile[$i + 5] == 'r')
    {
      $j = $i + 5 + 3;

      $uin = ord($configfile[$j + 0]) + (ord($configfile[$j + 1]) << 8) + (ord($configfile[$j + 2]) << 16) + (ord($configfile[$j + 3]) << 24);

      if ($uin >= 4294967294) $uin -= 4294967296;

      break;
    }
  }

  return $uin;
}

////////////////////////////////////////////////////////////////////////////////
//
// znajdz haslo do logowania do GG
//
////////////////////////////////////////////////////////////////////////////////

public static function find_gg_password($configfile, $size)
{
  $password = "";

  for ($i = 0; $i < $size - 9; $i++)
  {
    if ($configfile[$i + 0] == 'P' &&
        $configfile[$i + 1] == 'a' &&
        $configfile[$i + 2] == 's' &&
        $configfile[$i + 3] == 's' &&
        $configfile[$i + 4] == 'w' &&
        $configfile[$i + 5] == 'o' &&
        $configfile[$i + 6] == 'r' &&
        $configfile[$i + 7] == 'd' &&
        $configfile[$i + 8] == '2')
    {
      $j = $i + 8 + 3;

      while(ord($configfile[$j]) != 0x00)
      {
        $password .= $configfile[$j];
        $j++;
      }

      if (!empty($password))
      {
        $decoded = "";

        for ($j = 0; $j < strlen($password) / 2; $j++)
        {
          $decoded .= chr( (ord($password[$j << 1]) - 0x41 ) | ( (ord($password[ ($j << 1) + 1 ]) - 0x41) << 4 ) );
        }

        $password = static::convert_pl($decoded);

        break;
      }
    }
  }

  return $password;
}

////////////////////////////////////////////////////////////////////////////////
//
// znajdz haslo do logowania do profilu uzytkownika na komputerze
//
////////////////////////////////////////////////////////////////////////////////

public static function find_gg_profile_password($configfile, $size)
{
  $password = "";

  for ($i = 0; $i < $size - 11; $i++)
  {
    if ($configfile[$i + 0] == 'p' &&
        $configfile[$i + 1] == 'a' &&
        $configfile[$i + 2] == 's' &&
        $configfile[$i + 3] == 's' &&
        $configfile[$i + 4] == 'w' &&
        $configfile[$i + 5] == 'o' &&
        $configfile[$i + 6] == 'r' &&
        $configfile[$i + 7] == 'd' &&
        $configfile[$i + 8] == 's' &&
        $configfile[$i + 9] == 't' &&
        $configfile[$i +10] == 'r')
    {
      $j = $i + 10 + 3;

      while(ord($configfile[$j]) != 0x00)
      {
        $password .= chr( ord($configfile[$j]) ^ 0xFF);
        $j++;
      }

      if (!empty($password))
      {
        $password = static::convert_pl($password);
        break;
      }
    }
  }

  return $password;
}

Masz pytania?

Jeśli chciałbyś zapytać o cokolwiek dotyczącego dekodera haseł Gadu-Gadu, coś jest niejasne lub chciałbyś jakichś ulepszeń napisz do mnie. Z chęcią odpowiem na każde pytanie.