2008년 6월 18일 수요일

ATI Theater 모드 사용 시 (듀얼 디스플레이 구성 시 TV 출력)

Window Meadia Player Classic이나 곰 플레이어 등과 같이 DirectShow 비디오 출력을 변경할 수 있는 비디오 재생 프로그램에서 오버레이를

1. Overlay Mixer
2. Video Renderer 나 VMR7 (windowed mode)
3. VMR7 (rederless mode), VMR9 (windowed mode) 또는 VMR9 (renderless mode)

세 가지 중 하나를 선택하는 것에 따라서 2차 디스플레이에 출력되는 오버레이 화면의 성격이 달라집니다.

1. Overlay Mixer를 선택하였을 경우에는 비디오 재생 프로그램에서 출력되고 있는 오버레이 화면이 2차 디스플레이 장치에 전체화면으로 출력됩니다. 또한 오버레이 화면이 1차 디스플레이 장치 상에 전혀 보이지 않게 되는 경우에도 2차 디스플레이 장치에는 오버레이 화면이 전체화면으로 출력됩니다. 즉, a) 재생 프로그램이 다른 윈도우에 의해 가려지거나; b) 재생 프로그램의 위치를 이동 시키거나; 또는 c) 재생 프로그램을 최소화 시킴으로써; 오버레이 화면이 보이지 않게되는 것에 상관없이 2차 디스플레이 장치에는 오버레이 화면이 전체화면으로 표시됩니다.

2. Video Renderer 나 VMR7 (windowed mode)를 선택하였을 경우에는 비디오 재생 프로그램에서 출력되고 있는 오버레이 화면이 2차 디스플레이 장치에 전체화면으로 출력됩니다. 그러나 오버레이 화면이 1차 디스플레이 장치 상에 전혀 보이지 않게 되는 경우에는 2차 디스플레이 장치의 전체화면이 사라지면서 1차 디스플레이 장치와 똑같은 화면이 출력되게 됩니다. 즉, a) 재생 프로그램이 다른 윈도우에 의해 가려지거나; b) 재생 프로그램의 위치를 이동 시키거나; 또는 c) 재생 프로그램을 최소화 시킴으로써; 오버레이 화면이 보이지 않게되는 순간에 Theater 모드가 해제되면서 2차 디스플레이 장치에 1차 디스플레이 장치의 화면이 그대로 출력되게 됩니다.

3. VMR7 (rederless mode), VMR9 (windowed mode) 또는 VMR9 (renderless mode)을 선택하는 경우에는 Theater 모드가 전혀 동작을 하지 않습니다. 즉 2차 디스플레이 장치에는 오버레이 화면이 아닌 1차 디스플레이 장치의 화면이 그대로 출력됩니다.

Window Media Player Classic 에서는 Option >> Playback >> Output >> DirectShow Vidoe 에서 설정을 변경할 수 있고 곰 플레이어에서는 환경 설정 >> 영상 >> 영상 출력 >> 출력 방식에서 설정을 변경 할 수 있습니다.

듀얼 디스플레이 사용 시에는 1번 Overlay Mixer를 사용하는게 영화 감상하면서 웹서핑이나 간단한 문서작업을 하는데 편리합니다. 재생 프로그램이 가려지지 않도록 윈도우 크기나 위치를 변경하느라 전전긍긍할 필요가 없게됩니다.

아마 다른 그래픽 카드에서도 ATI Theater 모드와 유사한 오버레이 옵션을 사용 시 똑같이 적용되리라 생각됩니다.

그런데 최신의 VMR(Video Mixiing Renderer)에 출력하는게 더욱 좋은 화질을 얻을 수 있다고 들었던 것 같은데 그렇다면 왜 그런지 그리고 VMR에서도 Theater 모드가 동작할 수 있는 방법이 있는지 등등을 잘 아시는 분 조언 부탁드립니다. 

2008년 6월 17일 화요일

리눅스 방화벽 프로그램 iptables 설정

리눅스 방화벽 프로그램 iptables 설정

iptables 명령은LOBD리눅스 IPv4 방화벽을07M4설정하는DWIY명령어이다. 1.1 시리즈 부터 리눅스 커널은LOBD패킷 필터링을07M4포함하기 시작했다.
제 1세대는DWIYBSD의 ipfw를47EH기본으로 했고 1994년 후반기에 알란 콕스(Alan Cox) 에 의해서 포트 됐다.
이것은LOBD리눅스 2.0에서 Jos Vos와 다른이들에 의해서 개선됐고 커널의 필터링 규칙을07M4제어하는DWIY사용자 툴로는DWIY'ipfwadm'이Y6WZ사용됐다.
1998년 중반에 리눅스 2.2를47EH위해 사용자 툴로 'ipchains'를47EH내놓았다. 마지막으로, 제 4세대 툴이Y6WZ'iptables'이고 리눅스 2.4를47EH위해 1999년 중반에 커널을07M4재작성했다.

<리눅스매거진 편집부>

패킷 필터란 네트워크를47EH통하는DWIY모든 것은LOBD패킷의 형태를47EH가지며, 패킷의 앞부분에는DWIY패킷이Y6WZ어디서 왔는지 어디로 향하는지, 어떤 프로토콜을07M4이용하는지 등과 같은LOBD정보를47EH가지고 있다. 패킷 필터는DWIY이렇게 지나가는DWIY패킷의 헤더를47EH보고 패킷을07M4‘DROP'(마치 전혀 전달되지 않는DWIY것처럼 패킷을07M4거부) 하거나 ’ACCEPT‘(패킷이Y6WZ지나가도록 내버려 둠)하는DWIY등의 작업을07M4하는DWIY프로그램을07M4말한다. iptables은LOBD이런 패킷 필터링 기능을07M4설정하는데 사용할 수 있는DWIY프로그램이다. 자신의 시스템에 설치돼 있는DWIYiptables의 버전을07M4확인하는DWIY방법은LOBD아래명령을07M4통해 가능하다.


# iptables --version

iptables 1.2.4


커널은LOBD3가지의 방화벽 체인(chain)을07M4기본적으로 가지고 패킷 필터링을07M4시작한다. 파이어월 체인 혹은LOBD체인이라 부르는DWIYY6WZ3가지는DWIY입력(Input), 출력(Output), 전달(Forward)이다. 입력체인은LOBD들어오는DWIY패킷을07M4조사하고 전달체인은LOBD외부의 다른 시스템으로 전달될 패킷을07M4조사한다. 마지막으로 출력체인은LOBD외부로 나가는DWIY패킷을07M4조사한다.

■ 패킷검사방법

1. 패킷이Y6WZ커널에 도착하면 그 패킷의 목적지를47EH확인한다. 이것을07M4'라우팅' 이라고 한다.
2. 패킷의 목적지가ZCW0이곳이면, 패킷은LOBD전달돼 입력체인에 도달한다. 패킷이Y6WZ입력체 인을07M4통과하면 패킷을07M4기다리고 있던 프로세서가ZCW0받게 된다.
3. 그렇지 않고 커널이Y6WZ포워딩 불능이나, 패킷을07M4어떻게 포워딩해야 하는가를47EH알지 못하면, 그 패킷은LOBD‘DROP‘ 된다. 포워딩이Y6WZ가능하게 돼있고 다른 곳이Y6WZ목적지이면 패킷은LOBD그림의 오른쪽 방향으로 전달돼 포워딩 체인으로 간다. 이Y6WZ체인이Y6WZ’ ACCEPT‘ 하게 되면 이것은LOBD포워딩 할 네트워크로 보내진다.
4. 마지막으로, 로컬에서 수행하던 프로그램은LOBD네트워크 패킷을07M4전송할 수 있다. 이Y6WZ패킷은LOBD즉시 출력 체인에 보내지며 이Y6WZ체인이Y6WZ‘ACCEPT’되면 이Y6WZ패킷은LOBD그 목적지가ZCW0어디든지 보내진다.


사용법
iptables -[ADC] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -P chain target [options]
iptables -h (print help information)


Commands
-A : 새로운 규칙을07M4추가한다.(--append)
-D : 규칙을07M4삭제한다.(--delete)
-C : 패킷을07M4테스트한다.(--check)
-R : 새로운 규칙으로 교체한다.(--replace)
-I : 새로운 규칙을07M4삽입한다.(--insert)
-L : chain에 설정된 규칙을07M4출력한다.(--list)
-F : chain으로부터 규칙을07M4모두 방출(삭제)한다.(--flush)
-Z : 모든 chain의 패킷과 바이트 카운터 값을07M40으로 만든다.(--zero)
-N : 새로운 chain을07M4만든다.(--new)
-X : chain을07M4삭제한다.(--delete-chain)
-P : 기본정책을07M4변경한다.(--policy)


chain
INPUT : 입력에 대한 사용
OUTPUT : 출력에 대한 사용
FORWARD : 전달(forwarding)에 대한 사용


Options
-s : 패킷의 발신지를47EH명시한다.(--source)
-p : 패킷의 프로토콜을07M4명시한다.(--protocol)
-d : 패킷의 도착지를47EH명시한다.(--destination)
-i : 규칙을07M4적용할 인터페이스 이름을07M4명시한다.(--interface)
-j : 규칙에 맛는DWIY패킷을07M4어떻게 처리할 것인가를47EH명시한다.(-jump)
-y : 접속 요청 패킷인 SYN패킷을07M4허용하지 않는다.(--syn)
-f : 두 번째 이후의 조각에 대해서 규칙을07M4명시한다.(--fragment)


사용예
127.0.0.1 IP 주소로부터 오는DWIY모든 ICMP 패킷을07M4무시하는DWIY경우 사용되는DWIY프로토콜은LOBDICMP이고 발신 주소는DWIY127.0.0.1 이어야 한다. 그리고 패킷 필터의 목표는DWIY드롭(DROP)이다. 테스트하는DWIY프로그램은LOBDping이며 ping은LOBD단순히 ICMP type 8로 반응요구를47EH보내며 이에 협조하는DWIY대상 호스트는DWIYICMP 타입 0(echo reply)를47EH보내어 응답하도록 돼 있다. 이제 iptables의 패킷필터를47EH통해 로컬호스트가ZCW0ping 명령에 반응하지 않도록 하겠다.


# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
  --- 127.0.0.1 ping statistics ---

  1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms


# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
     ; `INPUT' 체인에 127.0.0.1로부터 오고(`-s 127.0.0.1') ICMP(`-p ICMP') 패킷에 대해 DROP로 점프하라는DWIY(`-j DROP') 규칙을07M4추가(-A).

# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes
  --- 127.0.0.1 ping statistics ---

  1 packets transmitted, 0 packets received, 100% packet loss


■ 설정된 iptables 규칙의 삭제
지금 현재 입력돼 있는DWIYchain이Y6WZ하나밖에 없으므로 숫자를47EH지정하는DWIY명령으로 삭제가ZCW0가능하며, 앞의 명령과 똑같이Y6WZ하되 -A를47EH-D로 바꾸어 지우는DWIY방법이Y6WZ있다.

#iptables -D INPUT 1
#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP


■ 체인 규칙 나열하기
설정돼 있는DWIY체인의 규칙을07M4모두 볼 수 있다. 명령으로 -L을07M4사용해 가능하며 -v 옵션과 같이Y6WZ사용해 각 체인에 대한 패킷과 바이트 카운터 등의 자세한 정보를47EH함께 볼 수 있다.

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# iptables -L -v

Chain INPUT (policy ACCEPT 709 packets, 35362 bytes)

pkts bytes target     prot opt in       out     source                       destination

  0     0 DROP       icmp --  any    any     localhost.localdomain   anywhere




Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in       out     source               destination

Chain OUTPUT (policy ACCEPT 423 packets, 39549 bytes)

pkts bytes target     prot opt in       out     source               destination      



■ 체인 비우기
하나의 체인 안의 모든 규칙을07M4비우는DWIY것은LOBD‘-F’ 명령을07M4사용해 간단하게 할 수 있다. 체인을07M4지정하지 않으면 모든 체인의 규칙을07M4지울 수 있다.

#iptables -F INPUT


■ 출처와 목적지 지정
출처('-s', '--source', '--src')와 목적지('-d', '--destination', '--dst') IP 주소를47EH지정하는데 4가지 방법이Y6WZ있다. 가장 보편적인 방법
LOBD'www.linuzine.com', 'localhost'처럼 도메인 네임을07M4이용하는DWIY것이다. 두번째 방법은LOBD'127.0.0.1'과 같은LOBDIP 주소를47EH이용하는DWIY것이다.

세번째와 네번째 방법은LOBDIP 주소의 그룹을07M4지정하는DWIY것으로 '199.95.207.0/24' 또는DWIY'199.95.207.0/255.255.255.0' 같은LOBD형태이다. 이Y6WZ둘은LOBD모두 199.95.207.0 부터 199.95.207.255 사이의 모든 IP 주소를47EH지정한다. '/' 다음의 숫자는DWIYIP 주소의 어떤 부분이Y6WZ의미 있는가를47EH나타낸다. '/32' 나 '/255.255.255.255' 가ZCW0기본 값이다.(IP 주소의 모든 부분이Y6WZ일치해야 한다.) 모든 IP 주소를47EH지정하는데 '/0' 가ZCW0사용된다.

# iptables -A INPUT -s 0/0 -j DROP
많은LOBD지시자들('-s'나 '-d' 같은)은LOBD일치하지 않는DWIY주소를47EH나타내기 위해 '!'('not'을07M4의미한다)로 시작하는DWIY설정을07M4할 수 있다. 예로, '-s !localhost' 는DWIYlocalhost로부터 오는DWIY패킷이Y6WZ아닌 경우를47EH나타낸다.

■ 프로토콜 지정
프로토콜은LOBD'-p' 지시자로 지정할 수 있다. 프로토콜을07M4숫자가ZCW0될 수 있고(IP의 프로토콜 번호를47EH알고 있다면) 'TCP', 'UDP', 'ICMP' 같은LOBD이름이Y6WZ될 수도 있다. 그리고 'tcp'는DWIY'TCP'와 같은LOBD역할을07M4한다. 프로토콜 이름 지정에도 '!'을07M4이용 할 수 있다. '-p ! TCP'

■ TCP 확장
TCP 확장은LOBD'--protocol tcp' 가ZCW0지정되고 다른 적용이Y6WZ지정되지 않으면 자동으로 적재된다. 이것은LOBD다음과 같은LOBD옵션을07M4제공한다.

--tcp-flags
뒤에 두개의 단어를47EH사용한다. 첫번째 것은LOBD검사하고자 하는DWIY지시자 리스트의 마스크이다. 두번째 단어는DWIY지시자에게 어떤 것이Y6WZ설정 될 것인지를47EH말해준다.

# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
이것은LOBD모든것이Y6WZ검사돼야 함을07M4말한다. 그러나 SYN과 ACK만 설정된다.


--syn
'!' 옵션이Y6WZ선행될 수 있다. 이것은LOBD'--tcp-flags SYN,RST,ACK,SYN'의 약어이Y6WZ다.

--source-port,
'!' 옵션이Y6WZ선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를47EH지정한다.

--sport
/etc/services 에 기록된 것과 같은LOBD포트 이름이Y6WZ사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는DWIY두 개의 포트 이름을07M4'-'으로 연결해서 사용하거나 하나의 포트 뒤에 '-'를47EH사용하거나 하나의 포트 앞에 '-' 를47EH덧붙일 수 있다.

--destination-port, --dport
위의 내용과 같으나 목적지를47EH지정한다.

--tcp-option
'!' 나 숫자가ZCW0옵션에 선행될 수 있는데 숫자가ZCW0앞에 올 경우 그 숫자 와 TCP 옵션이Y6WZ같은LOBD경우의 패킷을07M4검사한다. TCP 옵션을07M4검사하려 할 때 완전한 TCP 헤더를47EH갖지 않는DWIY것은LOBD자동으로 드롭 된다.


■ iptables를47EH통한 포트관리
iptables는DWIY테이블 형식으로 관리를47EH한다. 그리고 먼저 등록된 것이Y6WZ효력을07M4발생하기 때문에 등록을07M4하는DWIY순서가ZCW0중요하다. 모든 것을07M4거부하는DWIY설정이Y6WZ먼저 오게 되면 그 이후에 포트를47EH열어주는DWIY설정이Y6WZ와도 효과가ZCW0없다. 그러므로 허용하는DWIY정책이Y6WZ먼저 오고 나서 거부하는DWIY정책이Y6WZ와야 한다.

iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 22:30 -j DROP

이렇게 하면 먼저 25번 포트로 들어오는DWIY것을07M4허용하고 난 후에 다른 것을07M4막아내기 때문에 제대로 된 설정이Y6WZ된다.

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
등록된 라인은LOBDssh를47EH사용하는DWIY것을07M4허용하는DWIY것이다. 출처(source)와 목적지(destination)는DWIY명시하지 않았기 때문에 전체포트와 IP가ZCW0대상이Y6WZ된다. -dport 는DWIY패킷이Y6WZ대상으로 삼는DWIY포트를47EH명시한 것이다 여기에서 22라고 표기한 것은LOBDssh서비스 포트이다. 그리고 마지막에 -j ACCEPT는DWIY허용하도록 정책을07M4정하는DWIY것이다. 따라서 여기로의 ssh서비스를47EH요청하는DWIY패킷은LOBD허용되도록 설정을07M4한 것이다.


■ 전체적인 설정
#!/bin/sh
# iptables 모듈 등록하기
modprobe iptable_filter

# ssh 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# httpd 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# pop3 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 109 -j ACCEPT

# pop2 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT

# imap 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT

# mysqld 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# ftpd 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# ftp-data 열기
/usr/local/bin/iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# ircd 열어주기
/usr/local/bin/iptables -A INPUT -p tcp --dport 6667 -j ACCEPT
/usr/local/bin/iptables -A INPUT -p udp --dport 6667 -j ACCEPT

# 전부 거절하기
/usr/local/bin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP

/usr/local/bin/iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

이처럼 허용하는DWIY서비스가ZCW0한정적이다. 우선 ssh, http, pop3, pop2, imap, mysql, ftp, ircd를47EH위해서 서비스를47EH요청하는DWIY패킷은LOBD허용하고 나머지는DWIY전부 거부하는DWIY설정이다. 이Y6WZ설정을07M4자세히 보면 tcp와 icmp를47EH대상으로 했다. 거절하는DWIY줄인

/usr/local/bin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP


Y6WZ라인에서 --dport 다음에 1:30000으로 지정돼 있다. 이Y6WZ부분은LOBD서버를47EH경유해서 다른 곳으로 가고자하는DWIY경우에 클라이언트 프로그램이Y6WZ사용할 포트를47EH남겨주기 위함이다. 1번포트에서 30000번 포트까지는DWIY완전히 tcp에 대해서 막는DWIY것이다.
만약에 서버에서 나갈 이유가ZCW0없으면 전부 막으면 된다. 1:65535로 설정하면 전체 포트가ZCW0막힌다. iptables 설정은LOBD조금만 공부를47EH하면 쉽게 습득이Y6WZ가능하다. 그러므로 문서를47EH보는DWIY것이Y6WZ중요하다. 이Y6WZ설정은LOBD기본이므로 좀더 많은LOBD것은LOBD관련 문서를47EH이용하기를47EH바란다.

[외부망으로 나가는DWIY경우의 설정]

 

1. IPTABLE의 설정(Linux Kernel 2.4)
/sbin/iptables -F
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


참고)

ip_conntrack_ftp와 ip_nat_ftp 는DWIYftp서비스 open을07M4위해서 설정한 것이다.

만일 기존 Linux에 ipchain이Y6WZ드라이버가ZCW0이미 Loading되어 있다면 기존 ipchain 드라이버를

제거하고 iptables driver를47EHLoading한다.

Linux:/> rmmod ipchains

Linux:/> insmod ip_tables


2. IPCHAIN의 설정 방법(Linux Kernel 2.2)
1) 1st IPCHAIN의 설정 방법

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -F
/sbin/ipchains -P forward REJECT
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ


2) 2nd IPCHAIN의 설정 방법
/sbin/ipchains -F
/sbin/ipchains -P forward DENY
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0/0


3. 자동으로 실행되기

Linux에서 /etc/rc.local에 위에 있는DWIY내용을07M4넣어둔다. 그러면 자동으로 등록이Y6WZ된다.


4. 설정값 확인하기

Linux:/> iptables -t nat -L


  tcp 프로토콜을07M4사용하여 들어오는DWIY패킷들중에 Buy Now 라는DWIY문구가ZCW0포함된 패킷은LOBD거부하고, 리셋한다.
  iptables -A INPUT -p tcp -m string --string "Buy Now" -j REJECT --reject-with tcp-reset
 만약 로그를47EH남기고 거부하고 싶다면.

  iptables -A INPUT -p tcp -m string --string "Buy Now" -j LOG
  iptables -A INPUT -p tcp -m string --string "Buy Now" -j REJECT --reject-with tcp-reset

 

출처 : http://cafe.naver.com/okjsp/279

 

 

http://wiki.kldp.org/Translations//html/Packet_Filtering-KLDP/Packet_Filtering-KLDP-7.html

 

 

※ Advanced Firewall
   : Rule Matching
     -> source IP address(-s)
        Destiation IP address(-d)
        Incoming interface(-i) 예) eth0, eth1, eth2 등등   = -s 10.1.1.0/24 와 같은뜻인데... 좀 더 간단하게 쓰고 싶으면..-i 옵션을07M4사용한다.
        Outgoing interface(-o) : 어디를47EH통해서 나가겠느냐...
        Layer 4 protocol(-p) : -p [tcp/udp]
        negation -block all traffic not sourced from 192.168.1.20
        => /sbin/iptables -A INPUT -s! 192.168.1.20 -j DROP : 여기서 !는DWIYnot의 의미이다.(부정)
           -> 192.168.1.20을07M4제외한 모든것을07M4DROP시키겠다라는DWIY뜻이다.

   host기반의 방화벽은LOBD랜카드가ZCW01개가ZCW0필요한다. network기반의 방화벽은LOBD랜카드가ZCW0여러개가ZCW0필요하다.

※ mail server, web server, DNS server 같은것들은LOBD내부망으로 되어 있는데 보안상 위험하기 때문에 외부망으로 연결되게끔 분리해놓는다.
   이렇게 외부망으로 분리해놓은LOBD것들을07M4DMZ라고 한다.

※ TCP(Layer 4(Transport)) MATCHES : 연결지향적이다.
   : -p tcp, --protocol tcp
     --sport, --source-port -> 1024 ~ 65535 사이의 값 이용
     --dport 23/telnet(/etc/services), --destination-port : 숫자 대신에 문자를47EH쓰고 싶을때 해당위치에 있는곳의 절대경로를47EH적어줘야 한다.
     --tcp-flags SYN, FIN, ACK SYN, ACK : 이것보다는DWIY상태추적을07M4많이Y6WZ사용하게 된다.

※ UDP(Layer 4(Transport)) MATCHES : 연결없이Y6WZ데이터를47EH전송받는다. 무조건 보내기만 한다.
   : UDP Application 
     -> TFTP -UDP:69
        Syslog -UDP:514
        NTP(Network Time Protocol) -UDP:123
        DHCP -UDP:67 UDP:68
 
     -p udp, --protocol udp
     --sport, --source-port, -same source port as destination port : source port가ZCW0destination port가ZCW0똑같다. => UDP일경우에...
     --dport 123/ntp(/etc/services), --destination-port : destination port를47EH쓸때는DWIY숫자를47EH많이Y6WZ이용하게 된다.

※ ICMP(Internet Control Messaging Protocol) MATCHES
   : ICMP Types (echo-request -PING, echo-reply -pong)

     -p icmp, --protocol icmp
     --icmp-type name/number
     Deny ICMP echo-replies from all hosts
     -> /sbin/iptables -A INPUT -p icmp-type echo-reply -j DROP
 
     => work 컴이Y6WZserv 컴한테 echo-request를47EH보내게 되면 serv 컴은LOBDwork 컴한테 echo-reply를47EH보내게 된다.


실습!!!!

serv 컴에서...
만약 예전에 설정했던 정책을07M4저장하고 싶으면 iptables-save > default.rules
iptables -F
iptables -nL
iptables -P INPUT ACCEPT
iptables -nL


문제...
serv 컴퓨터에서 외부의 ping에 응답하지 않도록 하며, 또한 자신도 외부로 ping 요청을07M4하지 못하도록 설정하세요!~!!~~

iptables -A OUTPUT -p icmp -icmp-type echo-request -j DROP
iptables -nL
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -nL

work 컴에서...
ping -c 3 serv -> ping이Y6WZ안나가게 된다.

*********************************************************************************************************************************************


※ Match multiple port with fewer rules
   : 일반적 정책(rule) 설정
     -> iptables -A INPUT -p tcp --dport 21 -j ACCEPT
        iptables -A INPUT -p tcp --dport 22 -j ACCEPT
        iptables -A INPUT -p tcp --dport 23 -j ACCEPT

     이렇게 여러줄을07M4한줄로 표현할수가ZCW0있다.
   
     Multiple port 를47EH이용
     -> -m multiport --dport port_num1, port_num2, port_num3...
        iptables -I INPUT 1 -p tcp -m multiport --dport 21, 22, 23 -j ACCEPT


예전에 저장했던것을07M4불러오고 싶으면 ... -> iptables-restore < default.rules


※ MAC address filtering
   : IP 주소는DWIY쉽게 위조가능
     MAC의 위조는DWIY어렵다...
     -m mac, --mac-source 00:00:00:00:00:00(mac address) 처음 24비트는DWIY제조사 일련번호 다음 24비트는DWIY제품 일련번호이다.

※ iptables -F INPUT
   iptables -nL
   iptables -P INPUT ACCEPT
   clear && iptables -nL
   iptables -A INPUT -s 192.168.234.20 -j DROP
   clear && iptables -nL
  
   work 컴에서...
   ping -c 2 serv -> 접속이Y6WZ안됨.
   ftp serv -> 접속이Y6WZ안됨.
   telnet serv -> 접속이Y6WZ안됨.
   vi /etc/sysconfig/network-scripts/ifcfg-eth0 -> ipaddress를47EH30으로 수정...
   service network restart

   ping -c 2 serv -> 접속이Y6WZ잘 됨.
   ftp serv -> 접속이Y6WZ잘 됨.
   telnet serv -> 접속이Y6WZ잘 됨.

   이것이Y6WZ문제가ZCW0된다... ip만 바꾸면 쉽게 접근을07M4할수가ZCW0있다.
   그렇기 때문에 MAC address를47EH알아서 그것을07M4막아버려야 한다. 이것을07M4알기 위해서는DWIYlog를47EH봐야한다.

   iptables -R INPUT 1 -m mac --mac-source 00:0C:29:4E:93:E5 -j DROP
   => 이렇게 mac address를47EHfiltering하게 되면 유용하게 사용할수가ZCW0있다.


※ Rule Targets
   : ACCEPT : 접근을07M4허용하겠다.
     DROP : 메시지를47EH전혀 보내주지 않는다.
     REJECT : 메시지를47EH보내주긴 하는데 전혀 다른 응답을07M4하게된다.
     REDIRECT : 이것은LOBDproxy 서버에서 사용하게 될것이다. 내가ZCW0갈려고 하는DWIY곳의 경로가ZCW0바뀌게 되는것을07M4REDIRECT라고 한다.
                NAT table 의 PREROUTING chain을07M4적용하게 된다. 오직 local ports에서만 적용이Y6WZ된다.
                proxy server를47EH사용하게 되면 filtering이Y6WZ가능하게 된다.
                normal proxy를47EH사용하게 되면 귀찮기 때문에 투명 proxy를47EH사용하는것이Y6WZ편리하다. -> REDIRECT를47EH사용...
     LOG : SysLog를47EH사용해서 log를47EH저장할수가ZCW0있다.
           아무것도 설정을07M4안해주면 기본적으로 /var/log/message에 저장이Y6WZ된다.


vi /etc/syslog.conf
서비스명 : 레벨 : 저장되는DWIY위치 -> *.info;mail.none;authpriv.none;cron.none /var/log/messages

log를47EH언제든지 볼수 있도록 화일로 저장하는것이Y6WZ좋다.
우선 기존의 것을07M4복사한뒤...
#kern.*  /dev/console 을07M4복사해서... kern.* /var/log/firewall.log을07M4더 추가해준다. ### modified by jun 2006-06-21 ###

service syslog restart
echo $?
ls -l /var/log/firewall.log
cat /var/log/firewall.log
clear && iptables -nL
iptables -D INPUT 1
clear && iptables -nL
iptables -P INPUT DROP
clear && iptables -nL
iptables -A INPUT -p tcp --dport 23 -j LOG -> 23번의 port로 들어오는것의 log 기록을07M4남기겠다.
clear && iptables -nL
iptables -A INPUT -s 192.168.234.20 -p tcp --dport 23 -j ACCEPT
clear && iptables -nL
tail -5 /var/log/firewall.log
watch tail -5 /var/log/firewall.log


문제....
21, 22, 23, 80번의 port 이외의 서비스들은LOBD모두다 log에 기록이Y6WZ남게 끔 하시오~!!!!
21, 22, 23 서비스 이외의 접속기록을07M4log로 남기세요... 힌트 : multiport, ! , log Target

iptables -A INPUT -m multiport -p tcp !--dport 21, 22, 23 -j LOG

*********************************************************************************************************************************************

※ Firewall LOG
   : /etc/syslog.conf를47EH이용한 log위치 재지정
     -> 기본값으로 /var/log/message에 저장
        kern.*  /var/log/firewall 로 수정
        service syslog restart

     Log-prefix
     -> Log 기록에 코멘트 첨부
        --log-prefix "unknown port attemped..."


serv 컴에서...
iptables -R INPUT 1 -m multiport -p tcp ! --dport 21,22,23 -j LOG --log-prefix "unknown port attemped..."


※ Portsentry
   : Portsentry는DWIYhost기반 침입탐지 시스템으로 열려있는DWIY모든 포트를47EH모니터링 할 수 있는DWIY특징을07M4가지고 있으면 TCP/UDP 포트스캔을07M4
     탐지할 수 있고 포트스캔 공격을07M4받았을07M4경우 방화벽과 연동하여 보안 정책을07M4새롭게 재구성 할 수 있다.

    특징
    1) 호스트로 들어오는DWIY모든 패킷을07M4ROUTE명령으로 DROP 시킬수 있음
    2) Xinetd 기반의 서비스에 접근하지 못하도록  /etc/

    download 위치
    :
http://rpm.pbone.net/ -> portsentry 검색 -> fedora 4 download -> 밑으로... Portsentry-1.2.1.te.i386.rpm -> download
    => serv 컴에서...
       rpm -Uvh Portsentry-1.2-1.te.i386.rpm
       rpm -ql Portsentry -> /etc/Portsentry/Portsentry.conf를47EH확인...
       cd /etc/Portsentry/
       pwd
       ls -l
       vi Portsentry.conf -> : set nu
       -> 96번째 행에서... RESOLVE_HOST = "1"을07M4RESOLVE_HOST = "0"으로 수정... : 이름풀이가ZCW0가능하게 할것인지 말것인지를47EH결정...
          132번째 행과 133번째 행이Y6WZ중요하다. => BLOCK_UDP="1" , BLOCK_TCP="1" -> 그냥 그대로...
          206번째 행에서 보면 #KILL_ROUTE="/sbin/iptables -I input -s $TARGET$ -j DROP
          282번째 행에서...SCAN_TRIGGER="2"을07M4SCAN_TRIGGER="0"으로 수정... :  2초후에 반응하라...을07M4즉각처리로...


    설치후 파일
    1) portsentry -portsentry 실행파일
    2) Portsentry.conf - 환경설정 파일
    3) Portsentry.history - 현재까지 거부된 모든 host 정보 저장
    4) Portsentry.ignore - 감시예외 파일
                           감시하고 있는DWIY특정 포트에 접근해도 무시하길 바라는DWIYhost ip주소를47EH추가


iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT -> 외부에서 ssh 접속만 허용이Y6WZ되게한다.
clear && iptables -nL
which portsentry -> /usr/sbin/portsentry
portsentry -stcp
echo $?
ps -ef | grep -i port -> 자동적으로 UDP까지 같이Y6WZ실행되고 있는것을07M4볼수가ZCW0있다.


work 컴에서...
ssh serv -> 잘되는것을07M4볼수가ZCW0있다.
exit
nmap -v -sS -O(운영체제 확인) serv
nmap -v -sS -O(운영체제 확인) 192.168.234.10
---> 이것이Y6WZ작동이Y6WZ안할것이다. 왜냐하면 x window 때문이다.
     그렇기때문에 text모드로 시작을07M4해야한다.
     ps -ef | grep -i port
     kill 9 1358
     kill 9 2698 등등
     shutdown -r now(재시작) - text모드로...


serv 컴에서...
portsentry -stcp
ps -ef | grep -i port
service iptables start
iptables -nL


work 컴에서...
nmap -v sS -O 192.168.234.10

serv 컴에서...
cat portsentry.blocked.stcp가ZCW0들어와 있어야 한다.

   



※ Portsentry 실행모드
   : Portsentry는DWIY스캔 공격자가ZCW0스캔을07M4하기 위해 사용하는DWIY

 

 

2008년 6월 10일 화요일

2위로 내려 앉은 슈퍼컴퓨터 'IBM 블루진/L' - 1초당 1000조번 연산시대…IBM 로드러너 공개

  

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


세계 최고속 슈퍼컴 ‘IBM 블루진/L’보다 2배 빨라 AMD 옵테론과 셀 BE 섞어 ‘하이브리드형’ 설계

페타플롭스(PetaFlops, PFLOP), 1초당 1000조(兆)번의 수학 연산처리를 뜻하는 꿈의 단위가 마침내 현실이 됐다. 1996년 테라(tera, 1조)급 슈퍼컴퓨터 시대가 처음 열린 지 12년 만의 쾌거다.

“미군이 보유하게 된 IBM 슈퍼컴퓨터 ‘로드러너(Roadrunner)’가 초당 1026조번 이상의 연산을 수행할 수 있게 되면서 페타플롭스 시대를 열게 됐다”고 뉴욕타임스(NYT) 인터넷판이 9일 보도했다. 로드러너란 뉴멕시코 주를 상징하는 뻐꾸기과(科) 새의 일종이다.

내려받기
- 500대 슈퍼컴 리스트 XML 파일 문서 내려받기
- 500대 슈퍼컴 리스트 PDF 파일 문서 내려받기
- 500대 슈퍼컴 리스트 엑셀(XLS) 파일 문서

로드러너의 연산 속도는 초당 1026조번으로, 전 세계 '슈퍼컴퓨터 톱500'(http://www.top500.org)에서 최고 자리를 지키고 있던 IBM 블루진/L(BluGene/L)의 478테라플롭스(TeraFlops) 보다 두 배 이상 빠른 수준이다. 블루진/L은 현재 캘리포니아에 위치한 ‘로렌스 리버모어 국립 연구소’(Lawrence Livermore National Laboratory)에 설치돼 있다.

이에 따라 1초에 1000의 6승(乘)까지 계산이 가능한 엑사플롭스(Exaflops)급 슈퍼컴퓨터 출현도 시간문제가 될 가능성이 커졌다. 과학자들은 10년 이내 엑사급 구현이 가능할 것으로 내다보고 있다.

◆AMD 옵테론과 셀 BE 섞어 구현…美 핵무기 등 관리

총 1억3300만 달러가 투입된 이 컴퓨터는 개량형 셀 브로드밴드엔진(Cell B.E.) 1만2960개에 일반 서버 환경에 맞춰져 있는 AMD 옵테론(Opteron) 중앙처리장치 다수를 섞어 만든 것이다. 집적된 CPU들의 연산 코어 총 수는 무려 11만6640개.

특히 소니의 플레이스테이션3 비디오 게임기에 장착되어 있는 연산장치와 AMD 옵테론을 병렬 사용해 하이브리드형으로 구현했다는 점이 인상적이다. 각 프로세서들의 특성을 고려, 각 연산 과정에 최적화된 프로세서를 교차해 적용하도록 한 것이다.

이에 따라 이종(異種) CPU를 효율적으로 공동 제어하기 위해 특수 설계된 세 종류의 프로그램이 더 필요하다. 로드러너의 소비 전력량은 약 300메가와트로, 대형 쇼핑센터를 하나 운영할 만큼의 전기를 소비한다.

뉴욕타임스는 국립핵보장기구(National Nuclear Security Administration) 토마스 다고스티노(Thomas P. D’Agostino) 박사의 말을 인용, “지구상 60억 사람들이 수동식 계산기를 이용해 하루 24시간씩 1주일 내내 계산한다면 46년이 걸리는 연산 작업을 로드러너는 단 하루 만에 끝낼 수 있다”고 묘사했다.

다만 이 컴퓨터는 군용으로 설계됐기 때문에 일반 과학자들이 연구 활동에 사용할 수는 없다. IBM과 국립핵연구소인 로스 알라모스 국립연구소(Department of Energy’s Los Alamos National Laboratory, LANL) 연구진이 공동 개발한 이 슈퍼컴퓨터는 미군 비축 핵무기 관리 등에 활용한다는 계획이다.

IBM(http://www-03.ibm.com/servers/deepcomputing)은 이번 달 독일 하이델베르그에서 열리는 국제 슈퍼컴퓨터 콘퍼런스(International Supercomputer Conference, http://www.supercomp.de)에서 로드러너 탄생을 일반에 공식 발표할 예정이다.


 

2008년 6월 9일 월요일

hx4700 관련 : VGA에 관한 정리 (WM6)

출처 : 하이엔트 PDA (네이버 카페)

1. 그렇다면 우리 hx4700 은 VGA 라면서 왜 처음 키면 해상도가 qVGA(320 * 240) 인가?

운영체제로 사용되고 있는 Windows Mobile 의 각종 버젼에서 지원하는 기본 해상도도 qVGA 밖에는 지원하지 않고 있습니다.

(WM5 가 나와도 이는 크게 달라지지 않을 것이라 생각합니다.)

따라서 기기 자체의 성능(하드웨어 적인 성능)은 VGA 를 지원하지만, 소프트웨어(O/S)가 그를 따라가지 못하고 있기 때문에 기본적으로 VGA 를 지원한다고 하더라도 부가적인 소프트웨어를 설치하지 않고서는 VGA 의 해상도를 사용하지 못하는 것입니다.

물론 HP Asset View 를 보면 해상도는 480 * 640 이라고 나옵니다.

하지만, 더블 픽셀링이라는 방법을 사용해서 각종 아이콘의 크기를 키워놓았기 때문에 우리가 생각하는 VGA 를 사용하지 못하는 것입니다.

(HP 에 전화를 해도 해상도는 480 * 640 이라고 주장합니다. )

그리고 또한, Microsoft 의 Pocket PC 인증이라는 것이 있는 것으로 알고 있습니다.

Microsoft Pocket PC 의 인증이라는 절차를 거친 이후에야 Windows Mobile 혹은 Pocket PC 라는 이름을 붙일 수가 있는데,

이 인증을 받기 위한 조건중의 하나가 qVGA 해상도라고 알고 있습니다.

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


1. hx4700은 HW 적으로만 VGA이고 SW적으로는 QVGA인가?

아닙니다. hx4700은 HW 나 SW 적으로 모두 VGA 입니다. 흔히 생각하실 수 있는 잘못된 점 중에 하나가 hx4700의 초기 화면은 QVGA라고 생각하신다는 것입니다. 즉, HW적으로는 VGA를 지원하지만 SW적으로 지원을 안하기 때문에 Pixel doubling을 사용하여 VGA화면에 QVGA를 표시하신다고 생각하십니다.
하지만, 실제로 hx4700의 초기 화면은 VGA입니다. QVGA의 pixel doubling이 아닙니다. 쉽게 구분할 수 있는 방법은 여러분들도 체험하셨겠지만, hx4700의 아이콘들이나 시작 메뉴를 보시면 입자가 아주 곱습니다. QVGA의 pixel doubling을  보신 분들은 아시겠지만, 글자나 이미지가 뭉게집니다. 만약 hx4700이 QVGA pixel doubling을 사용한다면 초기 화면 자체도 깔끔하기 나오지 않고 뭉게질 수 밖에 없습니다.

MS가 VGA를 지원하기 위해 사용한 방법이 있습니다. 바로 dpi 개념입니다. 이것은 dpi는 dot/inch 로서 1인치에 표시될 수 있는 점의 개수 입니다. 저희가 보통 사용하고 있는 PC나 PDA 모두 96dpi를 사용합니다.
PC에서 확인을 하실 수있는 방법은 바탕화면에서 오른쪽 마우스 클릭 -> 속성 -> 세팅 -> 고급 -> 일반 에 가보시면 나타납니다. MS에서 초기에 범한 실수 중의 하나가 PocketPC의 해상도를 QVGA로 고정시킨 데에 있습니다. VGA 기기들이 나오자 지원에 한계를 느끼기 시작한 MS에서 기발한 방법을 생각해 내었는데, 그게 바로 dpi를 변환 시키는 것입니다. 현재 96dpi로 되어 있는 것을 192dpi로 바꾸게 되면 해상도를 4배(가로 2배*세로 2배, 즉 QVGA->VGA)로  하는 것이 가능하다는 것입니다.
흔히들 말하면 일반 모드에서 레지스트리 에디트로 확인을 해보시면 이 사실을 알 수 있습니다.
hx4700의 레지스트리를 열어서 HKEY_LOCAL_MACHINE\Drivers\Display\GPE 에 들어가 보시면 LogicalPixelsX 와 LogicalPixelsY 값이 있습니다. 이 값이 모두 십진수 192 (16진수 C0)로 되어 있습니다.
이것이 무엇을 의미하는가 하면 기존의 96dpi의 QVGA를 192dpi로 바꾸면 VGA가 될 수 있는 것입니다. 같은 선상에 찍히는 dot의 수가 두배로 늘어나기 때문이죠.
위의 레지스트리의 LogicalPixelsX와 LogicalPixelsY를 96으로 바꾸신 다음 리셋을 해보시면, 재밌는 현상을 보실 수 있습니다. 흔히 우리가 말하면 Real VGA의 화면을 보실 수 있습니다.


2. MS가 96dpi VGA를 지원하지 않고 굳이 192dpi를 사용한 이유가 무엇일까?

다들 아시겠지만, Windows Mobile OS는 Windows CE의 customized 버전입니다. Windows CE는 범용 OS 이기 때문에, MS는 Windows CE에 여러가지 제약을 가함으로써 Windows Mobile OS를 만들어 내었습니다.
그 제약들은
1) 시작 메뉴의 크기
2) 메뉴 바의 크기
3) 해상도
4) 기타 등등
을 포함하고 있습니다. 여기서 96dpi VGA를 지원하게 되면 어떤 현상이 발생할까요? 바로 우리가 보는 Real VGA 형태의 모양이 나오게 됩니다. 즉 시작메뉴의 위아래 두께가 1/2로 줍니다.(예를 들면 시작 메뉴의 크기를 100 으로 주었을 때 320 길이에서의 100과 640 길이에서의 100은 그 비율이 다르죠) 마찬가지로 여러가지 부분에 있어서 모양 새가 바뀌어 지게 됩니다.
이는 MS가 원하는 바가 아닌 것으로 보입니다. MS는 Windows Mobile 용 어플리케이션들이 모든 PDA에서 동일한 인터페이스를 갖기를 원하는 것 같습니다. 따라서 기존의 레이아웃을 유지한 채로 VGA를 지원하기 위해서 dpi를 두배 높임으로써 이를 해결한 것입니다.

3. 특정 어플리케이션이 왜 pixel doubling 을 한 것(글자나 그림이 뭉게짐)으로 보일까?
어플리케이션이 VGA를 지원한다 함은 192dpi를 지원한다는 것입니다. 따라서 어플리케이션을 개발할 때도 이에 대한 처리를 해주어야 합니다.
만약 그냥 어플리케이션을 개발하게 된다면 자동적으로 96dpi로 인식을 하게 됩니다. Windows Mobile OS에서는 화면 자체가 192dpi로 되어 있을 경우 96dpi용으로 개발된 어플리케이션에 대해서 pixel doubling을 통해 표현하도록 강제하고 있습니다. 따라서 예전에 개발되어 192dpi에 대한 처리가 안되어 있는 어플리케이션들은 pixel doubling으로 뭉게지게 나타나는 것이죠.
최근에 나온 어플리케이션들은 이에 대한 처리를 모두 하고 있습니다. 따라서 화면에 pixel doubling을 사용하지 않고도 제대로 나오게 되는 거죠.
Pocket IE를 사용하시는 분들은 아시겠지만 Windows Mobile 2003 SE에 들어 있는 Pocket IE는 이미지를 처리할 때 192dpi로 처리를 하지 않고 무조건 96dpi로 처리를 합니다. 따라서 pixel doubling을 사용하기 때문에 그림이 뭉게집니다.

4. forceHires 나 adobe acrobat reader patch의 원리
forceHires를 보면 여러분들께서 일반 VGA 모드에서 Real VGA모드를 지원하게 바꾼다고 생각하시는데요. 사실은 그게 아닙니다. 사실은 이전에 개발되어 VGA를 지원하지 않는 프로그램의 실행파일에 VGA를 지원하는 루틴을 추가하는 방식입니다. 그렇게 함으로써 VGA를 지원하지 않는 어플리케이션을 VGA를 지원하는 어플리케이션 처럼 바꾸는 거죠. 다들 써보셔서 알겠지만, forceHires가 모든 어플리케이션에 성공적으로 적용되지는 않습니다. 어떤 어플리케이션은 화면의 1/4로 축소되서 나오기도 하고 그러죠. 그 이유는 VGA를 지원하는 루틴을 사용하게 되면 어플리케이션에서는 좌표값을 640*480을 기준으로 사용할 수 있습니다. 하지만 몇몇 어플리케이션은 기존의 QVGA용의 화면 크기인 320*240을 기준으로 좌표값을 잡아서 프로그램이 되어 있기 때문에 화면의 1/4만 나오게 되는 것입니다. 이에 대해 MS 측에서도 화면의 넓이나 높이를 특정 값(320,240) 으로 고정시켜 사용하지 말고 시스템 함수를 콜해서 얻어와서 사용하라고 권고하고 있습니다. 자료실에 보시는 acrobat reader VGA 패치의 경우 기존의 실행파일을 추출하여 거기에다 VGA 지원 루틴을 추가한 것 뿐 입니다. adobe reader의 경우 프로그램을 만들 때 화면의 넓이와 높이를 고정 값으로 사용하지 않고 시스템에서 얻어오는 방식을 사용했기 때문에 이 VGA 루틴이 추가되더라도 제대로 작동을 하는 것입니다.

5. Real VGA의 작동 원리
Real VGA라고 하는 부분은 사실 아주 간단한 변경으로 가능한 부분입니다. 즉 위에서 설명 드렸던 레지스트리의 LogicalPixelsX와 LogicalPixelsY 값을 96으로 바꾸기만 하면 되는 것이죠. 문제는 hx4700이 192dpi 전용으로 나온 모델이기 때문에 96dpi를 사용하는 리소스(아이콘, 등등)이 없습니다. 또한 입력기 역시 192dpi를 기준으로 제작이 되었기 때문에 96dpi 모드로 바꿀 경우에 입력기 상에서도 문제가 발생합니다. 제가 테스트 해본 바로는 입력기에 문제가 발생하게 되면 탐색기나 Pocket IE의 동작에도 이상이 생기게 됩니다. SE_VGA와 같은 프로그램이 하는 일은 위에서 설명드린 레지스트리를 변경하는 부분 이외에도 96dpi를 지원하는 리소스들을 hx4700에 설치를 해주는 것입니다. 따라서 96dpi인 Real VGA 모드 상에서도 아이콘과 같은 부분이 깨지지 않고 나오게 되는 것이죠. Windows Mobile에서 기본으로 제공하는 Today Plugin 중에 배터리,메모리 정보가 나오는 패널이 있는데, Real VGA 상에서 그 패널을 보면 아이콘이 크게 나와서 깨져 보이는 경우가 있습니다. 이는 SE_VGA에서 그 패널용 리소스를 설치하지 않았기 때문에 그런 현상이 발생하는 것입니다.
하지만,Windows Mobile OS 자체가 화면의 넓이와 높이를 시스템에서 얻어오는 방식으로 되어 있기 때문에, 96dpi로 바뀌더라도 화면이 1/4만 나오거나 하지는 않고 죽 늘어난 형태로 보여주게 되는 것입니다.
Real VGA 상에서 Pocket IE를 사용하면 그림들이 뭉게지지 않고 잘 나옵니다. 그 이유가 뭘까요? 이것은 당연한 결과 입니다. 왜냐면 Real VGA가 화면의 dpi를 96dpi로 바꾸었기 때문에, 내부적으로 96dpi로 이미지를 처리하는 Pocket IE가 pixel doubling을 사용하지 않기 때문이죠.

결론
1. hx4700은 H/W, S/W 적으로 모두 VGA를 지원합니다.
2. hx4700의 VGA 지원 방식은 dpi를 두배로 늘리는 방식입니다.(96dpi->192dpi)
3. Real VGA는 192dpi로 되어 있는 것을 강제로 96dpi로 바꾸고, 96dpi 용 리소스 파일을 추가하는 프로그램입니다.
4. forceHires 프로그램은 192dpi를 지원하지 않는 어플리케이션들에 192dpi를 지원하도록 하는 루틴을 추가하는 프로그램입니다.

2008년 6월 1일 일요일

Corfirm 이용 방법.

자주 안쓰다보니 잊어먹어서;;;;

<script type='text/javascript'>
 function delconfirm(){
  del_con = confirm('정말 삭제하시겠습니까? \\n삭제하시면 모든 기록이 함께 삭제됩니다.\\n[확인] 버튼을 누르시면 삭제됩니다.');
  if (del_con) {
   return true;
  } else {
   return false;
  }
 }
</script>


   <a href='URL' onclick='return delconfirm();'>삭제

확인 누르면 이동~~~ 취소는 이동 안함~