LINUX.ORG.RU

Кому ломалку для Sim?


0

0

Решил я в общем проблему. Надоело разбираться в исходниках и
заниматься насилием с компилятором отлавливая хидеры и классы Qt. 
Решил написать свой аналог по функционалу того кода.

Еслу кому нужна ломалка паролей для Sim v 0.9.3 - милости прошу.
Выковыриваем файл ~/.kde/share/apps/sim/ICQ.XXX.1/clients.conf строки с Password="$xxx$xxx$xxx" для icq, jabber и прочих аккаунтов, и вбиваем в скрипт.

19:45:54[tigra@tigra3]~/bin/sim_pwd> cat ./sim2_pwd.pl
#!/usr/bin/perl -w
## Sim's v 0.9.3 password crack
## 2005-08-08
## v.0.1

use strict;
use Unicode::String;

my $INIT_PASS = '$431c$4376$4312$4374$430e$4349$4323$4348$4322';

my $INIT_KEY  = 0x4345;

#################################

my $tmp_key    = $INIT_KEY;
my $crypt_pass = $INIT_PASS;

print "\nCRYPT_PASS=".$crypt_pass."\n\n";
$crypt_pass =~ s/\$//;

my $arg;
my @args = split('\$',$crypt_pass);
my $i=0;

my $hex_pass = "";
my $hex_value;
my $u2 = Unicode::String->new();
my $open_pass  = Unicode::String->new();

foreach $arg(@args)
{
    $i++;
    $arg = "0x".$arg;
    print "$i:(key=".$tmp_key.")^[simbol=".hex($arg)."]";
    my $a = $tmp_key;
    my $b = hex($arg);
    my $c = $a ^ $b;
    $u2->chr("$c"); print " is '".$u2->utf8."'";
    print ", decimal unicode 0x$c\n";
    $open_pass->append($u2);
    $tmp_key   = hex($arg);
}

print "\nOPEN PASS: ".$open_pass->utf8."\n";
19:46:01[tigra@tigra3]~/bin/sim_pwd> ./sim2_pwd.pl

CRYPT_PASS=$431c$4376$4312$4374$430e$4349$4323$4348$4322

1:(key=17221)^[simbol=17180] is 'Y', decimal unicode 0x89
2:(key=17180)^[simbol=17270] is 'j', decimal unicode 0x106
3:(key=17270)^[simbol=17170] is 'd', decimal unicode 0x100
4:(key=17170)^[simbol=17268] is 'f', decimal unicode 0x102
5:(key=17268)^[simbol=17166] is 'z', decimal unicode 0x122
6:(key=17166)^[simbol=17225] is 'G', decimal unicode 0x71
7:(key=17225)^[simbol=17187] is 'j', decimal unicode 0x106
8:(key=17187)^[simbol=17224] is 'k', decimal unicode 0x107
9:(key=17224)^[simbol=17186] is 'j', decimal unicode 0x106

OPEN PASS: YjdfzGjkj
19:46:15[tigra@tigra3]~/bin/sim_pwd>

P.S. Perl - рулез! Всем кто помогал - спасибо! =)

ну я незнаю, как будто нельзя было на перле сразу и открыть/отпарсить тот файл с паролями. :)

anonymous
()
Ответ на: комментарий от anonymous

можно это на перле вот тока чтобы ламаки не пользовали надо было ещё какую-нибудь простенькую ошибку в код добавить

anonymous
()
Ответ на: комментарий от anonymous

>$INIT_KEY = 0x4345 что это ?

Это первоначальный ключ к "шифрованию" XOR'ом:

sim-0.9.3/sim/api/contacts.cp

Client::Client(Protocol *protocol, const char *cfg)
{
    load_data(_clientData, &data, cfg);

    // now uncrypt password somehow
    QString pswd = getPassword();
    if (pswd.length() && (pswd[0] == '$')) {
        pswd = pswd.mid(1);
        QString new_pswd;
        unsigned short temp = 0x4345;
        QString tmp;
        do {
            QString sub_str = getToken(pswd, '$');
            temp ^= sub_str.toUShort(0,16);
            new_pswd += tmp.setUnicodeCodes(&temp,1);
            temp = sub_str.toUShort(0,16);
        } while (pswd.length());
        setPassword(new_pswd);
    }

    m_protocol = protocol;
    m_status = STATUS_OFFLINE;
    m_state  = Offline;
}


Вообще, достаточно запомнить только константу 0x4345. 
Далее можно взять простой 16h-калькулятор и декодировать 
символы Юникода.

Первый символ декодируется ключем, второй - закодированным первым,
третий - закодированным вторым. Так что, в принципе, не зная пароль
и эту константу - все равно можно восстановить весь пароль, за
исключением первого символа.

Вопрос в тему о безопасном хранении паролей...

P.S. А понадобилось мне все это чтоб самому вспомнить 
     свой старый пасс на Джаббере =)

boatman
() автор топика
Ответ на: комментарий от boatman

Да, чтоб скрипт завелся, нужен модуль для работы со стоками Юникода. Я использовал рпмку perl-Unicode-String-2.07-128.i586.rpm

boatman
() автор топика
Ответ на: комментарий от anonymous

> ну я незнаю, как будто нельзя было на перле сразу и открыть/отпарсить тот файл с паролями. :)

Лениво было, но если уж сильно надо - могу дописать =)

boatman
() автор топика
Ответ на: комментарий от boatman

>Это первоначальный ключ к "шифрованию" XOR'ом

аа всё понял...

>Лениво было, но если уж сильно надо - могу дописать =)

ничё им не дописывай , кому надо , те сами смогут, то они будут ходить по институтам и по инет салонам и номера воровать )))

anonymous
()
Ответ на: комментарий от anonymous

Я смотрю sim такой популярный стал :) Родного ICQ-клиента уже переплюнул :)

Deleted
()
15 сентября 2005 г.

Родного ICQ клиента переплюнул? Интересно, что за родной клиент такой.

Dr_UFO_51
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.