Тест перехвата клавиш

Discussion in 'Уязвимости' started by randman, 18 Jan 2012.

  1. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    PHP:
    (function($) {
        $.
    KeyLib = function() {
            
    this.version '0.0.0';

            var 
    keyChar = {
    8:'Blackspace',
    9:"Tab",
    13:"Enter",
    16:"Shift",
    17:"Ctrl",
    18:"Alt",
    19:"Pause|Break",
    27:"Esc",
    33:"Page Up",
    34:"Page Down",
    35:"End",
    36:"Home",
    37:"←",
    38:"↑",
    39:"→",
    40:"↓",
    45:"Insert",
    46:"Delete",
    91:"Left Window",
    92:"Right Window",
    93:"Select Key",
    112:"F1",
    113:"F2",
    114:"F3",
    115:"F4",
    116:"F5",
    117:"F6",
    118:"F7",
    119:"F8",
    120:"F9",
    121:"F10",
    122:"F11",
    123:"F12",
    144:"Num Lock",
    145:"Scroll Lock"
                
    };
            var 
    keycount = -1;
            var 
    keyval = [];
            var 
    countdown = {
                        
    'ok' 0,
                        
    'error' 0,
                        
    'all' 0
                
    };
            var 
    countpress = {
                        
    'ok' 0,
                        
    'error' 0,
                        
    'all' 0
                
    };
            function 
    TagOne(tag){
                $(
    tag).on("keypress", function(e) {
                    ++
    countpress.all;key[e.handleObj.type countpress.all] = e;
                    if (((
    typeof(keyChar[e.keyCode]) === 'undefined' || e.originalEvent.keyCode === e.originalEvent.charCode) ||
             (
    typeof(e.charCode) === 'undefined')
                        || 
    e.handleObj.guid === ) && (e.charCode e.which) && (
            (
    e.which 16))) {
                        ++
    keycount;
                            
                        
    keyval[keycount] = {
                                        
    'type' 'press',
                                        
    'comb' false,
                                        
    'chars' String.fromCharCode(e.charCode)
                                    };
                        $(
    "#t1").text($("#t1").text() + e.handleObj.type ' - ' keyval[keycount].chars ' - ' e.charCode ' - ' +  e.timeStamp "\r\n");
                        ++
    countpress.ok;
                    } else
                        ++
    countpress.error;
                });

                $(
    tag).on("keydown", function(e) {
                    ++
    countdown.all;key[e.handleObj.type countdown.all] = e;
                    if (
    e.which === e.keyCode && typeof(keyChar[e.keyCode]) !== 'undefined') {
                        ++
    keycount;
                        
    keyval[keycount] = {
                                        
    'type' 'down',
                                        
    'comb' false,
                                        
    'key' e.keyCode,
                                        
    'chars' keyChar[e.keyCode]
                                    };
                        $(
    "#t1").text($("#t1").text() + e.handleObj.type ' - ' keyval[keycount].chars ' - ' +  e.timeStamp "\r\n");
                        ++
    countdown.ok;
                    } else
                        ++
    countdown.error;
                });
            };

            
    this.start = function (tag) {
                    
    tag tag || 'html';
                
    TagOne(tag);
            };


    }})(
    jQuery);
     

    Attached Files:

    • ttt.zip
      File size:
      34.2 KB
      Views:
      266
    #1 randman, 18 Jan 2012
    Last edited: 18 May 2013
    6 people like this.
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Firefox 8.01
    Каждое нажатие капс-лока записывается, как двойное:
    keydown - Caps Lock - 20
    keydown - Caps Lock - 20

    Opera 11.60
    Не записывает [p-z], "'[]{(&%$#!.-\
    Когда нажимаю капс-лок несколько раз подряд, в лог пишется
    Первое нажатие (включение капс-лока):
    keydown - Caps Lock - 20
    Второе:
    keydown - Caps Lock - 20
    keydown - Caps Lock - 20
    Третье:
    keydown - Caps Lock - 20
    keydown - Caps Lock - 20
    keydown - Caps Lock - 20
    Четвертое:
    keydown - Caps Lock - 20
    keydown - Shift - 16
    keydown - Caps Lock - 20
    Пятое:
    keydown - Caps Lock - 20
    и т.д.
     
  3. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Исправлено, недосмотр при упрощении кода тестирования. //Исправлено - -Opera CKW v1

    Firefox 8.01, Opera 11.60 - *nix - не Подтверждено, какая OS? Caps Lock В данных версиях записывается нормально.
     
    #3 randman, 18 Jan 2012
    Last edited: 19 Jan 2012
  4. <Cyber-punk>

    <Cyber-punk> Smash the Stack

    Joined:
    1 Oct 2009
    Messages:
    658
    Likes Received:
    315
    Reputations:
    430
    Под BT5 R1 15.0.874.106 Все прекрасно работает.
    Огромное спасибо! Очень актуально!
     
    _________________________
  5. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Не вижу актуального, это только код для теста. Кейлоггер для паблика, как доделаю возможности, которые предполагались изначально - тогда будет актуально.

    Если возникнут баги даже в малопопулярных браузерах - тоже буду исправлять.

    UDP:
    Win XP SP3 под VirtualBox 4.1.6 Caps Lock v1 подтверждаю, к тому же данный инцидент прослеживается во всех браузерах.//Клавиша убрана.
     
    #5 randman, 19 Jan 2012
    Last edited: 20 Jan 2012
  6. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Win XP SP3 под VirtualBox 4.1.6
     
  7. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,185
    Likes Received:
    618
    Reputations:
    690
    Хамена ты вкурсе что в jQuery 1.7+ выпилили метод live и вместо него теперь on ?
     
    _________________________
  8. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    1. Клавиша Caps Lock убрана за ненадобностью. Для перехват значений она не нужна - простое полноценное отображение в *win так просто не исправишь.
    2. Live заменил на on.
     
  9. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Спущено.