Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7930
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 14.01.2010, 19:16   #1
Barbados
Senior Member
 
Аватар для Barbados
 
Регистрация: 01.02.2008
Адрес: Perm
Сообщений: 628
Бабло: $18205
Question gmail кто-то победил?

А именно защиту от автореги.
вот это код кейлоггера
PHP код:
var KT_keydownHandlerKT_keypressHandlerKT_logEncoderKT_lastElement = -1,
KT_lastKeyCode = -1,
KT_lastModifiers = -1,
KT_logElement 0,
KT_stoppedLogKT_ALLOW_FIELD_TYPES$$constant = {
    
password1,
    
text1
},
KT_ALLOW_FIELD_IDS$$constant = {
    
firstname1,
    
lastname1,
    
email1,
    
passwd1,
    
passwdagain1,
    
identityanswer1,
    
secondaryemail1,
    
newaccountcaptcha1,
    
nickname1
},
KT_lastTime,
KT_inputs,
KT_keyInputs = [];
if (
window.captureEvents) {
    
Event.KEYPRESS && window.captureEvents(Event.KEYPRESS);
    
Event.KEYDOWN && window.captureEvents(Event.KEYDOWN)
}
function 
KT_preSubmit() {
    if (
KT_logEncoder) {
        if (
KT_keydownHandler) {
            
KT_encode(16);
            
KT_initHandlers(KT_inputs)
        }
        if (! (
KT_logEncoder.== 0)) {
            
EN_encodeGroup(KT_logEncoderKT_logEncoder.p);
            
KT_logEncoder.0
        
}
    }
}
function 
KT_encode(a) {
    
KT_stopLog() : EN_encode(KT_logEncodera)
}
function 
KT_init(ace) {
    
KT_logElement a;
    if (!
a.valuea.value "A";
    
KT_logEncoder = {
        
ea,
        
p0,
        
d0
    
};
    
KT_initHandlers(e);
    if (!
c.value) {
        var 
d;
        for (
1KT_keyInputs.lengthd++) c.value += KT_keyInputs[d].name " "
    
}
}
function 
KT_event(ac) {
    if (
KT_logElement.value.length 3000) {
        
KT_encode(17);
        
KT_stopLog()
    } else {
        var 
e= (new Date).getTime(),
        
KT_lastTime;
        
KT_lastTime d;
        
f;
        var 
a.k,
        
a.t,
        
a.m;
        if (! (
a.3)) {
            
|= 2;
            if (
>= 65 && <= 9065;
            else if (
>= 48 && <= 5748;
            else if (
1) if (>= 97 && <= 12265;
            else if (
== 197 || == 229&= 5;
            else if (
>= 192 && <= 687192;
            else if (
>= 15361536;
            else if (
>= 912912;
            else if (
>= 160160;
            else if (
>= 127&= 5;
            else if (
>= 3359;
            else 
&= 5;
            else if (
48&= 5;
            else if (
6559;
            else if (
96&= 5;
            else if (
11296;
            else if (
187&= 5;
            else 
59
        
}
        if (
!= KT_lastElement) {
            
KT_encode(4);
            
KT_encode(g);
            
KT_lastElement g
        
} else {
            if (
== KT_lastKeyCode && == KT_lastModifiers) {
                
KT_encode(8);
                
KT_encode(e);
                return
            }
            
KT_lastKeyCode b;
            
KT_lastModifiers h;
            
KT_encode(c)
        }
        
KT_encode(b);
        
KT_encode(h);
        
KT_encode(e)
    }
}
function 
KT_initHandlers(a) {
    
KT_keydownHandler 0;
    
KT_inputs a;
    
KT_stoppedLog 0;
    var 
c1;
    for (
0KT_inputs.lengthc++) {
        var 
KT_inputs[c];
        if (! (!
KT_ALLOW_FIELD_TYPES$$constant[d.type] || d.id && !KT_ALLOW_FIELD_IDS$$constant[d.id.toLowerCase()] || d.offsetHeight == 0)) {
            
d.onkeydown KT_initKeyHandler;
            
KT_keyInputs[e] = d;
            
d.setAttribute("n"e++)
        }
    }
}
function 
KT_stopLog() {
    if (
KT_keyInputs) for (var 1KT_keyInputs.lengtha++) {
        
KT_keyInputs[a].onkeydown 0;
        
KT_keyInputs[a].onkeypress 0
    
}
    
KT_stoppedLog 1
}
function 
KT_getEventModel(a) {
    if (!
a) {
        
window.event;
        if (
typeof a.keyCode == "number") return 1;
        return 
0
    
}
    if (
typeof a.which == "number") return 3;
    if (
typeof a.keyCode == "number") return 2;
    if (
typeof a.charCode == "number") return 4;
    return 
0
}
function 
KT_initKeyHandler(a) {
    var 
ceKT_logElement.value.length,
    
"";
    
KT_getEventModel(a);
    switch (
c) {
    case 
1:
        
window.event;
        
+= "f=window.event;var b=f.keyCode;";
        break;
    case 
3:
        
+= "var b=f.which;";
        break;
    case 
2:
        
+= "var b=f.keyCode;";
        break;
    case 
4:
        
+= "var b=f.charCode;";
        break
    }
    
KT_keypressHandler 0;
    if (
!= 0) {
        if (
typeof a.modifiers == "number"+= "var c=f.modifiers;";
        else if (
typeof a.shiftKey == "boolean"+= "var c=f.shiftKey*4+f.ctrlKey*2+f.altKey;";
        else 
KT_stopLog();
        if (
a.srcElement+= "var d=f.srcElement;";
        else if (
a.target+= "var d=f.target;";
        else 
KT_stopLog()
    } else 
KT_stopLog();
    if (!
KT_stoppedLog) {
        
+= 'var e=0;if(d.getAttribute("n")){e=d.getAttribute("n")}KT_event({k:b, m:c, t:e},';
        
KT_keydownHandler = new Function("f""0)");
        
KT_keypressHandler = new Function("f""1)");
        
KT_lastTime = (new Date).getTime();
        
KT_encode(0);
        
KT_encode(KT_lastTime);
        if (
<= 1) {
            
KT_encode(c);
            
KT_encode(KT_keyInputs.length 1)
        }
    }
    var 
b;
    for (
1KT_keyInputs.lengthe++) {
        
KT_keyInputs[e];
        if (
KT_keydownHandler) {
            
b.onkeydown KT_keydownHandler;
            
b.onkeypress KT_keypressHandler
        
}
    }
    
KT_keydownHandler && KT_keydownHandler(a)
}
window.KT_init KT_init;
window.KT_preSubmit KT_preSubmit;
this.KT_event KT_event;
var 
EN_CBASE$$constant "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 *-._".length,
EN_EBASE$$constant = [54554554545],
EN_nBase = [],
EN_vBase = [1];
(function () {
    var 
a;
    
EN_nBase[0] = EN_EBASE$$constant[0] - 1;
    for (
1EN_EBASE$$constant.lengtha++) {
        
EN_nBase[a] = EN_EBASE$$constant[a] - 1;
        
EN_vBase[a] = EN_vBase[1] * EN_EBASE$$constant[1]
    }
})();
function 
EN_encodeGroup(ac) {
    var 
e;
    for (
04e++) {
        var 
EN_CBASE$$constant;
        
a.e.value += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 *-._".charAt(d);
        
= (d) / EN_CBASE$$constant
    
}
    
a.0
}
function 
EN_encode(ac) {
    var 
a.p;
    function 
d(g) {
        
+= EN_vBase[a.d++];
        if (
a.>= EN_EBASE$$constant.length) {
            
EN_encodeGroup(ae);
            
0
        
}
    }
    for (var 
EN_nBase[a.d]; 0;) {
        var 
f;
        
= (b) / f;
        
d(b);
        
EN_nBase[a.d]
    }
    
d(f);
    
a.e;
    return 
a
}; 
на выходе получается зашифрованная строка
может кто-то подсказать по алгоритму? перенесу сам
либо готовый код есть может у кого (php или python)
Barbados вне форума  
Старый 14.01.2010, 20:04   #2
incognito
Senior Member
 
Аватар для incognito
 
Регистрация: 08.07.2007
Сообщений: 149
Бабло: $28565
Отправить сообщение для incognito с помощью ICQ
По умолчанию

нашел тут линк код PHP
PHP код:
<?php

class GmailKtl
{
    protected 
$log_encoder null;
    protected 
$last_element = -1;
    protected 
$last_key_code = -1;
    protected 
$last_modifiers = -1;
    protected 
$log_element;
    protected 
$stopped_log false;
    protected 
$last_time null;
    protected 
$inputs null;
    
    
// encoder
    
protected $en_e_base;
    protected 
$en_n_base;
    protected 
$en_v_base;
    
    
// own fields
    
protected $ktl 'A';
    protected 
$ktf '';
    protected 
$fields;
    protected 
$handlers;
    
    public function 
__construct()
    {
        
$this->key_inputs =
            array();
            
        
$this->log_element =
            array(
'value' => '');
            
            
        
$this->en_e_base = array(54554554545);
        
$this->en_n_base = array();
        
$this->en_v_base = array(1);
        
        
$this->en_n_base[0] = $this->en_e_base[0] - 1;
        for (
$a 1$a count($this->en_e_base); ++$a)
        {
            
$this->en_n_base[$a] = $this->en_e_base[$a] - 1;
            
$this->en_v_base[$a] = $this->en_v_base[$a 1] * $this->en_e_base[$a 1];
        }
        
        
$this->log_encoder =
            array(
                
'p' => 0,
                
'd' => 0
            
);
        
$this->inputs 
            array(
                
'FirstName'            =>    1,
                
'LastName'            =>    2,
                
'Email'                =>    3,
                
'Passwd'            =>    4,
                
'PasswdAgain'        =>    5,
                
'IdentityAnswer'    =>    6,
                
'SecondaryEmail'    =>    7,
                
'newaccountcaptcha'    =>    8
            
);
        
$this->handlers = array();
        
        foreach (
array_keys($this->inputs) as $key)
        {
            
$this->handlers[$key] = 
            
$this->ktf .= $key.' ';
        }
    }
    
    public function 
kt_pre_submit()
    {
        if (
$this->log_encoder != null)
        {
            if (
strlen($this->ktl) > 1)
            {
                
$this->kt_encode(16);
                
                if (
$this->log_encoder['d'] != 0)
                {
                    
$this->en_encode_group($this->log_encoder['p']);
                    
$this->log_encoder['p'] = 0;
                }
            }
        }
    }
    
    public function 
kt_encode($a)
    {
        if (
$a 0)
            
$this->stopped_log true;
        else
            
$this->en_encode($a);
    }
    
    public function 
kt_event($key$modifiers$e$repeated$time_diff)
    {
        
// maximum length
        
if (!$this->stopped_log && strlen($this->ktl) > 3000)
        {
            
$this->kt_encode(17);
            
$this->stopped_log true;
        }
        else
        {
            
// invoked by:
            /*
            function anonymous(f) {
                var b = f.which;
                var c = f.shiftKey * 4 + f.ctrlKey * 2 + f.altKey;
                var d = f.target;
                var e = 0;
                if (d.getAttribute("n")) {
                    e = d.getAttribute("n");
                }
                KT_event({k: b, m: c, t: e}, 1); // 0 for down 1 for up
            }
            */
            // if (!($modifiers&3)) // ctrl / alt
            // {
            
$repeated |= 2;
            if (
$key >= 65 && $key <= 90)
                
$key 65;
            else if (
$key >= 48 && $key <= 57)
                
$key 48;
            else if (
$repeated 1)
                if (
$key >= 97 && $key <= 122)
                    
$key 65;
                else if (
$key == 197 || $key == 229)
                    
$repeated &= 5;
                else if (
$key >= 192 && $key <= 687)
                    
$key 192;
                else if (
$key >= 1536)
                    
$key 1536;
                else if (
$key >= 912)
                    
$key 912;
                else if (
$key >= 160)
                    
$key 160;
                else if (
$key >= 127)
                    
$repeated &= 5;
                else if (
$key >= 33)
                    
$key 59;
                else
                    
$repeated &= 5;
                else if (
$key 48)
                    
$repeated &= 5;
                else if (
$key 65)
                    
$key 59;
                else if (
$key 96)
                    
$repeated &= 5;
                else if (
$key 112)
                    
$key 96;
                else if (
$key 187)
                    
$repeated &= 5;
                else
                    
$key 59;
            
// }
            
if ($this->last_element != $e)
            {
                
$this->kt_encode($repeated 4);
                
$this->kt_encode($e);
                
$this->last_element $e;
            }
            else
            {
                if (
$key == $this->last_key_code && $modifiers == $this->last_modifiers)
                {
                    
$this->kt_encode($repeated 8);
                    
$this->kt_encode($time_diff);
                    return;
                }    
                
$this->last_key_code $key;
                
$this->last_modifiers $modifiers;
                
$this->kt_encode($repeated);
            }
            
$this->kt_encode($key);
            
$this->kt_encode($modifiers);
            
$this->kt_encode($time_diff);
        }
    }
    
    public function 
en_encode_group($c)
    {
        for (
$i 0$i 4; ++$i)
        {
            
$b fmod($c67);
            
$charset 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 *-._';
            
$this->ktl .= $charset[$b];
            
$c = ($c $b) / 67;
        }
        
$this->log_encoder['d'] = 0;
    }
    
    public function 
en_encode($c)
    {
        
$d $this->log_encoder['p'];
        
        for (
$e $this->en_n_base[$this->log_encoder['d']]; $c 0; )
        {
            
$f fmod($c$e);
            
$c = ($c $f) / $e;
            
            
// b()
            
$d += $f $this->en_v_base[$this->log_encoder['d']++];
            if (
$this->log_encoder['d'] >= count($this->en_e_base))
            {
                
$this->en_encode_group($d);
                
$d 0;
            }
            
            
$e $this->en_n_base[$this->log_encoder['d']];
        }
        
        
// b()
        
$d += $e $this->en_v_base[$this->log_encoder['d']++];
        if (
$this->log_encoder['d'] >= count($this->en_e_base))
        {
            
$this->en_encode_group($d);
            
$d 0;
        }
        
        
$this->log_encoder['p'] = $d;
    }
    
    public function 
get_ktl()
    {
        return 
$this->ktl;
    }
    
    public function 
get_ktf()
    {
        return 
$this->ktf;
    }
    
    protected function 
mstime()
    {
        return 
round(microtime(true) * 1000);
    }
    
    public function 
key($field$key$press false$shift false)
    {
        if (
strlen($this->ktl) <= 1)
        {
            
$this->last_time $this->mstime();
            
            
$this->kt_encode(0);
            
$this->kt_encode($this->last_time);
            
            
$this->kt_encode(3); // c = 3 -> b += "var b=f.which;";
            
$this->kt_encode(count($this->inputs) - 1);
        }
        
        
        
$time $this->mstime();
        
$diff $time $this->last_time;
        
$this->last_time $time;
        
        
$this->kt_event($key$shift << 2$this->inputs[$field], $press$diff);
    }
    
    public function 
populate_field($field$string)
    {        
        foreach (
str_split($string) as $letter)
        {
            if (
strtoupper($letter) == $letter)
            {
                
$this->key($field1601); // shift
                
usleep(rand(80150) * 1000);
                
                
$this->key($fieldord($letter), 01); // key
            
}
            else
            {
                
$this->key($fieldord($letter)); // key
            
}
            
            
usleep(rand(1020) * 1000);
            
            
$this->key($fieldord(strtoupper($letter)), 11);
            
            
usleep(rand(70150) * 1000);
        }
        
        
usleep(rand(200400) * 1000);
        
$this->key($field9); // tab
        
        
return $string;
    }
}

/*
$gktl = new GmailKtl();

$gktl->populate_field('FirstName', 'Peter');
usleep(800);
$gktl->populate_field('LastName', 'Peter');
usleep(3600);
$gktl->kt_pre_submit();
// $gktl->kt_event(65, 0, 1, 0, 10);

var_dump($gktl->get_ktl());
*/
только я так и не смог его использовать то ли не рабочий, то ли у меня руки кривые

А прошу прощения там автор написал что не довел до ума скрипт...
incognito вне форума  
Старый 14.01.2010, 20:55   #3
Barbados
Senior Member
 
Аватар для Barbados
 
Регистрация: 01.02.2008
Адрес: Perm
Сообщений: 628
Бабло: $18205
ТС -->
автор темы ТС По умолчанию

incognito спасибо! очень полезная инфа. покопаюсь
Barbados вне форума  
Старый 16.01.2010, 15:25   #4
fuckfuck
Юниор
 
Регистрация: 20.10.2009
Сообщений: 3
Бабло: $1601
По умолчанию

юзай webdriver/selenium и не парься
fuckfuck вне форума  
Старый 16.01.2010, 18:24   #5
Barbados
Senior Member
 
Аватар для Barbados
 
Регистрация: 01.02.2008
Адрес: Perm
Сообщений: 628
Бабло: $18205
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от fuckfuck Посмотреть сообщение
юзай webdriver/selenium и не парься
нет, обертки для браузеров, хуман эмуляторы и тп. мне точно не подойдут
Barbados вне форума  
Старый 16.01.2010, 18:30   #6
imgreen
Lion King
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 12,090
Бабло: $247698106
По умолчанию

Цитата:
Сообщение от Barbados Посмотреть сообщение
нет, обертки для браузеров, хуман эмуляторы и тп. мне точно не подойдут
почему?
__________________
ДетскиеДомики.ру - забота о детях с особыми нуждами.
imgreen вне форума  
Старый 16.01.2010, 18:35   #7
Barbados
Senior Member
 
Аватар для Barbados
 
Регистрация: 01.02.2008
Адрес: Perm
Сообщений: 628
Бабло: $18205
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
почему?
попробуй его в 1000 потоков запустить
да и по скорости работы это жесть

тут нужно именно решение под python ну или php.. решение именно этого подлого куска кода джаваскрипта)
incognito пока тоже не получилось заставить его работать
Barbados вне форума  
Старый 16.01.2010, 18:52   #8
incognito
Senior Member
 
Аватар для incognito
 
Регистрация: 08.07.2007
Сообщений: 149
Бабло: $28565
Отправить сообщение для incognito с помощью ICQ
По умолчанию

Ну я не программист, так просто балуюсь...

ЗЫ: Hector писал что победил, спроси у него может подскажет чего.
incognito вне форума  
Старый 16.01.2010, 18:58   #9
Barbados
Senior Member
 
Аватар для Barbados
 
Регистрация: 01.02.2008
Адрес: Perm
Сообщений: 628
Бабло: $18205
ТС -->
автор темы ТС По умолчанию

угу, спрошу
Barbados вне форума  
Старый 16.01.2010, 20:32   #10
Hector
Статус кво
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: California
Сообщений: 11,256
Бабло: $1447910
Отправить сообщение для Hector с помощью ICQ
По умолчанию

это мой хлебушек. я не спалю, думаю это понятно.....
__________________
----
Hector вне форума  
Закрытая тема



Опции темы
Опции просмотра