홍가일보
2017년 09월 23일 09시
제5379호

일면 | BBS | BLOG | KB | PHOTO | ABOUT_ME

PROJECT 제가 관심있어 하는 분야들입니다. 제 개인적 욕심으로 그냥 버리기도 아깝고 해서 나름대로 정리한것들인데 부족하지만 재밌게 봐주시길.
   + DEVICE DRIVER PROGRAMMING 2003.9.1 마지막수정
   + WINDOWS PROGRAMMING 2003.9.1 마지막수정
   + HACKING 2003.9.1 마지막수정

DEVICE DRIVER PROGRAMMING

  • 프로그램명 : Sample Device Driver - 계산기
  • 개발환경 : Visual C++ 6.0, Windows 2000, DDK, SDK
  • 기본지식 : 기본 개념 Device Driver, C/C++
       실제 장치를 컨트롤하는 드라이버는 아니고 2개의 숫자를 입력받아 더해서 되돌려주는 기능을 하는 프로그램이다.
    INF 파일을 작성하여 설치하여야 하지만 OsrLoader라는 프로그램을 사용하여 간단하게 드라이버를 설치할수 있다.
    INF 파일을 만드는것이 상당히 번거롭기 때문에 우선은 이 프로그램을 사용하여 개발하는 것도 괜찮다. OSRloader라는 프로그램 말고도 드라이버를 자동으로 로드하여 주는 프로그램이 많이 있으니 다른것을 사용하여도 무방하다. 그런다음 드라이버를 이용한 테스트 프로그램을 실행하면 왼쪽그림 처럼 2개의 숫자를 넣을수 있는데 임의의 2개 숫자를 넣고 계산을 누르면 계산된 결과를 보여주는 간단한 프로그램이다.
    디바이스 드라이버의 기본적인 골격이므로 처음 디바이스 드라이버를 공부하는데 많은 도움이 되리라 본다. 또한 계산기 테스트용 프로그램을 참고하면 디바이스 드라이버를 어떻게 이용하는지도 보아 두는것도 좋다.
  • Link 및 자료 :
    실행파일
    다운받기
    소스파일 다운받기
    OSRLOADER 다운받기

  • 프로그램명 : PRINTER DRIVER
  • 개발환경 : Visual C++ 6.0, Windows 2000, DDK
  • 기본지식 : UniDriver, GPD, PCL command, Printer Architecture
      윈도우 2000에 와서는 MS에서는 Universal Driver라는 것을 제공(DDK내 printer 폴더 참조)하는데 GPD 라는 파일을 이용하여 간단하게 작성할수 있도록 하고 있다.
    Printer Driver는 OS와 밀접하게 연관되어 실행되기 때문에 그 구조가 다른 드라이버와는 다소 다르고 복잡하다.
    Printer Driver는 UI(User Interface부분 담당)과 UNI(주로 이미지처리, Rendering)로 이루어져 있으면 그외에 부분(Spooler, port 등)이 있다.
    자세한 내용은 다른 게시판에 언급하고 간단한 Sample 예제를 제공하겠다.
  • Link 및 자료 :
    사실 이부분에 대한 자료는 거의 전무하다. 각 개발사가 핵심부분의 공개를 꺼릴뿐더러 또한 공개 되어서도 안되는 부분이기 때문이다.
    가장 좋은 자료는 역시 DDK문서와 예제밖에 없다.
    프로젝트가 끝나면 가급적 빠른 시일안에 링크를 걸겠다.


  • 프로그램명 : PARALLER PORT DRIVER
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : Device Driver, Paraller Port
    여기저기 수소문 끝에 사진 왼쪽같은 테스트 보드를 구해서 패러럴 포트를 통한 IO를 위한 간단한 포트 드라이버를 만들기 시작했다.
    CreateFile을 사용하여 LPT1으로 직접 데이타를 전송하여도 되지만 이번에는 드라이버를 작성하여 LPT1 포트로 데이타를 직접 전송하도록 하였다.
    ReadFile이나 WriteFile명령어를 사용하지 않고 IOCTL을 이용하여 BUFFERED METHOD 방법을 사용하여 DeviceIoControl이란 명령어를 통해 직접 Read,Write를 구현하였다.
  • Link 및 자료 :


  • 프로그램명 : ISA Interface Card Driver
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : Device Driver, ISA interface card
    다음에 제작하려고 하는건 ISA 카드의 디바이스 드라이버로 이 카드를 통해 위의 테스트 장비를 제어하려고 한다. 사실 PCI 카드도 공부하려고 여기저기 알아 보았지만 가격이 비싸서 사실 힘들꺼 같아 ISA를 택했다.
    시간이 너무 너무 부족하다. 할껀 많은데 ^^;
  • Link 및 자료 :


    WINDOWS PROGRAMMING

  • 프로그램명 : IP Messenger
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : 네트워크, MFC
    원작자는 SHIROUZU라는 일본사람인데 내부 네트워크상에서 메세지 및 파일전송이 가능하고 폴더를 통째로 전송도 가능하다.
    우연히 알게되었는데 프로그램이 꽤 쓸만하고 Open Source이기 때문에 소스가 공개되어 있다. 하지만 프로그램이 다소 복잡하게 되어있어 분석하기가 만만치 않다. 그래도 이것저것 살펴보면 도움되는게 많을듯 싶다.
    한글로 번역만 해서 링크를 걸겠다.







  • Link 및 자료 :
    실행파일
    다운받기
    소스파일 다운받기

  • 프로그램명 : BATTLE TETRIS
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : 비트맵구조, 메모리 비트맵
    Win32 API로만으로 만든 1인용과 2인용이 가능한 배틀 테트리스이다. 1인 플레이시는 일반 테트리스와 다를바 없지만 2인 플레이시는 한줄을 없애면 다른 플레이어에게 그 한줄이 새로 생기므로 서로 경쟁하듯 테트리스를 즐길수 있다.
    Application for windows의 뒷부분에 나와있는 메세지 크래커를 사용하면 Win32 API를 좀 더 쉽게 사용할수 있다. Thread를 사용하지 않고 타이머를 이용하여 키입력을 받았으며 비트맵처리 루틴을 유심히 살펴보면 많은 도움이 될듯 하다.


  • Link 및 자료 :
    실행파일
    다운받기
    소스파일 다운받기

  • 프로그램명 : BITMAP VIEWER
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : 비트맵구조, 어셈블러
    비트맵을 공부하기 위해 만든 API 프로그램이다. 흑백,256칼라,24비트칼라의 비트맵을 불러올수 있으며 회전, 역상, 좌우대칭등이 가능하다. 특히 비트맵 처리하는 부분을 어셈블러를 사용하였으므로 참고하시길 바란다. API에서 어셈블러를 사용하는건 그리 어렵지 않다. API는 Jeffrey Richter의 Message Cracker를 사용하였다. Programming Applications 를 한번 읽어보시길...

  • Link 및 자료 :
    실행파일
    다운받기
    소스파일 다운받기

  • 프로그램명 : 회원관리
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : Linked List, Quick Sort
    Console에서 동장하는 회원관리 프로그램이다. UI가 없어 너무도 간단하다. 이름, 나이등 정도만 입력할수 있고 저장, 불러오기, 소트등이 가능하다. 자료는 링크드 리스트로 처리하였고 저장은 DB를 사용하지 않고 파일로 저장한다.
    정렬은 C에서 지원하는 퀵소트를 사용하여 이름, 나이 어떠한 것으로도 정렬이 가능하게 하였다.


  • Link 및 자료 :
    실행파일
    다운받기
    소스파일 다운받기

    HACKING

  • 프로그램명 : INTRUSION DECTECTION SYSTEM
  • 개발환경 : Visual C++ 6.0, Windows 2000
  • 기본지식 : IDS, 해킹
    IDS는 Intrusion Detection System(침입탐지시스템)의 약자로, 단순한 접근 제어 기능을 넘어서 침입의 패턴 데이터베이스와 Expert System을 사용해 네트워크나 시스템의 사용을 실시간 모니터링하고 침입을 탐지하는 보안 시스템이다.IDS는 허가되지 않은 사용자로부터 접속, 정보의 조작, 오용, 남용 등 컴퓨터 시스템 또는 네트워크 상에서 시도됐거나 진행 중인 불법적인 예방에 실패한 경우 취할 수 있는 방법으로 의심스러운 행위를 감시하여 가능한 침입자를 조기에 발견하고 실시간 처리를 목적으로 하는 시스템이다.
    비트교육센터에서 수료하기전에 3개월 동안 수행했던 프로젝트였는데 경험이나 지식이 부족했던 터라 만들고 난 결과에 만족하지 못했다. 하지만 나름대로 네트워크에 대한 많은 공부를 할수 있었다.
    IDS엔진(리눅스용 snort를 윈도우용으로 포팅), 미니방화벽(IP차단)과 이를 관리하고 제어하는 ESM으로 크게 3부분으로 나누어 구현하였는데 상업용에 비하면 초라하지만 DOS공격, 코드레드, 스캔에 대해서는 탐지가 가능하다. 그밖에 호환성을 위해 BEEP라는 표준화된 XML문서로 상호연동을 시도했다..
    오른쪽 그림은 IDS 탐지 엔진을 그래픽 UI로 컨트롤 하는 화면이다. 먼저 ESM에 로그온을 한다음 다양한 옵션을 선택하면 왼쪽 아래창에 보이는 것과 같이 경고 메시지를 MiniFireWall로 보내주며 E-mail 주소가 설정되어 있으면 E-mail로도 경고 메시지를 보내준다. 경고 메세지를 받은 방화벽은 메시지내에 포함되어 있는 IP주소를 차단함으로써 불법적인 공격으로부터 서버를 보호한다. 각 IP는 DB에 저장되어 따로 관리할 수 있도록 되어 있다.
    ESM에서는 원격으로 IDS와 MiniFireWall을 조작할 수 있도록 하였다. 일단 ON/OFF 만이 가능하다.
    자세한 내용은
    비트프로젝트 81호를 참고하시길 바랍니다.

  • Link 및 자료 :


    본 홈페이지는 COPYLEFT로 정보의 독점을 거부하고 정보를 공유하자는 뜻을 가지고 있습니다.
    (단 일부 저작권 표기를 명시한것은 예외로 합니다.)
    COPYLEFT (c) 2012 홍가일보 ALL RIGHTS UNRESERVED