노트북 도난방지 1112

2008. 11. 13. 00:51
중간고사때문에 거의 보름동안 코딩을 못하다가
게으름이 버릇되서 계속 안하다가 ...
이번주부터 다시 시작이다.

각각 따로 만들던 키로거 프로그램이랑 노트북 도난방지 프로그램 소스를 합쳤다.
메인폼에 키로거 소스를 억지로 쑤셔넣었었는데
원래 디자인했던 메인폼을 수정하고, 좀 다듬으면서 이제 좀 자연스러워졌다.

그리고 이제 정상적인 방법이 아닌 강제로 프로그램이 종료되었을 때와
정상적으로 사용자가 프로그램을 종료시켰을 때를 구분하기 위해
따로 파일을 만들어서 0과 1로 구분하여 기록해놓기로 했다.
그리고 최근에 기록한 ID, PASSWORD도 기록해놓았다가
프로그램 실행때 다 불러와서 초기설정을 유동적으로 잡을 수 있도록.



이제 조금, 아주 조금은 끝이 보이는 것 같기도 ... 아닌 것 같기도...
아직 갈길이 먼가보다.

박상근 프로그래밍/Laptop Guard

FTP 서버 운영 하기 - vsftpd

2008. 11. 11. 03:17
FTP 서버를 돌리기 위해 vsftpd 라는 프로그램을 설치하기로 했다.
뭐 이것 말고도 다른 여러 FTP 서버 프로그램들이 있었지만 그냥 요즘 이게 많이 쓰이는것 같길래 ㅋ

vsftpd 설치 : sudo apt-get install vsftpd 
vsftpd 설정 : sudo gedit /etc/vsftpd.conf

<주요 설정 변경 내용 : YES, NO 선택후 해당 줄의 주석(#) 제거>

# anonymous 사용자의 접속 허용 여부 (default = YES)
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES
# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022
# FTP 서버 접속할 때 환영 메시지 (default = vsFTPd 버전번호)
ftpd_banner=Welcome to blah FTP service.
# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
chroot_local_user=YES

설정 변경 후 vsftpd 재시작 : sudo /etc/init.d/vsftpd restart

------------------------------------------------------------------------------------------------------------------

vsftpd.conf 파일의 내용 중에

# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES

라는 부분이 있어서 포트번호가 20으로 설정되어 있는 것이라고 생각해서
20 을 21 로 바꿔버렸더니 ftp접속이 안되었다.
이것때문에 /etc/services 파일도 수정하고, 공유기 ftp설정도 바꾸고, 포트포워딩이랑 DMZ설정도 바꿔보고
생 난리를 치면서 이렇게 새벽 3시가 넘어까지 잠을 못자고 있는걸 생각하면 울화가 치민다 -_-

virtualBox로 WindowsXP에서 알FTP로 접속을 해보니 접속은 잘 되나
한글로 된 디렉토리/파일 이름이 깨져서 나왔다. 알FTP 에서는 어쩔 수 없고
다른 FTP접속 프로그램인 FileZilla 를 설치/실행하고 나서
메뉴의 파일 - 사이트 관리자에서 FTP서버를 추가한 후 문자셋 설정탭에서 UTF-8로 강제설정 을 선택하면
FTP서버에 접속해도 한글이 깨지지 않고 잘 나온다.

박상근 리눅스

apache2, 계정별 웹 디렉토리 설정

2008. 11. 5. 21:27
/etc/apache2/mods-available/ 에 있는 userdir.conf, userdir.load 두 파일을
/etc/apache2/mods-enabled/ 에 복사해 넣는다.

그리고 apache2를 재부팅한다
sudo /etc/init.d/apache2 restart

각 계정은 이제 홈디렉토리에 public_html 폴더를 만들고,
이 안에 index.html 파일을 만들면 http://IP/~계정ID로 웹페이지를 볼 수 있다.

박상근 리눅스

APM 설치하기 + apache2 한글인코딩

2008. 11. 3. 02:40
APM = APACHE + PHP + MYSQL

웹서버 설정을 해보자!

Apache 설치 : $sudo apt-get install apache2
MYSQL 인증 : $sudo apt-get install libapache2-mod-auth-mysql
MYSQL: $sudo apt-get install mysql-server mysql-client
PHP5 : $sudo apt-get install php5-common php5 libapache2-mod-php5
PHP - MySQL 연동 : $sudo apt-get install php5-mysql

아파치 웹서버를 재시작 : $sudo /etc/init.d/apache2 restart
MYSQL 재시작 : $sudo /etc/init.d/mysql restart

아파치 기본 설정 파일 위치 : /etc/apache2/apache2.conf
MYSQL 기본 설정 파일 위치 : /etc/mysql/my.cnf

PS..
apache2 를 설치하고서 /var/www 안에 index.html 파일을 만들어서
http://localhost 에 확인을 해보니 한글이 다 깨져나왔다.
이를 바꾸기 위해서~

$sudo /etc/apache2/apache2.conf
이렇게 설정 파일을 연 후 맨 아랫줄에
AddDefaultCharSet off
를 추가해준다.

박상근 리눅스

VirtualBox2.0 USB 인식하기

2008. 10. 31. 01:43

이번에 우분투에서 WInXP를 써볼까하여 VMware와 VirtualBox 둘 중 고민하다가
예전에 한번 VirtualBox를 써본 기억이 있어서 그냥 한번 써본 익숙함을 쫓아

VirtualBox를 선택.

이것저것 하드디스크용량이나 램용량 등의 옵션지정이 끝나고
설정에서 "USB 하위시스템에 접근할 수 없습니다 ......" 라는 에러메시지창이 떠버렸다!

구글링 결과

$ sudo gedit /etc/init.d/mountdevsubfs.sh 를 수행해서

아래 부분을 찾는다.
    # Magic to make /proc/bus/usb work
    #
    #mkdir -p /dev/bus/usb/.usbfs
    #domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
    #ln -s .usbfs/devices /dev/bus/usb/devices
    #mount --rbind /dev/bus/usb /proc/bus/usb

여기서 아래에서 처럼, 네 줄의 주석 표시 #을 없애버리면 해결 완료!!
    # Magic to make /proc/bus/usb work
    #
    mkdir -p /dev/bus/usb/.usbfs
    domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
    ln -s .usbfs/devices /dev/bus/usb/devices
    mount --rbind /dev/bus/usb /proc/bus/usb

 

 

 

박상근 리눅스

우분투 패널 복구하기

2008. 10. 26. 08:46
패널 좀 내 입맛에 좀 맞춰보려고 이리저리 손보다가
실수로 패널을 통째로 날려버렸다.

뭐 다시 빈패널 만들고 추가하면 되겠지 라고 생각했느데
갑자기 처음부터 만들려니

처음 기본 설정이 기억이 안난다.
파폭이 있었고, 에볼루션메일이랑... 그리고 뭐 네트워크아이콘.
또 시계도 있어야겠고... 아, 젠장할 ㅠ_ㅠ

혹시나 해서 패널 복구를 검색해서 찾아보니
터미널에서 단 세줄의 명령으로 복구하는 방법이 나와있다

gconftool-2 --shutdown
rm -rf ~/.gconf/apps/panel
pkill gnome-panel

바로 복구가 되는구나.

이제 맘놓고 내맘대로 바꿔봐야지 ㅋㅋㅋ


박상근 리눅스

네이트온 한글입력

2008. 10. 26. 06:21
리눅스용 네이트온을 설치한게 몇달 전인것같다.
그런데 최근에 알았다. 내 네이트온에서 한글입력이 안된다는 것을 ... 후덜덜

scim의 문제가 아니라 그냥 아예 한글이 안된다
내 데스크탑에서는 한글입력 잘되는데 왜 여기선 난리인지.

갑자기 친구에게서 쪽지가왔다.
"공부하나"

...푸하하. 그럴리가
그냥 삽질하고있는거지.
"I cant write KOR. i'm on LINUX NATEO. shit"

친절한 친구님께서 나와의 대화를 위해
친절이 리눅스 네이트온 한글입력 해결에 관한
수많은 URL들을 날려주셨다.

scim-qtimm 패키지를 설치하면 바로 해결된다.

sudo apt-get install scim-qtimm

박상근 리눅스

scim 미작동 해결

2008. 10. 26. 05:41
노트북에서 scim의 한영키, 한자키 적용때문에 헤매던게 엊그제.
분명 이 문제를 고치긴 했는데
이제는 어떤 때는 한영키로 한영 전환이 되고
어떤 때는 한영키로 한영 전환이 되질 않는 현상이 남아있었다.

예전에 데스크탑에 우분투 8.04 설치했을땐 이렇지 않았는데.
새로 밀기에는 시간이 아깝고, 어떻게는 해결보고싶어서 구글링~ 구글링~

찾았다!

/etc/X11/xorg.conf 파일을 열어서 초반부에 Section "InputDevice" 을 보면
Option "XkbLayout" "us" 로 된 부분이 있다. 이 us를 kr로 바꿔주자.
그럼 아주 간단히 해결~

우왕ㅋ굳ㅋ

박상근 리눅스

노트북 우분투에서 한영키 적용하기

2008. 10. 22. 19:36
노트북에 우분투를 설치해놓고 방치해두다가
이번에 유닉스 수업의 리눅스 활용과제때문에 간만에 부팅을 했다.

scim으로 한영키, 한자키 설정을 했음에도 불구하고
키가 먹히지 않아서 마우스로 직접 scim을 클릭해가면서 한영 전환을 해야했는데

키보드 설정도 바꿔보고, 키배치도 바꿔보고
온갖 삽질을 해도 안되다가

구글에 "노트북 우분투 한영키" 를 검색했더니
맨 처음 나오는 블로그에서 바로 해결법을 찾았다 -_-

터미널에서 xev로 내 한영키와 한자키의 키코드값을 알아내고.
내 계정의 폴더 (home/pskalyber) 안에다가
.Xmodmap 파일을 만들고 아래내용을 입력/저장.

keycode 113 = Hangul
keycode 109 = Hangul_Hanja

이제 우분투를 재부팅하면 .Xmodmap 파일을 읽어드릴 것인지 묻는데
읽어들임을 확인하고 나니 한영키, 한자키가 자연스럽게 사용가능하구나

아하하하~


박상근 리눅스

노트북 도난방지 1014

2008. 10. 14. 20:23

간만에 코딩한번 해보자 싶어서 VS를 켰다가
실행 한번 시켜보았는데 전에 분명 막아놨던 Ctrl+Alt+Del 키가 뚫려있었다.
전에 분명 막았었는데... 내가 소스를 날렸나...

아하!
예전에 이거 막아놓고 나니까 컴이 좀 이상해 진것같아서 레지스트리를 수정해서
무조건 열려있도록 설정해놓았던게 기억이 났다.

그럼 아예 C#으로 레지스트리를 수정하는 방식으로
Ctrl+Alt+Del 을 막거나 열 수 있지 않을까?!

        public void LockCtrlAltDel()
        {
            RegistryKey reg=Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System");
            reg.SetValue("DisableTaskMgr", 1, RegistryValueKind.DWord); // 1 : LOCK
        }

        public void UnLockCtrlAltDel()
        {
            RegistryKey reg = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System");
            reg.SetValue("DisableTaskMgr", 0, RegistryValueKind.DWord); // 2 : LOCK
        }


후훗,
역시 방법은 있었다.
이렇게 하니 깔끔하다.
실행과 동시에 LOCK걸었다가 비밀번호 맞춰서 끌땐 UNLOCK

이걸로 오늘도 하나 배운거다.

박상근 프로그래밍/Laptop Guard

노트북 도난방지 1010

2008. 10. 11. 01:42

SMTP를 이용해서 메일을 보내는걸 대체 어떻게 구현해야 하나 싶은 막연함에
코딩에 흥미도 조금 떨어지고 정신적으로 많이 헤이헤져 있었다.

선배한테 C#으로 메일보낼려면 뭘 알아봐야겠냐고 물으니 TCP/IP, 소켓 관련해서
알아보면 금방 찾을 수 있다고 하시더라.
푸헐헐... 그걸 공부하라고?! 이 작은 기능 하나 구현하기위해? ㅠ_ㅠ

한 이틀 손놓고 있다가 갑자기 오늘 필이 와서 하루종일 구글링하면서 컴앞에 앉아있었다.
거의 다 구현되있는 소스에 내가 엉뚱한 smtp주소를 집어넣어놓고서
괜한 것들만 계속 수정+수정+수정+수정+수정...

결국은 몇시간만의 삽질 끝에 성공했다.

이제 키로그 저장된 값을 바로 메일로 보낼 수 있도록 구현만 하면 될 것같다.
으하하하

박상근 프로그래밍/Laptop Guard

노트북 도난방지 1006

2008. 10. 7. 01:41

낄낄낄
ASP 파일처리 리포트를 하고 난 후라 그런지 ... 소스가 좀 친숙한 듯
DateTime.Now 로 기록 시간을 기록하고
Dns.GetHostName() 으로 호스트이름도 기록하고
Dns.GetHostAddresses(...) 로 IP주소도 기록했다.

이정도면 상콤함?! 낄낄낄, 테스트도 성공적이다.
벌써 시간이 새벽 2시가 다되가네.
이왕 늦은김에 남은 리포트들이나 다 해버려야겠다.

박상근 프로그래밍/Laptop Guard

노트북 도난방지 1004

2008. 10. 5. 18:57

최대한 내가 필요로 하는 것과 비슷한 전역 후킹 소스를 찾았다
http://www.codeproject.com/KB/cs/globalhook.aspx
내가 필요한건 따로 txt파일로 저장하는 기능인데
이건 따로 저장만 안한다 뿐이지, 키값들을 계속 텍스트상자에 보여주길래
얼씨구 싶어서 바로 다운로드!!!

VS 2008 로 열어서 csproj 파일을 sin으로 바꾸고 실행해보니,
음 괜찮다. 이걸 txt에 저장하도록 바꾸고, 폼을 안보이게 하고
잘 눈치 못채게 숨기면 될 것같다.

일단 소스를 옮긴 다음에 조금씩 바꿔볼려고
VS 2008 에서 새 프로젝트를 만들어서 소스를 그대로 옮겨왔는데,
왠걸...
SetWindowsHookEx(...)으로 값을 할당받은 Hmouse 변수의 값이 변화가 없다.
SetWindowsHookEx()...가 먹히지 않는다.
도대체 뭐가 문제인지.
소스를 그대로 옮겨왔는데도 불구하고...OTL

괜히 이것저것 고쳐보고 하다가 시간만 흘러가고ㅠ_ㅠ
오늘은 그냥 여기까지만 하고 체념할때즈음에
저 소스를 구했던 곳의 Q&A를 보니 누군가가
How to make debugging work in VS2008 (express) with these hook?
이렇게 질문해놓은 글을 보았다.
그리고 그에 대한 친절한 답변.

The answer is simple: 
0: Copy UserActivityHook.cs to your project, add an instance of the UserActivityHook object, set up the event handlers, enter Debug mode, and waste a couple of hours trying to fix the Win32Exceptions thrown on lines 538 and 562 before coming back to this site and seeing this solution.
1: Go to the project properties page (right-click the project name and select properties)
2: Go to the Debug tab and uncheck "Enable the Visual Studios hosting process"
3: Realize that the ctrl and alt keys map to Keys.LControlKey, Keys.RControlKey, Keys.LMenu, and Keys.RMenu, since you're now able to see the results of each of your key presses. (It really makes a lot more sense, now that I can see how Windows is managing each of the keys... Just wasn't obvious before.  )


으하하
이렇게 난 해결을 보고야 말았다.
좋구나, 조금씩 조금씩 완성에 다가가는 이 느낌♬

박상근 프로그래밍/Laptop Guard

노트북 도난방지 1002

2008. 10. 2. 11:44
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/827af007-daf9-4136-9d20-f364d71df2ae/



이리저리 C#에서 CtrlAltDel, AltF4, AltTab 키 막을려고 후킹소스를 뒤지는데
검색결과마다 어느 한 소스를 두고, 이게 제대로 실행이 안된다는 내용들의 글이었다.
그 소스를 구해서 해보니 CtrlAltDel기능만 막히고 AltTab이랑 Win키는 못막아지더라.
짧은 영어 실력으로 다른 사람들의 Answer, Reply을 읽어가면서 찾던도중
ㅋ ㅑ ~
드디어 찾았다. 그리고 ... 내 프로그램에 적용시켰다. 성공이다.
이것때문에 거의 일주일을 헤맸는데 ( 뭐 그동안 놀고 먹느라 바쁘기도 했지만 )

기존에 구했던 소스랑 똑같은데 대체 어디가 조금 달라서 기능이 실행된건지
수업 듣고 와서 저녁먹고 한번 찾아봐야겠다.


어제 헌혈해서, 착한일 했다고 상받은건가. 낄낄낄

박상근 프로그래밍/Laptop Guard

노트북 도난방지 0930

2008. 9. 30. 23:08
private void ScreenSaver_FormClosing(object sender, FormClosingEventArgs e)
{

e.Cancel = true;
base.OnClosing(e);
}

AlT+F4, ALT+TAB, CTLR + ESC, Windows 키를 막으려고 이리저리 검색했는데
FormClosing 이벤트로 Alt+F4 가 안막히게 구현하는 방법을 찾았다.
원래 내가 의도한건 키보드 키 자체를 안먹히게 하는거였는데.

이제 나머지 다른 키들을 인식안되게 하려고 하다가
어느 외국 사이트에서 Alt+Tab에 관한 소스를 찾았다.
그래서 신나게 소스 적용하고보니...
ALT+Tab 을 막은게 아니라 AlT+Tab 했을때 나오는 아이콘들 중에
내가 지정한 프로그램의 아이콘이 안나오게 하는 소스였다 -_-

[DllImport("user32.dll")] public static extern int SetWindowLong(IntPtr window, int index, int value); [DllImport("user32.dll")] public static extern int GetWindowLong(IntPtr window, int index); const int GWL_EXSTYLE = -20; const int WS_EX_TOOLWINDOW = 0x00000080; const int WS_EX_APPWINDOW = 0x00040000;


//Calling after InitializeComponent, or form load events int windowStyle = GetWindowLong(this.Handle, GWL_EXSTYLE);
SetWindowLong(this.Handle, GWL_EXSTYLE, windowStyle | TOOLWINDOW);


휴우 빨리 키 막기 기능 넣고나서
다음 기능들을 추가해야하는데 ㅠ_ㅠ
늘 삽질의 연속이군하~

박상근 프로그래밍/Laptop Guard

노트북 도난방지 0929

2008. 9. 29. 22:58

 private void ScreenSaver_KeyDown(object sender, KeyEventArgs e)
 {

            if (e.KeyCode == Keys.F4)
                e.SuppressKeyPress = true;

            // 이거 안되네 젠장할
            if (e.KeyCode == Keys.LWin)
                e.SuppressKeyPress = true;

            if (e.KeyCode == Keys.Menu)
                e.SuppressKeyPress = true;

            // 탭키가 왜 후킹이 안되지 망할
            if (e.KeyValue == 9)
                e.SuppressKeyPress = true;
}

ALT + TAB 이랑 ALT+F4 랑 windows키 를 막으려고
e.KeyCode=null 을 했더니만 읽기전용속성이라는...ㅠ_ㅠ

그래서 어찌 어찌 지속적인 삽질끝에
e.SuppressKeyPress=true 를 했더니 성공 ㅋㅋ

그런데 이상하게 windows 키랑 tab 키는 안막아진다.
탭키를 KeyCode가 아닌 KeyValue로 해서 조건 잡아도
그냥 탭키는 잘 작동하고만다.

왜일까...

쩝, 그래도 ALT+F4 는 막았다.

한단계씩~

박상근 프로그래밍/Laptop Guard

노트북 도난방지 0928

2008. 9. 28. 23:19
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using WaveLib.AudioMixer;
namespace MyProgram
{
public partial class ScreenSaver : Form
{

public ScreenSaver()
{
InitializeComponent();
}

private void ScreenSaver_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.Equals(Keys.Space))
{
MessageBox.Show("키보드 누르지마");
}
}

private void bt_enter_Click(object sender, EventArgs e)
{
if (tb_ckPw.Text.Equals(Main.pwd))
{
this.Dispose();
}
else ScreenSaver_Activated(sender, e);
}

private void ScreenSaver_Activated(object sender, EventArgs e)
{
SoundPlay sp = new SoundPlay();
MyMessageFilter mf = new MyMessageFilter();

Mixers mixers = new Mixers();
mixers.Playback.Lines.GetMixerFirstLineByComponentType(MIXERLINE_COMPONENTTYPE.DST_SPEAKERS).Volume = 50000;

Timer.Start();

if (Main.temp_Cb_Power)
{
if (SystemInformation.PowerStatus.PowerLineStatus.ToString() == "Offline")
{
sp.SoundPlayer();
Timer.Stop();
}
}

if (Main.temp_Cb_USB)
{
Application.AddMessageFilter(mf);
}

if (Main.temp_Cb_Typing)
{
}
}

private void Timer_Tick(object sender, EventArgs e)
{
ScreenSaver_Activated(sender, e);
}

private void ScreenSaver_Deactivate(object sender, EventArgs e)
{
SoundPlay sound_Stop = new SoundPlay();
sound_Stop.SoundStop();
}
}
}



기본적인 폼의 형태를 대충 갖추고,
전원장치와 USB의 해제에 대한 경고음 이벤트까지 대충 완성했다


Timer.Stop()의 위치와 유무때문에 전원해제에 대한 이벤트가 제대로 먹히지 않아서 삽질했다
이렇게 하고나서 코드들을 보니, 아... 말로만 듣던 스파게티 소스가 이런것인가 싶다.
오디오 제어 관련 소스는 하다하다 못해서
그냥 공개된 다른 이의 소스 프로젝트를 그대로 첨부해서 쓰고있고-_-
주석은 한줄도 없이 막코딩하다보니 이제 슬슬 내가 헷갈려가기도 한다.
얼른 코드 더 길어지기 전에 주석도 달고 스파게티도 좀 풀어야지

아직 갈길이 멀다.
웹카메라도 활용해야하고, 된다면 로그기록까지 남도록해야하는데
휴우~

영어랑 학과공부까지 생각하니 막막~하구나 

박상근 프로그래밍/Laptop Guard