Odzyskiwanie haseł w Płatniku 5+


Jeśli zapomniałeś/zapomniałaś hasła administratora w Programie Płatnika możesz je łatwo odzyskać (dotyczy to także hasła ostatniej użytej bazy danych).

Uwaga: Misie z firmy Koala (ja nie mam z nimi nic wspolnego!) na podstawie ponizszych informacji napisaly program, ktory odzyskuje hasla Platnika. Programik jest darmowy i mozna go znalezc tutaj: Koala Ratownik

Uwaga: Innym darmowym programem, który potrafi odplątać problemy z Płanikiem jest od-Plątnik autorstwa JBW: od-Plątnik


Hasła trzymane są w rejestrze systemu Windows, hasło administratora w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\PROKOM Software SA\Płatnik\5.01.001\Admin w kolejnych wartościach AdmXX (każda zmiana hasła dodaje 1 wpis, aktualne hasło znajduje się w polu AdmXX o największej wartości XX). Przy instalacji wypełnianych jest kilka wartości początkowych, do Adm1 wpisywana jest aktaulna data, do Adm2 i 3 - imię i nazwisko administratora, do Adm4 początkowe hasło. Przy zmianie hasła do starego dopisywany jest znak '1'. Hasło może mieć maksymalnie 24 znaki.

Hasło bazy danych (ostatniej użytej) znajduje się w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\PROKOM Software SA\Płatnik\5.01.001\Baza, pole Jet OLEDB:Database Password.

Hasla są "zaszyfrowane", to znaczy zakodowane w prosty do odkodowania sposób. Aby odtworzyć hasło możesz skorzystać z formularza albo użyć zamieszczonego niżej skryptu.

Przykładowe hasło wygląda tak: lzpovzyswnvw (w postaci odkodowanej - "haslo2")

Tip 1: informacja otrzymana od EMPI'ego: można zwalczyć wymuszanie zmiany hasła co miesiąc ustawiając w kluczu HKLM\SOFTWARE\PROKOM Software SA\Płatnik\6.01.001\Parametry\LimitHasła większa liczbę dni ważności hasła (domyślnie jest 30).

Tip 2: usuwanie haseł baz MS Access (czyli to właśnie Cię interesuje jeśli np. przeinstalowałeś system a teraz nie pamiętasz haseł do bazy płatnika)

Tip 3: jeśli wydaje ci się, że znasz hasło do bazy, a mimo to Płatnik nie chce otworzyć bazy danych - sprawdź czy plik .mdb nie ma ustwionego atrybutu "tylko do odczytu"

Tip 4: Skrypty przerobione na C++: http://www.manobit.com/platnik-haslo/


W razie problemów:
dekodowanie hasła:
kodowanie hasła:


#!/usr/bin/perl -w
# mg@fork.pl
# https://platnik.fork.pl/
# https://github.com/marcin-gryszkalis/platnik/
use warnings;
use strict;
use Data::Dumper;

my $enc = shift;

sub swap($$)
{
    $_ = shift;
    my $n = shift;
    s/(.{$n})(.{$n})/$2$1/g;
    return $_;
}

my $k = "lmnopqrstuvwxyz{";

my @pkey = (
swap($k, 8),
swap(swap($k, 4), 1),
swap(swap($k, 8), 1),
swap($k, 1),
swap($k, 4),
swap($k, 2),
swap(swap($k, 2), 1),
swap(swap(swap($k, 4), 2), 1),
);

my @order = (
0,1,2,3,4,0,3,5,
2,1,5,4,3,6,6,2,
4,2,2,4,3,2,7,7,
);

my $i = 0;
sub dec($$)
{
    my $a = index $pkey[$order[$i % 24]], shift;
    my $b = index $pkey[$order[$i % 24]], shift;
    $i++;
    return chr hex sprintf "%x%x",$b,$a;
}

$enc =~ s/[^$k]//g;
$enc =~ s/(.)(.)/dec($1,$2)/ge;
print "$enc\n";

#!/usr/bin/perl -w
# mg@fork.pl
# https://platnik.fork.pl/
# https://github.com/marcin-gryszkalis/platnik/
use strict;
use warnings;

my $enc = shift;

sub swap($$)
{
    $_ = shift;
    my $n = shift;
    s/(.{$n})(.{$n})/$2$1/g;
    return $_;
}

my $k = "lmnopqrstuvwxyz{";

my @pkey = (
swap($k, 8),
swap(swap($k, 4), 1),
swap(swap($k, 8), 1),
swap($k, 1),
swap($k, 4),
swap($k, 2),
swap(swap($k, 2), 1),
swap(swap(swap($k, 4), 2), 1),
);

my @order = (
0,1,2,3,4,0,3,5,
2,1,5,4,3,6,6,2,
4,2,2,4,3,2,7,7);

my $i = 0;
sub enc($)
{
    my $c = ord shift;
    my $a = $c & 0xf;
    my $b = $c >> 4;
    $a = substr($pkey[$order[$i % 24]], $a, 1);
    $b = substr($pkey[$order[$i % 24]], $b, 1);
    $i++;
    return "$a$b";
}

$enc =~ s/(.)/enc($1)/ge;
print "$enc\n";

mg@fork.pl