후킹이란 이벤트 핸들러 기반에서 이벤트를 가로채서 변환하는 등의 행동을 말합니다.
당연히 쉘이나 시스템 기반에서는 이런 이벤트 메커니즘이 없구요. 그건 윈도즈라도 GUI 띄우기전의 command.com/cmd.exe에서의 작업역시 이벤트가 없기때문에 후킹할 수 없습니다.
yshkorea님이 쉘이나 그와 비슷한 프로그램을 짜야 원하는 일을 할 수 있을 것 같군요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
X를 띄우지 않은 까만 콘솔화면에서 키보드 등의 이벤트(커널내부에서는 이벤트로 처리하죠)를 가로채려면... 디바이스 드라이버를 짜야하지 안을까 합니다. 현재 PC에 달린 키보드, 마우스 등의 이벤트를 모두 볼 수 있을껍니다.
어플리케이션에서 /dev/input/* 등의 노드를 읽어보는걸로도 모니터링은 가능하지 않을까 합니다. 우째우째하면 같은 노드를 이용해 이벤트를 임의로 생성해 집어넣을 수도 있었던거 같습니다.
gui 라이브러리마다
gui 라이브러리마다 다를거에요.
어느 환경에서 작업하실지 부터 결정하셔야겠죠.
예를들면 gtk 기반인지 qt 기반인지... :-)
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Keedi Kim
----
use perl;
Keedi Kim
qt 같은거 말고
일반적인 리눅스 환경 의 콘솔에서 진행할겁니다
GUI는 들어가지 않고요..
예를들어 root에서 후킹프로그램 돌려놓고
aa 란 계정에서 작업한것을 모니터링 가능
bb 란 계정에서 작업한것을 모니터링 가능
===================
"yshkorea" 죽을만큼 노력했는가? 그만큼 간절했는가?
"yshkorea" 죽을만큼 노력했는가? 그만큼 간절했는가?
GUI가 아니라면 Hooking이 아니죠.
후킹이란 이벤트 핸들러 기반에서 이벤트를 가로채서 변환하는 등의 행동을 말합니다.
당연히 쉘이나 시스템 기반에서는 이런 이벤트 메커니즘이 없구요. 그건 윈도즈라도 GUI 띄우기전의 command.com/cmd.exe에서의 작업역시 이벤트가 없기때문에 후킹할 수 없습니다.
yshkorea님이 쉘이나 그와 비슷한 프로그램을 짜야 원하는 일을 할 수 있을 것 같군요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
아 그렇군요...
그렇다면 콘솔에서 키보드 누르는 것 탐지하려면(키로거) 어찌 해야하는거죠?
혹은 콘솔 화면에 출력되는 데이터는 어떻게 잡아낼수있나요?
아 어렵네요...윈도우만 하다가..ㅜ.ㅜ
===============================
"yshkorea" 죽을만큼 노력했는가? 그만큼 간절했는가?
"yshkorea" 죽을만큼 노력했는가? 그만큼 간절했는가?
X를 띄우지 않은 까만
X를 띄우지 않은 까만 콘솔화면에서 키보드 등의 이벤트(커널내부에서는 이벤트로 처리하죠)를 가로채려면... 디바이스 드라이버를 짜야하지 안을까 합니다. 현재 PC에 달린 키보드, 마우스 등의 이벤트를 모두 볼 수 있을껍니다.
어플리케이션에서 /dev/input/* 등의 노드를 읽어보는걸로도 모니터링은 가능하지 않을까 합니다. 우째우째하면 같은 노드를 이용해 이벤트를 임의로 생성해 집어넣을 수도 있었던거 같습니다.
후킹까지는 아니지만
후킹까지는 아니지만 LD_PRELOAD같은 환경변수를 이용해서 특정함수를 강제로 다른 라이브러리에 있는 넘으로 교체가 가능합니다.
리눅스에서는 대부분 이벤트가 파일 또는 소켓 인터페이스로 전달되기 때문에 read/write 또는 send/recv만 잘 낚아서 처리하면 원하시는 작업을 처리할 수 있을 것 같습니다.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
박현우 씀: X를
박현우님이 말씀하신 것처럼 keyboard device driver쪽을 통해서 가능할 거 같습니다. linux kernel source tree 중 (Linux Source Tree)/drivers/char/keyboard.c 이 소스를 분석해보시면 될거 같네요.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
멀티유저가 가상의
멀티유저가 가상의 터미널로 접속한 상황에서
특정 유저가 하는 작업을 모니터링 하고자 하시는거 같은데
이런경우에는 가상터미널쪽을 살펴보셔야 합니다.
drivers/char/pty.c를 기본으로 분석해 보시기 바랍니다.
키보드 후킹은 콘솔만 모니터링이 가능하겠죠?
/***********************
* while(1) sleep(INFINITE);
***********************/
/***********************
* while(1) sleep(INFINITE);
***********************/
아래사이트에서 여기 글을 링크했지만, 위 질문에 대한 설명이 있는 것 같습니다.
http://robot.kaist.ac.kr/~kimsk/blog/word/36
댓글 달기