NOTICE 
전체 에 해당하는 글 : 663 개
2008.05.29 :: 블루투스 (1)
2008.05.28 :: Symbian S60
2008.05.28 :: Symbian OS
2008.05.20 :: OpenCV IplImage
  
트랙백 4  |  댓글   |

기간통신사업자

방송사업자

포털사업자

KT, 하나로텔레콤

케이블

지상파(KBS,MBC,SBS)

다음, NHN

난시청해소라는 대의를 위해

지상파 재전송을 허용하는 건

어떨까? ^^;

그동안 음영지역 해소 위해

우리가 얼마나 노력했는데..

무임승차하겠다구? 말도 안돼!

지상파방송의 콘텐츠는

사회적 기본 자산이라구.

적절한 투자 부담이 필요하지

않겠어? 무임승차는 안돼!

제일 어려운 점이 콘텐츠수급이잖아. IPTV가 자리를 잡으려면 초기엔 지상파 재전송이 필요해! 매체 차별화는 차츰 해 나갈게~

매체차별화 매번 강조하잖아?

지상파재전송부터 요구하지

말고 새로운 콘텐츠 발굴을

위해 노력하라구~

너무 쉽게 가려는거 아냐?

쉽게 사용자를 끌어드릴

생각만 하지 말고 콘텐츠

활성화나 전진기지 육성을

위해 노력해줘.

우리도 IPTV서비스 하고 싶어!

통신사가 구축한 네트워크에

무임승차하겠다는 뜻은 아냐^^;

우리(포털)도 우리만의 독자적

사업영역이 있다구.

망 동등접근권 보장해줘!

요약: [디지털데일리|2007-11-29]IPTV 남은 숙제 ‘지상파 재전송·망 동등접근권’

*관련기사

[전자신문 2007-12-13]IPTV '망 동등 접근성' 새 쟁점으로 부각

망 동등 접근성 보장이란 KT나 하나로같은 기간통신사업자가 구축한 망을
NHN이나 다음이 쓰겠다고 하면 기간통신사업자가 그 망을 제공해야하는 것이지요^^

*KT: 지금껏 열심히 투자했는데, 투자 회수는 해야지않겠어?
망 개방 폭 최대한 작게! 그리고 점차적으로

*포털(IPTV 예비사업자), 케이블TV사업자: 망 동등 접근성을 보장하지 않으면 IPTV는 사실상
망을 보유한 KT 독주로 갈 수 밖에 없어. 망 동등 접근성 보장해줘!!


*하나로텔레콤을 인수한 SK텔레콤: KT와 따로 또 같이..

KT와 반대되는 입장을 표명하고 싶긴 한데.. 조심스럽다구..
하나로텔레콤은 지역 케이블TV 사업자와 협력 모델이기 때문에 망 개망 부담이 KT에 비해 덜하긴한데...
자칫했다간 무선망 개방 압력이라는 부메랑으로 돌아올 수도 있다는 거지...
(휴대폰을 활용한 무선인터넷도 심각한 폐쇄망이잖어~^^;;)

참고 :
http://blog.naver.com/goodsaja/44993761
  
트랙백 0  |  댓글   |


엠베스트 학부모 강연회에서 조진표대표님 강연을 들은 적이 있습니다.

요즘 젋은 한의사들은 심지어 생계가 어려울 정도로 불황을 겪고 있는데,

여전히 학부모님들은 자녀들이 한의대에 가길 원하고,

자녀의 적성이나 소질에 관계없이 의사, 변호사, 한의사, 교수를 시키고 싶어한다는 거죠.

10년 전만하더라도 서울대의대보다 물리학과나 전자공학과가 더 인기였고,

치대 커트라인은 농대 바로 위였다고 하네요.

그럼 10년 후에는 어떨까요?

‘현재의 인기가 미래의 성공이라고 생각지 말라!’

이것이 그 분 강연의 요지였습니다.

참 마음에 와닿더라구요. 많은 사람들이 과거를 기준으로 미래를 준비합니다.

하지만 성공하는 사람은 미래를 바라보고 현재를 계획하는 사람입니다.

사설이 길었네요^^;;

현재는 SK텔레콤, KTF, LG텔레콤 밖에 없지만,

5년 후, 10년 후에는 T모바일이나 보다폰을 사용하는 사람들이 많아질지도 모릅니다.

전혀 새로운 이동통신사를 만나게 될 수도 있구요,

우리나라 이통사들이 유럽시장에서 1위를 점유하게 될지도 모릅니다.

사실 요즘도 영국의 보다폰은 이미 36개국에 2억명 이상의 가입자를 보유하고 있고,

스페인의 텔레포니카는 23개국 1억명, 프랑스의 오렌지는 24개국 1억명,

싱가포르 싱텔은 1억3000만명의 가입자를 보유하고 있다고 합니다.

이미 40~50%의 매출을 해외에서 벌어들이고 있는거죠.

미래를 정확하게 알 수는 없지만, 현재를 기반으로 미래를 예측해보는 것.

재미있고 유용한 작업이란 생각이 듭니다.

(미래를 전망해보는 건 각자의 몫으로 맡기구요..^^;)

현재 나라별로 어떤 이통사들이 있는지.. 어떤 특징들이 있는지..

궁금해서 살짝 정리해봤습니다.

*함께 읽으면 좋은 포스트: [秀'column] 3G세계는 평평하다.[바로가기]

우선 미국입니다.

1위 AT&T

2위 버라이존와이어리스

3위 스프린트 넥스텔

미국은 CDMA망과 GSM망을 병행해서 사용하고 있습니다.

버라이존과 스프린트는 CDMA망 사용, T모바일과 AT&T는 GSM망을 사용합니다.


AT&T는?

- 2004년 10월 싱귤러(Cingular)와이어리스의 AT&T와이어리스 인수합병

(당시 가입자: 버라이존 4040만명, 싱귤러 2500만명, AT&T 2170만명)

- 2007년 모든 싱귤러(Cingular) 브랜드도 AT&T로 전면 교체

- 2007년 초 기준 AT&T 이동통신 서비스 가입자: 6200만명

- 미국시장에 아이폰 독점공급

버라이존와이어리스는?

- 미국 내 최대 CDMA 사업자

스프린트 넥스텔은?

- 2004년말 스프린트(당시 3위)와 넥스텔커뮤니케이션스(당시 5위) 합병

- 2006년 6월 힐리오(SKT와 어스링크의 미국 내 합작사)는 스프린트 넥스텔의 망을 임대해

MVNO사업진행 중(2007년 9월, 어스링크는 힐리오에 대한 투자 중단)

- 2006년 8월 3G 통신망 기술로 와이브로(모바일 와이맥스) 선정,

2008년 4월 와이브로 상용화 예정

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

다음은 유럽을 살펴볼까요?

유럽 내 이동통신사 순위는 국가별로 살펴보겠습니다.

그전에 우선 유럽시장에 대해 간단히 살펴보면요,

이동통신 가입자 규모를 기준으로 볼때 독일이 1위, 이탈리아가 2위, 영국이 3위입니다.

유럽 최대의 이동통신사로는 보다폰을 들 수 있구요,

보다폰은 유럽과 중동, 아프리카, 아시아태평양 및 미국 등

세계 27개국에 진출하고 있으며, 가입자 기준으로는 세계 최대의 휴대폰 회사입니다.

크게 유럽과 비유럽(EMAPA, 동유럽·중동 및 아프리카·아시아태평양·기타 관련지역 등)으로 나눠

글로벌 사업을 펼치고 있으며, 해외매출 비중이 80%를 웃돕니다.

일본에서는 좋은 성과를 거두지는 못했는데요,

2001년 일본텔레콤의 경영권을 장악하여 보더폰재팬이라는 명칭으로 진출했었고,

경영 부진으로 2006년 소프트뱅크에 인수합병되었습니다.

나라별로 보면

우선 독일은 가입자 규모면에서 볼 때 유럽 최대의 이동통신 시장입니다.

2005년 7월 기준으로 가입자 수 6,970만명, 보급률: 80.8%입니다.

T모바일과 보다폰이 시장을 과점하고 있습니다.

1위 T모바일

2위 보다폰

3위 O2

4위 E-플러스(네덜란드 KPN의 자회사)

T모바일은?

- 유선통신 사업자인 도이치텔레콤의 자회사

- 독일 외에도 미국, 영국, 네덜란드, 오스트리아, 폴란드, 체코 등 6개국에 서비스제공

- 2007년 11월 OHA(Open Handset Alliance, 구글이 주축이 돼 결성한 모바일OS 표준화단체) 참여

- 유럽 5개국(독일, 오스트리아, 네덜란드, 헝가리, 크로아티아)에 아이폰 독점 공급

다음으로 이탈리아를 살펴보겠습니다.

■ 가입자 수: 6,417만명, 보급률: 104.1%(2005년 7월 기준)

■ 이탈리아는 스페인, 포르투갈과 더불어 선불제가 성공한 대표적인 국가(가입자의 90%)

1위 텔레콤 이탈리아 모바일(TMI, Telecom Italia Mobile)

2위 보다폰

영국도 높은 휴대폰 보급률을 보입니다.

(2005년 7월기준 가입자 수: 6,270만명, 보급률: 98.3%)

1위 보다폰

2위 오렌지

3위 O2

4위 T모바일

O2는?

- 영국 최대 통신 업체인 브리티시 텔레콤의 이동통신 부분이 전신임 (2001년 9월 사명을 O2로 변경)

- 스페인 통신업체 텔레포니카가 인수

(라틴아메리카 13개국에서 유무선 통신사업을 펼치는 스페인의 텔레포니카는

영국 이동통신사업자 O2를 인수하고 아일랜드·독일 등에서 사업을 한다.)

- 보다폰에 이어 유럽 가입자 수 2위/ 아이폰의 영국사업자

마지막으로 프랑스입니다.

1위 오렌지(프랑스텔레콤의 자회사)

2위 SFR(비벤디유니버설 자회사)

3위 부이그텔레콤(Bouyguee 그룹 자회사)

요즘 유럽시장도 아이폰이 이슈입니다.

아이폰은 미국시장에서 히트하면서 빠르게 유럽시장으로 진출했는데요,

나라별 1개 사업자에게 독점사업권을 주기 때문에,

이를 확보하기위한 이통사간의 경쟁이 치열했습니다.

영국에서는 O2가 프랑스에서는 오렌지, 독일에서는 T모바일이 선정되었습니다.

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

이제 가까운 나라들의 경우를 볼까요?

일본의 경우는 NTT도코모가 시장에서 1위이며,

보다폰재팬 인수를 통해 이동통신시장에 뛰어든 소프트뱅크가 3위입니다.

1위 NTT도코모 (WCDMA 세계 1위 사업자)

2위 KDDI

3위 소프트뱅크(보다폰 재팬 인수)

중국의 경우는 차이나 모바일이 확고한 1위이며,

2위 사업자인 차이나유니콤의 약 3배의 가입자를 확보하고 있습니다.

1위 차이나모바일

2위 차이나유니콤(2007년 10월 기준 가입자: 1억1710만명, 차이나모바일의 3분의 1)

차이나모바일은?

- 가입자 기준 세계 최대 이동통신 업체

- "애플과 `아이폰`을 중국에 들여오는 것에 대해 논의중"(2007.11)

마지막으로 중국의 TD-SCDMA 에 대해 잠깐 언급하고 글을 마치겠습니다.

세계 이동통신 시장의 3G 서비스는 동기식 CDMA2000비동기식 WCDMA

양대축으로 진행되고 있으며, 현재까WCDMA가 우세한 분위기입니다. (관련글 바로가기)

http://blog.naver.com/goodsaja/27075374

그런데 중국의 경우 3G독자 규격인 TD-SCDMA를 진행하고 있습니다.

12억이나 되는 중국의 인구를 기반으로 할때, 충분히 영향력을 가질 수 있는 프로젝트지요.

물론 이미 글로벌 주류로 부상한 WCDMA/HSDPA와의 경쟁은 쉽지 않겠지만,

중국 정부의 강력한 TD-SCDMA 상용화 의지를 볼때,

앞으로의 시장판세를 쉽게 예측하기는 어려울 것 같습니다.

현재 SK텔레콤이 중국 정부와 공동으로 서울과 북경에서

TD-SCDMA 테스트베드 구축하여 운영하고 있습니다.

이상 ‘나라별 대표 이동통신사업자 정리’였습니다.

도움이 되셨다면 댓글남겨주세요^^

참고 : http://blog.naver.com/goodsaja/44649416


  
트랙백 0  |  댓글   |

왜 블루투스 인가? 블루투스 기술에 대하여

새로운 기술들은 빠르게 사람들의 일상 생활의 일부가 되고 있습니다. 불과 몇 년 전에는 공상과학 영화에서나 볼 수 있었던 IT 기기들이 없는 생활을 이젠 상상할 수 없게 되었습니다.

블루투스 기술은 1994년에 Erricson에 의해 처음 개발되기 시작했습니다. Erricson, IBM, Nokia, Intel, Toshiba등이 SIG 콘소시엄을 구성하여 블루투스 표준을 제정하였습니다. 현재 많은 종류의 휴대전화, 컴퓨터 주변기기에 블루투스가 적용되어 있고 일부 가정용 기기 제조업체들이 적용하고 있습니다.

휴대용 무선 전화기는 블루투스가 적용되지 않은 기기도 블루투스의 사용을 가능하게 하며 전화기를 스테레오 시스템에 연결하여 송수신기 또는 전화기 내부의 메모리에 MP3 파일 다운로드를 가능하게 합니다.

블루투스는 광범위하게 이용되고 있습니다. 새로운 기술의 융합은 해커가 블루투스를 목표로 삼아 새로운 세기의 잠재취약점으로 이용하기 시작하는 것을 뜻합니다. 결국 해커들은 항상 새롭고 아직 연구되지 않은 기술에 집착합니다. @stack 과 shmoo와 같은 그룹이 블루투스 연구에 관여하고 있습니다.

또한 블루투스는, 웜 바이러스가 이 기술을 이용하여 바이러스를 전파 할 수 있기 때문에, 안티 바이러스 산업의 흥미 있는 대상의 하나이기도 합니다, 예를 들어 Cabir, Lasco, Combat등의 웜 바이러스는 Symbian 운영체제하의 블루투스를 경유하여 퍼져 나갑니다. 악성파일을 포함한 파일 전송이 가능하기 때문에 블루투스 취약점은 흥미로운 대상입니다.

블루투스는 근본적으로 IT 기기의 연결 케이블을 없애기 위하여 설계 되었습니다. 예를 들어 마우스, 프린터, 휴대전화, GPS 수신기를 케이블로 컴퓨터에 연결 할 때 그 컴퓨터는 실질적으로 휴대용 기기가 아닙니다. 또한 컴퓨터는 모든 주변기기를 연결할 충분한 포트가 없습니다.

어떤 측면에서 보면 블루투스 기술은 무선 네트워크 세상의 진입을 가능하게 하였으며, 일부 사람들은 Wi-Fi의 실행 가능한 대안이 될 것으로 생각합니다. 개인적으로는 블루투스 기술은 보충적인 역할을 할 것이며 유사하기는 하지만 타 어플리케이션과는 다르다고 생각합니다.

블루투스 기술은 마스터 유닛과 7개의 슬레이브 유닛으로 구성되어 마스터 유닛의 10 미터 내에 위치한 Piconet을 기본으로 합니다. Piconet은 scatternet으로 구성될 수 있습니다. 마스터 유닛은 슬레이브 유닛과 통신하며 슬레이브 유닛간의 통신은 되지 않습니다.

그림 1
블루투스 기기는 인증되지 않은 2.4 GHz 와 2.4835 GHz 사이의 주파수 영역에서 작동합니다. 같은 영역에서 운영되는 기기의 방해를 피하기 위해 주파수 hop 알고리즘WM을 이용하여 1초당 1600 주파수 hop을 사용합니다.
이러한 기기가 작동되는 특정 주파수를 타임 슬롯(time slot)이라고 하며 625 마이크로초(microsecond) 동안 지속 됩니다. Picont 내부의 주파수는 pseudo-random hop주파수에 근거한 마스터 유닛에 의하여 변화됩니다. 주파수 영역은 1MHz 영역 내에서 79개 채널로 분리되며 데이터는 프레임 단위로 전송되고 1, 3, 5 슬롯(slot) 길이를 지닙니다.
다음과 같은 2가지 접속 방법이 있습니다. ACL(Asynchronous connections), SCO(Synchronous connection-oriented)
첫 번째 방법은 데이터가 필요한 때에 가공될 수 있도록 제어되는 데이터 전달 방법입니다. 슬레이브 유닛과 마스터 유닛은 ACL 접속 방법으로만 연결됩니다.
두 번째 접속 방법은 음성 데이타와 같이 실시간 데이터 전송이 필요 할 때 이용됩니다. 슬레이브 유닛은 마스터 유닛에 3개의 SCO접속까지 가능하며 64 kb/ sec의 속도를 구현합니다.
블루투스 기기는 세가지 그룹으로 정의 할 수 있습니다 :
Class 1 100 mW 100m
Class 2 2.5 mW 10m
Class 3 1 mW 1m
대부분의 블루투스 기기는 Class 2 또는 Class 3 그룹에 속합니다.
프로토콜 스택은 다음과 같습니다.

블루투스 핵심 프로토콜

그림 2
보다 자세한 내용은 블루투스 핵심 정의를 참고하시기 바랍니다.

시큐리티 메커니즘
명세서에 따르면 사용자 정보는 암호화된 데이터 통신으로 보호되어야 하는 반면 액세스 코드와 패킷 헤더는 암호화 되지 않은 채널로 전송 됩니다. 데이터는 E0 stream cipher 를 사용하여 암호화 됩니다.
따라서 커뮤니케이션 링크 레벨에서의 공격은 분명히 가능 합니다.
블루투스는 세가지 시큐리티 모드 중 한가지로 운영 될 수 있습니다.
시큐리티 모드 1 – 보호하지 않음(시큐리티 부재) 이 모드에서는 암호화나 인증이 사용되지 않습니다. 다바이스 자체는 구별하지 않는 상태에서 즉 브로드캐스팅(마구잡이)모드로 운영 됩니다.
시큐리티 모드2 – 어플리케이션/서비스 기반(L2CAP) 이 모드에서는 접속이 되면 시큐리티 매니저가 인증을 수행 하므로 디바이스 접속이 제한 됩니다.
시큐리티 모드 3 – link-layer PIN 인증/ MAC address 암호화. 접속이 되기 전에 인증이 행해 집니다. 비록 투명한 암호화가 이용되지만 이 모드에서도 디바이스는 손상 될 수 있습니다.

블루투스 시큐리티는 PIN 코드를 사용하여 키를 생성하는 것을 기본으로 하고 있으며 길이는 1에서 16바이트까지 입니다. 대부분의 디바이스는 4-byte PIN을 이용 합니다. 우선 E2 알고리즘이 PIN 코드를 기반으로 하여 16-byte Link Key를 생성 합니다.
그런 후에 Link Key를 기본으로 한 암호화된 키가 E3 algorithm를 사용하여 계산 됩니다.
첫 번째 키는 인증을 위해서 사용되며 두 번째는 암호화 용 입니다.

그림 3
인증 절차는 다음과 같습니다.

1. 디바이스가 접속을 하기 위하여 주소를 보냅니다(BD_ADDR). 이 48-bit 주소는 독특하며 네트워크 어댑터의 MAC주소와 유사 합니다. 디바이스 제조사를 이 주소로 알 수 있습니다.
2. 랜덤128-bit 시도 시퀀스의 응답이 보내 집니다(AU_RAND).
3. 양 디바이스가 BD_ADDR, Link Key 및 AU_RAND를 기반으로SRES라는 인증 응답 스트링을 생성 합니다.
4. 디바이스는 SRES를 보내기 위해 접속을 시도 합니다.
5. 다른 디바이스는 그 자체의 것과 받은 SRES를 비교하여 만약 2개가 매치되면 접속을 실행 합니다.
그림 4
비록e PIN code는 공개적으로 보내지지는 않지만 BD_ADDR, AU_RAND 와 SRES를 가로채면 크랙 할 수 있습니다.

블루투스 공격 형태
BlueBug
이 취약점은 블루투스가 강화된 디바이스에 인증되지 않은 동작을 공격자가 실행할 수 있게 합니다.
적절한 환경에서 BlueBug 공격은 단 몇 초만에 성공할 수 있습니다. 희생자의 디바이스와 공격자의 디바이스 사이의 거리는 Class2 bluetooth radio의 전송력으로 제한됩니다. 그리고 이것은 상기에서 언급한 것과 같이 10-15미터 정도 입니다.
지향성 안테나를 사용하여 이 거리를 더 넓힐 수 있습니다.
몇몇 전화가 AT 명령어의 문제를 내포하고 있기에 공격자는 다음의 동작을 수행할 수 있게 되었습니다.
전화 걸기
불특정 번호로 SMS 보내기
상대방 전화에서 SMS 읽기
주소록 읽기 및 쓰기
전화 전송 설정
기타

Blueprinting
Blueprinting 은 블루투스 피해 디바이스의 항목으로 접속하는데 사용될 수 있습니다. 상기에서 언급했듯이 각 블루투스 디바이스는 고유의 주소가 있습니다. 이 주소는 6 바이트로 구성되어 있습니다 (MAC 주소 형태와 상당히 유사합니다. MM:MM:MM:XX:XX:XX).
이 주소의 제일 앞의 3 바이트(M바이트)는 칩셋의 제조사에게 할당되었습니다. 불행히도 남아있는 나머지 3바이트(X바이트)의 경우 상황이 단순하지 않고 디바이스 모델을 100% 확인하는 것이 불가능합니다.
모든 블루투스 디바이스는 서비스 영역을 가지고 있습니다. 서비스 목록은 서비스 발견 프로토콜(SDP, Service Discovery Protocol)을 통하여 가져오게 됩니다. 디바이스는 특정 포맷의 정보 결과 쿼리를 받을 수 있습니다. 그리고 이것은 디바이스 모델을 확인하는데 사용할 수 있습니다.

BlueSmack
BlueSmack 은 Linux Bluez 에 포함된 기본 도구를 이용한 DoS 공격입니다.
BlueSmack은 Microsoft Windows 95 초기 버전에서 사용되었던 공격과 유사합니다. L2CAP 레벨에서 다른 블루투스 디바이스로부터 echo 리퀘스트가 가능합니다.
ICMP ping 과 마찬가지로 L2CAP ping 의 개념은 연결을 확인하고 확립된 링크로의 왕복 시간을 측정합니다. BlueZ 배포판의 기본 유틸리티인 l2ping 으로 사용자는 패킷의 크기를 지정하여 보낼 수 있습니다. 원하는 결과를 만들어내려면 -s옵션으로 약 600바이트의 사이즈로 지정하면 됩니다.

BlueSnarf
이것은 아마도 가장 잘 알려진 블루투스 공격의 형태일 것 입니다. 공격자는 원래 다른 개체와 명함을 교환하기 위해 개발된 OBEX Push Profile (OPP)을 사용합니다. 대부분 이 서비스는 인증이 필요하지 않습니다.
BlueSnarf 공격은 OBEX GET 리퀘스트를 'telecom/pb.vcf' (주소록) 또는 'telecom/cal.vcs' (달력 파일) 과 같이 잘 알려진 파일이름으로 보냅니다. 만약 피해 디바이스의 펌웨어가 잘못 설치되어 있다면 공격자는 피해 디바이스의 모든 파일에 접근할 수 있습니다.

BlueSnarf++
이 공격은 BlueSnarf와 매우 유사합니다. 주요 차이점은 피해 디바이스 파일 시스템에 접근하기 위한 방법입니다. BlueSnarf++ 는 OBEX Push Profile 을 통하여 공격자에게 전체 읽기/쓰기 권한을 줍니다. 만약 OBEX FTP 서버가 디바이스에서 실행 중이면 페어링(pairing)없이 OBEX Push 서비스를 통하여 접속을 확립할 수 있습니다.
공격자는 파일 시스템의 모든 파일을 볼 수 있고(ls명령어 이용) 심지어 파일을 삭제(rm 명령어)할 수도 있습니다. 또한 공격자는 메모리스틱 또는 SD 카드와 같은 메모리 확장 카드를 포함한 디바이스에 설치된 메모리에 명령어를 실행시킬 수 있습니다.

HelloMoto
이것은 BlueSnarf 와 BlueBug의 결합형입니다.
이 공격은 몇몇 모토로라 전화기의 “신뢰하는 디바이스” 핸들링의 잘못된 프로세싱을 이용합니다.
공격자는 OBEX Push Profile 과 위조 송신 vCard를 이용하여 접속을 시도합니다. 송신 프로세스는 그 후 차단됩니다. 하지만 공격자의 디바이스는 피해자의 전화기에 신뢰하는 디바이스로 남게 됩니다. 신뢰하는 디바이스의 목록에 들어간 것을 이용하여 공격자는 인증 없이 헤드셋 프로파일에 접속할 수 있습니다. 한번 접속이 확립되면 공격자는 AT 명령어를 사용하여 디바이스를 조정할 수 있습니다.

BlueBump
이 공격은 사회 공학을 이용합니다. 이 공격의 개념은 피해 디바이스와 신뢰하는 접속을 확립하는 것 입니다. 이것은 받는 사람의 인증을 하기 위해 명함을 보내는 것으로 성공할 수 있습니다. 공격자는 접속을 계속 유지합니다.
그러나 피해자는 공격자의 디바이스 링크를 삭제할 것을 물어 봅니다. 피해자는 접속이 아직 유지 중이라는 것을 알지 못합니다. 그 다음 공격자는 링크 키의 재생성을 요청합니다. 결과적으로 공격자의 디바이스는 인증 없이 새로운 엔트리를 얻게 됩니다. 그 후 키가 삭제될 때 까지 공격자는 피해 디바이스에 액세스를 유지합니다.

BlueDump 공격
이 경우에 공격자는 관계 설정된 디바이스(paired device) 세트의 BDADDR 을 알아야 합니다. 공격자는 디바이스와 다른 연결 중 하나의 주소를 위장합니다.
공격자는 링크 키를 가지고 있지 않기에, 피해 디바이스가 인증 요청하면 공격 디바이스는 'HCI_Link_Key_Request_Negative_Reply'라고 응답을 하게 됩니다.
그리고 이것은 특정 경우에 목표디바이스 자신의 링크 키를 삭제하고 관계 설정 모드(pairing mode)로 가게 됩니다.

BlueChop
이 공격의 목적은 네트워크에 포함되지 않은 디바이스를 이용하여 확립된 piconet을 파괴하는 것 입니다. 이 공격은 확장된 네트워크(a scatternet)를 만드는 것에 사용될 수 있는 다중 접속이 마스터 유닛을 지원한다는 사실에 기반합니다. 공격자는 piconet의 일부분이고 마스터 유닛과 연결되어 있는 랜덤 디바이스의 주소를 위장합니다. 그리고 piconet을 파괴시킵니다.

조사 또는 신년 워니블링(War-nibbling)

러시아의 가장 중요한 휴일인 연말연시는 블루투스 조사를 하기에 가장 좋은 시기입니다. 쇼핑 센터는 사랑하는 사람들을 위한 선물을 사는 고객들로 가득 찹니다. 이것이 쇼핑 센터를 얼마나 많은 블루투스 장비들이 취약점에 무방비 상태로 열려있는지에 대한 조사를 위한 가장 이상적인 장소로 만듭니다. 무엇보다 가장 좋은 것은, 선물 쇼핑과 함께 할 수 있다는 것 입니다.
필자의 친구와 필자는 블루투스 어답터를 탑재한 노트북을 들고 쇼핑센터에 갔습니다. 조사에 사용한 장비는 아래와 같습니다.
1. 소니 바이오fxa 53 노트북
2. SuSE 10.0 OSS.
3. PCMCIA 블루투스 어답터
4. btscanner 2.1
우리는 몇 군데 쇼핑센터를 방문 하였고 아래의 데이터를 수집하였습니다.
모바일 장치들은(휴대폰, PDAs) 탐지 모드와 비탐지 모드로 작동할 수 있습니다. 부루트 포스 접근(다른 주소의 큰 숫자)를 이용하여 비탐지 모드의 장치를 스캐닝하는 것은 가능합니다. 하지만 우리는 오직 탐지 모드에 있는 장치만을 스캔하였습니다.
그림 5
총 194개의 장치가 탐지 되었으며 대부분은 핸드폰 이였습니다. 그림 6은 제조사별로 구분한 것 입니다.
노키아, 소니-에릭슨이 우위를 차지하며 이것은 다른 보고서를 인용한 것 입니다.
그림 6

그림 7
가장 보편적으로 사용되고 있는 이 장치들은 또한 가장 일반적인 블루투스 공격에 매우 취약합니다.
Btscanner 프로그램은 검색된 장치 중 25% 이상이 snart 공격에 취약한 것을 발견하였습니다.

그림 8
또한, 25% 이상의 사용자가 파일 전송이 가능한 상태 입니다.
이것은 대부분의 사용자들이 보안에 대해서 아무런 관심이 없으며, 단지 공격을 받았을 때만 이 사실을 인지한다는 슬픈 결론을 내리게 하였습니다.
보안에 대한 무관심은 매우 심각한 안전 문제를 가져 옵니다. 차량용 블루투스는 이미 시장에서 판매되고 있으며, 만약 차량에 탑재된 컴퓨터가 공격에 침투되면 운전자와 승객 그리고 공공장소의 주변사람들을 위험에 처하게 됩니다.
또한, 보호되지 않은 휴대폰은 악성 코드가 매우 빠르게 전파되고 감염되게 할 수 있습니다.

보호

비탐지 모드 설정
PIN-based 인가 가능
안티바이러스 소프트웨어 사용

안티바이러스 선두 업체들은 이미 모바일 장치에 대한 제품을 가지고 있습니다. 카스퍼스키랩 또한 Kaspersky Mobile for Symbian smartphones (출시 예정) 과 Kaspersky Security for PDA 를 제공하고 있습니다.

부가적인 소프트웨어(Blooover, Blooover II, BT Audit) 사용

Blooover 는 자바로 만들어진 무료 어플리케이션이며, JSR-82 API 의 J2ME MIDP 2.0 VM 을 지원하는 환경에서만 사용 가능합니다. Nokia 6600, Nokia 7610, Sony Ericsson P900, Siemens S65를 포함하여, Blooover 는 특정 공격에 대한 핸드폰 취약점을 검사하는데 사용되는 취약점 스캐너 입니다. Blooover 는 2004년 12월에 처음 릴리즈 된 이래로 150,000번 이상 다운로드 되었습니다. 부가적인 공격 탐지가 가능한 Blooover II 는 2005년 12월에 릴리즈 되었습니다.
BT Audit 는 열린RFCOMM 채널과 L2CAP PSM을 검색하고 상태를 보고 합니다.


참조 :


1. www.trifinite.org


워니블링(War-Nibbling) 이란?
WARNIBBLING 은 phreaker(전화통신해커) 가능한 블루투스 전화기의 취약점을 찾고 접근하기 위한 공격으로, 고이득 안테나와 전화기에 접근할 수 있는 특별 소프트웨어를 장착한 일반적인 노트북 또는 PC를 사용합니다.
워니블러(warnibbler)는 한 곳에 머물지 않고 돌아다니면서 가능한 많은 전화기를 매핑합니다. 이 문제가 최근 증가되게 된 것은 특별히 디자인된 고이득 안테나 때문 이며, 이 안테나는 1마일 이상 떨어진 블루투스 장비를 찾아낼 수 있습니다.
<원본 : Bluetooth, Bluetooth Security and New Year War-nibbling.>

출처 : http://www.kasperskylab.co.kr/

원문 : http://www.kasperskylab.co.kr/board/bbs/board.php?bo_table=Products&wr_id=34

저자 : Konstantin Sapronov (카스퍼스키랩 바이러스 분석 전문가)

참고 : http://blog.naver.com/eulnyung/150028776217
  
트랙백 1  |  댓글   |

  1. DOS의 CHOICE 명령 대용으로 Y/N 선택 묻기 방법

    to batch ... 3 days ago
  2. 배치파일에서 줄 띄우기; Batch File 빈줄 넣기 방법; empty line

    to batch ... 5 days ago
  3. CMD 콘솔 색깔 변경하는 명령어; 도스창 명령프롬프트 글자색 바꾸기; DOS Color

    to windows batch ... on oct 27
  4. 영어 도스 실행 방법; 영문 DOS 사용하기; Eng

    to batch ... on oct 15
  5. 현재 위치에서 도스창 열기, 현재 폴더에서 명령프롬프트(CMD) 실행하는 법

    to windows batch ... on oct 13
  6. BAT 메세지 출력, 배치파일 메시지 프린트 방법; Batch File Message

    to batch ... on oct 06
  7. 디렉터리가 비어 있지 않습니다, 라는 에러 해결 방법은? The directory is not empty

    to batch ... on sept 30
  8. 도스 디렉토리 바꾸기 명령, DOS에서 드라이브, 폴더 이동 명령어; Change Directory 사용법

    to batch ... on sept 30
  9. 배치파일로 디렉토리 생성 명령어, 폴더 만들기 방법; BAT Make Directory, Folder

    to batch ... on sept 25
  10. AUTOEXEC.BAT CONFIG.SYS 파일 작성 방법 예제, 도스(MS-DOS)용 고전게임

    to games batch ... on sept 16
  11. PKZIP 폴더 압축 옵션, 디렉토리까지 압축하기 방법; Folder Directory

    to batch ... on sept 14
  12. 도스창 CMD 에서 파일명 변경 방법, 파일, 폴더 이름 바꾸기 명령; Rename File

    to batch ... on sept 11
  13. 베이직 언어의 종류와 차이점; BASIC

    to office batch ... on sept 06
  14. 도스에서 텍스트 파일 보기 명령어; DOS Text File Viewer

    to windows batch ... on sept 06
  15. BAT 파일 엔터 키 치는 명령은? 배치파일에서 Enter Key 로 빈줄 출력 명령어

    to batch ... on sept 01
  16. Find 파일 속성, 속성으로 파일 찾기 명령어; Find File Attribute

    to batch ... on aug 31
  17. 배치파일에서 파일 행번호, 줄번호 붙이기; Batch File, Print Line Number

    to batch ... on aug 30
  18. BAT 환경변수 사용 방법, 배치파일에서 환경변수; ENV

    to batch ... on aug 30
  19. 파일에 출력하는 배치 파일 작성법; BAT으로 Text File 만들기

    to batch ... on aug 29
  20. 배치파일 함수 구현, BAT에서 GOSUB 문 서브루틴, 고급 BATCH 테크닉

    to batch ... on aug 28
  21. 배치파일 문자열 함수는? 스트링 추출 출력 방법; Batch String

    to batch ... on aug 28
  22. DOS 명령어 / 모든 도스 명령 목록; MS-DOS Command

    to batch ... on aug 28
  23. BAT 실행창, 배치파일 실행하는 창은? Batch Window

    to batch windows ... on aug 25
  24. 24비트 32 bit 자동 전환, 구글어스 실행 배치파일; Google Earth BAT

    to earth batch ... on aug 24
  25. 숫자 무작위 생성; 윈도우 도스창에서; DOS 랜덤 Random

    to batch windows ... on aug 19
  26. 메모장으로 BAT 파일 만들기, 배치파일 작성하기; Windows Notepad Batch File

    to batch windows ... on aug 17
  27. BAK 파일 삭제 배치 파일; 백업파일 지우기 BAT

    to batch windows ... on aug 17
  28. 4DOS 무료로 전환, 16비트 MS-DOS용 포도스 사도스

    to batch software ... on aug 11
  29. chkdsk 하는 법; 체크디스크 명령으로 하드 검사 하는법

    to windows batch ... on aug 03
  30. 도스 TREE 명령어 파일로 저장하기, DOS 명령 결과, 텍스트파일로 저장하는 법

    to batch ... on aug 02
  31. 배치파일에서 return 구현 방법; BAT 리턴 반환 C언어처럼

    to batch ... on aug 01
  32. 도스 DOS 명령, 파일 속성 바꾸기 명령어; File Attribute ATTRIB

    to batch windows ... on july 31
  33. 배치파일 에디터로 좋은 것은? BAT File 편집기 Editor 종류

    to batch ... on july 28
  34. 배치파일 만들기 기초; BAT 파일 작성법

    to batch windows ... on july 22
  35. DOS / Windows Batch 파일의 주석 처리 방법; 주석문 Remarks

    to batch windows ... on july 12
  36. 메세지박스 만들기 예제; Msg Box

    to batch ... on july 10
  37. VBS, 비베 스크립트로 메모장 실행하기 소스; Run Notepad

    to batch ... on july 05
  38. 배치파일에서 시스템경로 구하기; 패스 환경변수 Path Batch File

    to batch ... on june 24
  39. 배치 파일에서, 숫자 계산하기, set 명령으로 더하기 빼기; Batch File Calc

    to batch ... on may 31
  40. 배치파일 무한루프 구현, 루프 탈출, 빠져 나오기 예제; Batch File Infinity Loop

    to batch ... on may 31
  41. 파일 개수 세기 도스 명령어; File Counter DOS Command

    to batch ... on march 23
  42. 배치파일 BAT] 현재 년월일 시분초 구하기, 한국식 시간 문자열; YYYY-MM-DD hh:mm:ss

    to batch ... on march 17
  43. 현재 시간으로 된 파일명 만들기 BAT 배치 파일; Time To File Name

    to batch ... saved by 2 other people ... on march 15
  44. 윈도우용 MD5SUM, SHA1SUM 윈도우 버전 다운로드; md5sum.exe sha1sum.exe Download

    to linux batch software ... on march 14
  45. 오늘 날짜로 된 디렉토리명, 폴더명 만들기 BAT 배치 파일; Date To Directory Name

    to batch ... saved by 1 other person ... on march 14
  46. CMD 아스키 코드표 보기; 도스창에서 아스키코드(ASCII Code) 출력하는 법, 명령

    to batch ... on march 13
  47. 날짜 BAT, 현재 시간 출력 배치파일; Batch File

    to batch ... on march 13
  48. Excel/엑셀 VBA] 세제곱근, 네제곱근, 거듭제곱근 구하기 함수, 기호; Cube Root

    to office batch ... on march 11
  49. Excel/엑셀 VBA] 제곱 기호, 함수 거듭제곱(세제곱,네제곱), 몇 승 구하기 방법; Power, Pow

    to office batch ... on march 11
  50. 도스용 윈집(WinZip) 실행 배치 파일; DOS WZZIP-WZUNZIP Batch File

    to batch ... on feb 18
  51. 도스(DOS)에서, ZIP 파일 압축하기, 압축 풀기 프로그램, 옵션; Add Extract Zip File

    to batch ... on feb 18
  52. 도스용 ZIP 프로그램; DOS윈집 다운로드,사용법; WinZip Command Line Support Add-On

    to batch windows software ... on feb 18
  53. 배치 파일 실행 결과 보기 명령어; Batch File Result View Command

    to batch windows ... on feb 12
  54. 배치 파일] 여러 파일 이름 한꺼번에 바꾸기; 파일명 일괄 변경; Batch File Rename

    to batch windows ... saved by 1 other person ... on feb 03
  55. 배치 파일 안에서, EXE 파일 실행 법; Batch File에서 실행파일 호출

    to batch ... saved by 1 other person ... on jan 26
  56. CMD 확장자 파일 만들기, CMD.EXE로, 파일(File) 만들기/저장(Save)하기

    to batch windows ... on jan 03
  57. XCOPY.EXE 프로그램/명령어 다운로드(Download) 받는 곳은? : 크로스 카피/엑스 카피

    to windows batch ... on dec 31
  58. 윈도우용 wget.exe 사용법; 명령행 다운로드 프로그램; wget Command for MS-Windows

    to linux batch ... on dec 28
  59. 도스(DOS)용 RAR 로 압축하기, 파일 압축 풀기; 텍스트 모드 압축

    to software batch ... on dec 27
  60. 도스(DOS, CMD)창, 영문 Code Page (코드 페이지)로 변경하는 명령어: CHCP

    to batch windows ... on dec 26
  61. RAR 도스 창(DOS)/명령프롬프트/텍스트 모드; WinRAR(윈라) 콘솔 버전; RAR.EXE

    to software batch ... on dec 26
  62. 배치파일] 엔터 키/줄바꿈/개행문자 넣기; Batch File Enter Key

    to batch ... on dec 26
  63. 도스(DOS)에서, Program Files 폴더 지정/입력하는 법은?

    to batch windows ... on dec 23
  64. 비베-VBA-VBS-VB] sqrt 제곱근/루트 근사값 함수 사용법은? Sqr()

    to office batch ... on dec 20
  65. 윈도우] 시스템 파일 복사하는 명령어. 히든파일 카피 명령; Copy Command, System Hidden File

    to batch windows ... on dec 18
  66. 도스에서 빠져 나오는 방법, 도스창 종료 명령어; DOS Exit

    to windows batch ... on dec 17
  67. VBA-VBS-비주얼 베이직에서, 특수문자 사용법; Visual Basic Special Char

    to office batch ... on dec 16
  68. 도스(DOS)에서, 연월일(년월일)/시분초, 현재 날짜 구하기; get Date Time

    to batch windows ... on dec 15
  69. 도스로 빠져 나가기, 윈도우에서 도스로; How To Exit To DOS

    to windows batch games ... on dec 15
  70. 배치파일] 랜덤 숫자 발생, 1~10 난수 생성; Random Number Batch File

    to batch ... on dec 15
  71. 배치파일] 요일 출력, 오늘 현재 요일만 구하기; Get DAY OF THE WEEK String

    to batch ... on dec 14
  72. 배치파일] 요일 삭제, 날짜 문자열에서 요일 지우기; Remove DAY OF THE WEEK from Date String

    to batch ... on dec 14
  73. 배치파일/Batch File] args / argc, argv 파라미터(인수; 매개변수) 사용 방법; DOS BAT

    to batch ... on dec 13
  74. 텍스트 브라우저, 리눅스/윈도우용; Text Browse LYNX

    to linux batch software ... on dec 13
  75. 도스박스/도스창 전체 화면 모드 핫키; DOSBox, DOS Full-Screen Hot Key

    to games windows batch ... on dec 13
  76. 배치파일 텍스트 출력 방법. 글자,문자열 쓰기, 프린트 함수; Batch File Print String

    to batch ... on dec 12
  77. 배치파일 예약어, 키워드 목록; Batch File Keyword List

    to batch ... on dec 12
  78. 윈도우/도스] 현재 디렉토리 환경변수, Current Directory (CWD) Environment Variable

    to batch ... on dec 08
  79. 윈도우 SORT 명령, 숫자 크기순 정렬(소팅) 문제 해결, Perl(펄)로

    to windows perl batch ... on dec 07
  80. 비베 VB, VBA] 난수 발생 함수; 랜덤 숫자 생성 Random Number Generator

    to office batch ... on dec 05
  81. 환경변수 저장 하는 법; 윈도우2000 / XP 환경 변수 저장법; Set Environment Variable

    to windows batch ... on dec 05
  82. 윈도우에서 파이썬(python.exe) 실행 배치파일; PYTHON.BAT

    to python batch ... on dec 04
  83. 탐색기 폴더에서, 도스창 실행 레지스트리: '여기에 명령 프롬프트' Command Line Here Registry

  84. 비베(VB, VBA, VBS)에서 엔터키(Enter Key) 표현; 줄바꿈 문자 넣기

    to office batch ... on nov 30
  85. 윈도우] 텍스트 파일 합치기 명령어; Text File (.TXT) 문서 병합 방법; TXT Merge DOS

    to batch editor ... on nov 30
  86. 배치파일] 윈도우 환경변수를 echo 로 출력 하는 법; PRINT Environment Variable DOS

    to batch ... on nov 29
  87. 배치파일] %1 %2 %3 퍼센트 일,이,삼 기호의 의미; DOS BAT Argument

    to batch ... on nov 29
  88. 도스용 V3.EXE 실행 배치파일; 도스창에서 백신III 실행 DOS BAT

    to security batch ... on nov 24
  89. 윈도우] BAT 파일 실행 하는 법; MS-DOS 배치 파일 실행법

    to batch ... on nov 21
  90. DOS 배치파일] IF ELSE 문 사용법 예제; 도스 BAT 강좌

    to batch ... on nov 21
  91. 배치파일(.BAT) IF 조건문 사용법 기초 강좌; DOS Batch File IF

    to batch ... on nov 18
  92. VBS] 메시지 박스 자동 닫기, 메세지 상자 자동으로 없애기/끄기; MsgBox Popup Auto Close

    to batch ... on nov 18
  93. Java/자바] 소스 컴파일 + 실행하기, 자동 배치파일(BAT)

    to java batch z.cool ... on nov 15
  94. DOS 배치파일] 다른 배치 파일로 GOTO 명령; 다른 파일 라벨로 이동 BAT

    to batch ... on nov 15
  95. 배치파일(.BAT)로, 파일 출력, 텍스트 파일(Text File) 만드는 방법

    to batch ... on nov 14
  96. Excel/엑셀] MsgBox, Yes No Cancel 버튼 대화상자 만든 후, 결과 값 처리

    to office batch ... on nov 14
  97. 비베-VBS-VBA-QBasic 주석 기호; 코멘트 Comment, Remark

    to office batch ... on nov 09
  98. 배치파일] 옵션 문자열 얻기, 실행시 매개변수 활용 DOS-NT Batch File Option

    to batch ... on nov 08
  99. 배치파일] 사용자 문자열 입력받기, 입력을 변수에 저장: DOS-NT Batch File Input String

    to batch ... on nov 08
  100. 비베-VBS-VBA] 문자열 합치기; 여러개의 문자열 하나로 연결/병합; Merge String


  101. DOS/도스창/배치파일] 파일 복사 명령어 사용법: File Copy Command

    to batch windows ... on nov 07
  102. 도스 도스창] 텍스트 파일 읽기 명령어, 보기 명령; DOS Text File View Command

    to batch windows ... on nov 07
  103. 윈도우 환경변수 복사하여 파일로 저장/만들기: Windows Environment Variable To File

    to windows batch ... on nov 06
  104. 배치파일, 도스(DOS)에서 파일 삭제, 디렉토리 지우기 명령어; Delete File

    to batch windows ... on oct 30, 2006
  105. 배치 파일] 변수에 현재 시간/날짜 넣기; 날짜/시간 출력, DATE TIME DOS BATCH

    to batch ... on oct 26, 2006
  106. 윈도우] VBS, VBScript 실행하는 법: 비베 스크립트 실행법

    to batch windows ... on oct 23, 2006
  107. 이진파일을 텍스트파일로 변환, 바이너리를 아스키로, Convert Binary File to Text File

    to editor linux perl batch ... saved by 1 other person ... on oct 23, 2006
  108. 도스/도스창(cmd.exe)용 실행파일/명령어 만드는, 언어/프로그램은? Creating New Commands

    to cpp batch windows ... on oct 21, 2006
  109. 반복되는 명령 실행: 윈도우 도스창 / 리눅스 - Repeat Commands

    to batch linux ... on oct 19, 2006
  110. 도스 명령] 하위 디렉토리까지 복사, Copy 디렉토리: XCOPY, DOS 배치 파일

    to batch windows ... on oct 19, 2006
  111. 윈도우] 파일 찾기 명령, 도스창에서 디렉토리 찾기, File Find Command

    to batch windows ... on oct 18, 2006
  112. 도스.BAT] 경로(Path) 알아내기/ 패스 문자열 얻어 오기: DOS 배치 파일

    to batch ... on oct 17, 2006
  113. 배치파일] 현재 폴더, 현재 디렉토리 의미하는 특수 문자] DOS Batch File, Current Directory

    to batch ... on oct 12, 2006
  114. C언어] cl.exe: 소스 파일 여러개 한꺼번에 컴파일하는 배치파일: Multiple Source Files Compile at Once

    to cpp batch ... on oct 09, 2006
  115. 윈도우] 리눅스 히든파일명으로 리네임, 파일명 앞에 마침표(.)넣기: Rename Linux Hidden File, Windows

    to windows linux batch ... on oct 08, 2006
  116. VBScript/비베] MsgBox 줄바꿈(행갈이) 방법, 멀티라인 메시지: Visual Basic, VBA

    to batch office ... on oct 05, 2006
  117. 도스 화면에, 글자 출력(프린트) 명령어는? - DOS Bat Print String

    to batch ... on oct 01, 2006
  118. 배치파일] FOR문으로, 텍스트 파일 행 처리 - 도스 DOS Bat File 강좌

    to batch ... on sept 28, 2006
  119. 배치파일] FOR 문 예제. for in do 사용법 - 도스 DOS Bat File 강좌

    to batch ... on sept 28, 2006
  120. VBS 팁] IE에서 여러 사이트 동시에 열기, 비베 스크립트 (VBScript) 로

    to batch windows ... on sept 27, 2006
  121. 배치파일] 도스창 닫기 명령 / 명령프롬프트창 종료 명령어 - .BAT DOS Batch File

    to batch windows ... on sept 26, 2006
  122. 윈도우 도스창에서 정규식 사용법 - Windows XP regex FINDSTR

    to batch regex ... on sept 25, 2006
  123. 윈도우] SORT 명령 사용법, 문자열/텍스트파일 정렬(소팅)하기 - Windows XP

    to batch windows ... on sept 21, 2006
  124. 배치파일] 탈출코드(에러레벨;반환값) 강제로 설정하기 - ERRORLEVEL, Exit Code, Batch File

    to batch cpp perl ... on sept 13, 2006
  125. 자바 팁] 자바(Java)컴파일과 실행을 한꺼번에 하는 명령, 윈도우에서 - Java Tip: Quick Compile

    to java batch ... on sept 10, 2006
  126. 배치파일] Yes / No 선택 묻기, 도스의 CHOICE 명령 대용, 사용자 입력 받기 - DOS-Windows Batch File

    to batch ... on sept 07, 2006
  127. [QnA] 도스창에서, 파일 이름의 빈 칸은 어떻게 입력합니까? - LFN, Long File Name

    to windows batch ... on sept 03, 2006
  128. 윈도우XP] 도스창 실행 / 도스 프롬프트 있는 곳 - Windows DOS Prompt

    to windows batch ... on sept 01, 2006
  129. 배치파일] BAT파일 안에서, 다른 BAT파일 실행/호출 - Batch File - 일괄 파일

    to batch ... on sept 01, 2006
  130. 윈도우XP] 기존의 패스(Path) 환경변수에, 새 경로(디렉토리; 폴더) 추가하는 법

    to windows batch ... on aug 28, 2006
  131. 도스창(명령프롬프트창) 제목줄(타이틀) 변경하는 도스 명령 - TITLE

    to batch ... on aug 26, 2006
  132. 배치파일에서, 문자열 비교 판단 / 문자열이 동일한지 다른지 - Compare Strings in Batch File

    to batch ... on aug 23, 2006
  133. 도스(DOS) 배치파일 명령어 목록

    to batch windows ... on aug 21, 2006
  134. 비베/VBScript] Chr() / Asc() 함수. MsgBox 에서, Chr(13) 함수의 의미 - VBS

    to batch office ... on aug 19, 2006
  135. 도스 화면, 잠시 정지시키는 키는? 도스창 스크롤 일시 중지시키는 키는? - DOS Pause Break Key

    to windows batch ... on aug 16, 2006
  136. 디스크 라벨(볼륨 레이블) 변경하는 법 - LABEL - VOL

    to windows batch ... on aug 13, 2006
  137. '환경변수'란 무엇인가요? 환경변수 변경/추가/삭제하는 법은? - Environment Variable

    to windows batch ... on aug 13, 2006
  138. 화면 출력 일시 정지시키는 명령어는? 도스창(윈도우 명령프롬프트)/배치파일에서 - pause

    to batch windows ... on aug 12, 2006
  139. 화면 글자 모두 지우는 명령어는? 도스창(윈도 명령프롬프트)/배치파일에서 - cls

    to batch windows ... on aug 12, 2006
  140. [QnA] 윈도우 .bat 파일은 무엇인가요? 배치 파일 (Batch File) 이란?

    to batch windows ... on aug 12, 2006
  141. 도스 명령에서, 백슬래쉬(\, ₩)와 슬래쉬(/) 차이점은? - 리눅스에서는? - Back Slash [QnA]

    to windows batch linux ... on aug 10, 2006
  142. [grep.exe] 유닉스/리눅스의 grep 을 윈도우에서 사용하기: 문자열 찾기

    to linux batch software ... on aug 10, 2006
  143. VBS(VBScript)의 PRINT 함수는? 문자열 출력은?

    to batch ... on aug 06, 2006
  144. 도스창 한글/영문으로 변경 방법: 명령 프롬프트 코드 페이지 전환 - CHCP, Code Page

    to windows batch ... on aug 05, 2006
  145. 배치 파일에서의 변수 사용 [배치 파일 작성법] - DOS Batch Variable

    to batch windows ... on aug 01, 2006
  146. 배치파일 종료시 변수 자동으로 지우기, 변수 충돌 방지, 변수 지역화: SETLOCAL / ENDLOCAL

    to batch windows ... on aug 01, 2006
  147. [배치 파일] 윈도의 .cmd 확장자를 가진 파일에 대해

    to batch windows ... on july 29, 2006
  148. [배치 파일 팁] echo문 행갈이 / 빈 줄 넣기/ 한 줄 띄어쓰기: Batch File Tip

    to batch windows ... on july 29, 2006
  149. [윈도우2000/XP] 탭(Tab)키로, 파일명 자동완성 - 명령 프롬프트 - File/Directory Name Auto-Completion

    to windows batch ... on july 28, 2006
  150. [배치 파일] '컴퓨터 이름' 알아내기 / 출력하기: Get Computer Name

    to batch windows ... on july 27, 2006
  151. [VBS] 몇 초 후에, Popup, MsgBox 대화상자 저절로 사라지게 - VBScript

    to batch windows ... on july 26, 2006
  152. 윈도우 XP에서, 도스로 가려면? 도스창이 있는 곳은? [QnA]

    to windows batch games ... on july 25, 2006
  153. [윈도우용 grep] find 보다 더 강력한 findstr 명령

    to windows batch ... on july 24, 2006
  154. [윈도우] 공백이 들어간 폴더명/파일명의 파일 실행하기 - Windows

    to windows batch ... on july 24, 2006
  155. 배치 파일(Batch File), 주석문/주석 처리 방법; 코멘트,설명 문 달기; Comment

    to batch windows ... on july 24, 2006
  156. [배치 파일] 프로그램 실행의 성공 여부를 Error Level 로 확인/판단하기: ERRORLEVEL

    to batch ... on july 15, 2006
  157. [리눅스/Cygwin] 프로그램 실행이 안돼요. 배치 파일(Batch File) 실행법은?

    to linux batch ... on july 13, 2006
  158. [QnA] 도스창이 그냥 닫혀 버립니다. 안 닫히게 하는 법은? pause 명령으로, 화면 정지시키기

    to windows batch ... on july 07, 2006
  159. 도스창 화면 저장 / 명령프롬프트(콘솔 창) 결과를 파일로 저장하는 방법

    to windows batch ... on july 07, 2006
  160. 재지향(Redirection)이란? / 파이핑(Piping)이란? - [도스창/명령 프롬프트 커맨드 라인/리눅스 셀]

    to batch linux perl windows ... on july 07, 2006
  161. 리눅스 명령어를 윈도우에서 사용하기; 시그윈(Cygwin) 없이 Win32로; GnuWin32

    to linux windows software batch ... on july 06, 2006
  162. command.com / cmd.exe 에 내장되어 있지 않아 별도의 파일이 있어야 실행되는 명령어는?

    to windows batch ... on june 27, 2006
  163. [배치파일 강좌] 배치파일 만드는 법 / .BAT 파일; 일괄 파일(Batch File)이란?

    to batch windows ... saved by 1 other person ... on june 16, 2006
  164. [배치파일 강좌] GOTO 명령 / 라벨(레이블; Label)에 대해서

    to batch ... on june 16, 2006
  165. 윈도우 도스창에서의, 파일 비교 명령은? ; 텍스트 파일 / 이진 파일 비교

    to windows batch editor ... on june 15, 2006
  166. 도스(DOS) 환경변수 보기 [컴퓨터 초보자를 위한 강좌]

    to windows batch ... saved by 1 other person ... on june 13, 2006
  167. [배치파일:도스/윈도우] echo 명령 사용법 / echo (에코) 란?

    to batch ... on june 12, 2006
  168. 윈도우에서 배치파일(Batch File) 실행하기 [컴퓨터 초보자를 위한 강좌]

    to batch windows ... on june 10, 2006
  169. [VBS-VBScript] 'Exec 메서드'로, 외부 배치파일(.bat / Batch File)이 실행되지 않아요 [QnA]

    to batch ... on june 10, 2006
  170. [VBS-VBScript] 외부 프로그램 실행 함수 / 문서 열기 함수는? : Run 메서드

    to batch ... on june 10, 2006
  171. 비주얼베이직에서, 큰따옴표/작은따옴표 출력 [VB/VBS/VBScript/VBA]

    to batch office ... on june 08, 2006
  172. 모든 '도스 명령' 목록 보기, 윈도우2000 윈도우XP 에서

    to windows batch ... on june 06, 2006
  173. [QnA] 2개 이상의 도스 명령어를 한꺼번에 실행하는 법은?

    to windows batch ... on june 03, 2006
  174. 배치 파일에서, PC스피커로, 비프음(Beep; 삑 하는 소리) 내기

    to batch ... on june 01, 2006
  175. [배치 파일] echo 명령에서, 쌍따옴표, 꺾은 괄호(부등호) 등 특수문자 표현하기

    to batch ... on may 31, 2006
  176. 배치 파일 (Batch File) 실행시에, 인수(파라미터; 옵션; 매개변수) 주기

    to batch ... on may 30, 2006
  177. 도스(DOS)/윈도우의, 배치 파일에서 echo off 란?

    to batch ... on may 30, 2006
  178. 배치 파일의 옵션(인수; 파라미터; 매개변수) 해석하여 조건문 만들기 예제: 도움말(Help) 옵션 넣기

    to batch ... on may 30, 2006
  179. [QnA] 윈도우의 '명령 프롬프트'가, '도스창'인가요?

    to windows batch ... on may 29, 2006
  180. 명령 프롬프트란? Command Processor [컴퓨터 초보자를 위한 강좌

    to windows batch perl cpp ... on may 29, 2006
  181. chkdsk /F 옵션으로, 부팅 때 하드 디스크 검사하는 배치 파일 - Batch

    to batch windows ... on may 27, 2006
  182. 모든 하드디스크(HDD)를 한꺼번에 검사하는 배치(Batch) 파일

    to batch windows ... on may 27, 2006
  183. [VBScript-VBS] 하드디스크 남은 용량을, 퍼센트로 표시하는, 비주얼 베이직 스크립트

    to batch windows ... on may 26, 2006
  184. 비주얼 베이직 스크립트 (VBS / VBScript) 의 기초: 간단한 메시지 박스 예제

    to windows batch ... on may 23, 2006
  185. [QnA] VBS (VBScript) 란? / VBS 는 바이러스 파일인가요?

    to windows security batch ... on may 23, 2006
  186. 자신의 IP주소(아이피 주소; IP Address) 손쉽게 알아보기

    to windows batch ... on may 02, 2006
  187. [Perl] 특정 펄 모듈이 이미 설치되어 있는지 확인하는 배치 파일

참고 : http://blog.naver.com/eulnyung/150024724509

http://blog.naver.com/eulnyung/150024724509
  
트랙백 0  |  댓글   |

Symbian OS를 바탕으로 스마트폰에 특화된 UI layer(176*208 화면 사이즈 및 한손으로 다룰 수 있는 UI 구성)를 포팅한 개발자 플랫폼으로 전세계 스마트폰 시장의 60% 이상을 차지하고 있습니다.
현재 삼성, LG, Siemens, Panasonic 등 세계 유수의 핸드폰 제조 업체들이 Series 60 licensee로 가입되어 있습니다.

<Series 60 플랫폼의 특징>
176 x 208 픽셀의 칼라 디스플레이
한 손으로 다루는 UI
주소록, 메세징, 브라우징, 전화 기능의 통합
메세징 : email(POP3, IMAP4, SMTP, MIME2)- MS Word 첨부, 팩스, SMS
Mobile telephony protocols : 2G 음성 and circuit-switched 데이터, 2.5G packet-switched 데이터, SMS
통신 프로토콜 - TCP/IP, WAP, Bluetooth, IrDA, USB, serial
보안 : full-strength encryption and certificate management, secure 통신 프로토콜(HTTPS, WTLS and
SSL), certificate-based application installation
Application Engines : 주소록, 일정, schedule, messaging, browsing, voice, office, utility
and system control
OBEX 지원
Multimedia framework : audio, image 포맷 지원
Localization 지원(Unicode 지원), 필기체 인식, 추가 폰트 및 텍스트 포맷팅 지원
Four main programming and content development options - C++, Java (including Java-Phone),
and rich content (messaging/browsing)
PC Suite를 통한 PC와의 데이터 synchronization

참고 : http://nctc.geotel.co.kr/lecture_info/about_series60.html
  
트랙백 0  |  댓글   |

Symbian OS란 1998년 6월에 설립된 영국의 Symbian사가 소유권을 가지고 있는 모바일 용 멀티태스킹 OS로서 고품질 음성 서비스 뿐만 아니라 2.5G, 3G의 무선 환경(packet-switching , 고속 data 전송)에 적합하도록 설계되었습니다.
또한 Symbian OS는 open standard로서 Symbian licensee와 파트너들은 라이센싱 계약에 의해 서로 코드를 공유하고 있으므로 급변하는 무선 기술에 있어서 기술적 요구 및 시장의 요구에 빠르게 대처할 수 있다는 장점을 가지고 있습니다.

<Symbian OS의 특징>
배터리로 구동되는 디바이스가 타겟이므로 전력 소모가 낮도록 설계됨
한정된 메모리를 가진 디바이스를 대상으로 함
Open OS로서 3rd party application 수용
Stable : 어플리케이션은 수년동안 데이터의 손실없이 구동됨
객체 지향적 (C++ API 제공)
컴포넌트 기반으로 여러 플랫폼 위에서 구동됨
Symbian OS는 다음과 같은 모듈화 구조를 가지고 있습니다.

같은 GT 버전에 대해서 다른 UI layer를 포팅함으로서 Series 40, 60, 80 과 같이 특화된 개발자 플랫폼을 구성할 수 있습니다.

참고 : http://nctc.geotel.co.kr/lecture_info/about_symbian.html
  
트랙백 1  |  댓글   |

[소스코드]

#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

#include <time.h>

void main()

{

IplImage * src1 = cvLoadImage("../images/kang_impuls.jpg",-1);

IplImage * dst1 = cvCreateImage(cvGetSize(src1),IPL_DEPTH_8U,1);

IplImage * dst2 = cvCreateImage(cvGetSize(src1),IPL_DEPTH_8U,1);

IplImage * dst3 = cvCreateImage(cvGetSize(src1),IPL_DEPTH_8U,1);

cvSmooth(src1,dst1,CV_BLUR,3,3);

//표준편차 3.5인 가우시안잡음영상

cvSmooth(src1,dst2,CV_GAUSSIAN,5,5,3.5);

cvSmooth(src1,dst3,CV_MEDIAN,3,3);

cvNamedWindow("Source Image",0);

cvNamedWindow("Destination Image1",0);

cvNamedWindow("Destination Image2",0);

cvNamedWindow("Destination Image3",0);

cvShowImage("Source Image",src1);

cvShowImage("Destination Image1",dst1);

cvShowImage("Destination Image2",dst2);

cvShowImage("Destination Image3",dst3);

cvReleaseImage(&amp;src1);

cvReleaseImage(&amp;dst1);

cvReleaseImage(&amp;dst2);

cvReleaseImage(&amp;dst3);

cvWaitKey(0);

}

[임펄스 잡음영상]

[영상의 평활화]

[표준편차 3.5인 가우시안 필터링]

[중앙값 필터링]

임펄스 잡음영상의 경우. 중앙값 필터링을 쓰면 가장 잡음을 효과적으로 제거함을 알 수 있다.

참고 : http://blog.naver.com/leadgoon/3002996427


  
트랙백 1  |  댓글   |

처음 이 블로그를 만들 때 openCV에 대해서 쓸려고 했다. 하지만 너무나 바쁜 나머지 거의 쓰지 못했었다. 오늘은 iplimage 에 대해 한번 써 볼까?

선언

IplImage * myImg; // ipl image 형식으로 myImg 라는 변수를 사용하는데, 이것은 포인터이다.

// openCV를 하다보면 포인터를 자동으로 배우게 되는데, 대략 이 선언이

// 되면 debug 모드에서 myImage를 watch 창으로 넣어보면 구조체가 짠~

// 하고 나타난다. ipl image header를 따로 수정해 줄 필요 없이 그냥

// cvLoadImage("파일명",-1) 함수를 사용하자.

참고로 cvLoadImage 함수는 파일을 읽어오는 함수로, 두 가지 인자가 들어간다.

첫번째는 파일명이고, 두번째는 0,1,-1 셋 중에 하나이다. predefine 된 명령어

CV_LOAD_IMAGE_COLOR, CV_LOAD_IMAGE_UNCHANGED 등등으로 되어있는데

그냥 0 (강제 흑백으로 읽기), 1 (강제 칼라로 읽기), -1(채널수 변환 없이 파일대로 읽기)

밑에도 얘기하겠지만 흑백은 1채널이고 칼라는 3채널이다. 3채널 파일을 강제로 1채널로

바꾸면서 생기는 연산시간도 고려할 줄 알아야겠다.

실제로 이에대한 실험을 해 봤는데, 이것에 대한 사항은 다음에...

어쨌든.

ipl image 라는구조체 (i 대문자와 L 소문자는 어떤 영문 폰트에서는 똑같은 모양으로 보이기 때문에 쓸때 매우 찜찜하다. 공식적은 명칭은 I(대문자)p l(L소문자) I(i대문자)mage 이지만 내 블로그에서는 그냥 ipl image 라고 쓰겠다.

1. size를 가지고 있다. (말그대로 이 구조체의 사이즈를 반환한다. 영상이 3채널이라면 사이즈는 세 배가 되는 거고 한마디로 '파일 크기'라고 할 수 있다. 명확히 하자면 이 '구조체'의 크기인데, 영상 파일이 abc.jpg 라면 이 jpg를 자동으로 풀어서 RGB 공간으로 보낸 다음이기 때문에 abc.jpg와 abc.bmp 가 똑같은 사진이라면 동일한 nSize를 갖는다. 다시 생각해보니..위에 '파일크기'는 잘못된 비유인듯 )

2. nChannels 는 1이면 1채널, 3이면 3채널이다. 이 채널이란 것의 활용 용도는 다음과 같다. 어떤 영상처리 프로그램을 만들었는데 입력될 영상이 흑백(grayScale - 1 ch )인지 칼라(3ch)인지 모를때 채널을 물어보는 것이다. 그리고 이 채널은 for 루프 를 돌 때에 유용하게 사용하면 된다.

int w = myImg-&amp;gt;width;

int h = myImg-&amp;gt;height;

int c = myImg-&amp;gt;nChannels;

int realArray = w*h*c;

for (int i = 0 ; i&amp;lt; realArray ; i++)

{

//이 곳에는 각 픽셀당 하고 싶은 일;

}

갑자기 쓰기가 귀찮아졌다.그럼 오늘은 이만...

마지막으로 현재 나와있는 openCV 1.0 기준 레퍼런스에서 가져온 IplImage에 대한 사항이다. 쉬운 영어니 읽어보고....중요한 건 width,height,widthStep,imageData,nChannels 정도...?

IplImage

IPL image header

    typedef struct _IplImage&lt;br /&gt;    {&lt;br /&gt;        int  nSize;         /* sizeof(IplImage) */&lt;br /&gt;        int  ID;            /* version (=0)*/&lt;br /&gt;        int  nChannels;     /* Most of OpenCV functions support 1,2,3 or 4 channels */&lt;br /&gt;        int  alphaChannel;  /* ignored by OpenCV */&lt;br /&gt;        int  depth;         /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,&lt;br /&gt;                               IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */&lt;br /&gt;        char colorModel[4]; /* ignored by OpenCV */&lt;br /&gt;        char channelSeq[4]; /* ditto */&lt;br /&gt;        int  dataOrder;     /* 0 - interleaved color channels, 1 - separate color channels.&lt;br /&gt;                               cvCreateImage can only create interleaved images */&lt;br /&gt;        int  origin;        /* 0 - top-left origin,&lt;br /&gt;                               1 - bottom-left origin (Windows bitmaps style) */&lt;br /&gt;        int  align;         /* Alignment of image rows (4 or 8).&lt;br /&gt;                               OpenCV ignores it and uses widthStep instead */&lt;br /&gt;        int  width;         /* image width in pixels */&lt;br /&gt;        int  height;        /* image height in pixels */&lt;br /&gt;        struct _IplROI *roi;/* image ROI. when it is not NULL, this specifies image region to process */&lt;br /&gt;        struct _IplImage *maskROI; /* must be NULL in OpenCV */&lt;br /&gt;        void  *imageId;     /* ditto */&lt;br /&gt;        struct _IplTileInfo *tileInfo; /* ditto */&lt;br /&gt;        int  imageSize;     /* image data size in bytes&lt;br /&gt;                               (=image-&gt;height*image-&gt;widthStep&lt;br /&gt;                               in case of interleaved data)*/&lt;br /&gt;        char *imageData;  /* pointer to aligned image data */&lt;br /&gt;        int  widthStep;   /* size of aligned image row in bytes */&lt;br /&gt;        int  BorderMode[4]; /* border completion mode, ignored by OpenCV */&lt;br /&gt;        int  BorderConst[4]; /* ditto */&lt;br /&gt;        char *imageDataOrigin; /* pointer to a very origin of image data&lt;br /&gt;                                  (not necessarily aligned) -&lt;br /&gt;                                  it is needed for correct image deallocation */&lt;br /&gt;    }&lt;br /&gt;    IplImage;&lt;br /&gt;

The structure IplImage came from Intel Image Processing Library where the format is native. OpenCV supports only a subset of possible IplImage formats:

  • alphaChannel is ignored by OpenCV.
  • colorModel and channelSeq are ignored by OpenCV. The single OpenCV function cvCvtColor working with color spaces takes the source and destination color spaces as a parameter.
  • dataOrder must be IPL_DATA_ORDER_PIXEL (the color channels are interleaved), however selected channels of planar images can be processed as well if COI is set.
  • align is ignored by OpenCV, while widthStep is used to access to subsequent image rows.
  • maskROI is not supported. The function that can work with mask take it as a separate parameter. Also the mask in OpenCV is 8-bit, whereas in IPL it is 1-bit.
  • tileInfo is not supported.
  • BorderMode and BorderConst are not supported. Every OpenCV function working with a pixel neigborhood uses a single hard-coded border mode (most often, replication).
Besides the above restrictions, OpenCV handles ROI differently. It requires that the sizes or ROI sizes of all source and destination images match exactly (according to the operation, e.g. for cvPyrDown destination width(height) must be equal to source width(height) divided by 2 ±1), whereas IPL processes the intersection area - that is, the sizes or ROI sizes of all images may vary independently.

참고 : http://blog.naver.com/iplimage/150017760862
  
트랙백 1  |  댓글   |

Kd-Tree 를 구축하는 동안 힘들 었던 부분 몇가지를 지적해보고자 합니다.

1. SAH - Surface Area Heruistic

Kd-Tree 를 구축하는데 있어 중요한 것은 "효율적인 파티션 선택" 입니다. 공간을 x,y,z 축으로 나눌때 어느 축으로 나누는 것이 Ray-Test 를 했을때 가장 효율적인지 추측해서 결정하는 것이죠. 그런데 이 SAH 에 대한 수식은 곳곳에 나타나지만 실제 구현코드는 찾아보기 힘들고 각각 코드마다 모양이 다양하기 때문에 딱 짤라서 어떤 코드를 참고하기 좋다고 하기 힘듭니다. 일단 제가 사용한 SAH 함수를 psudo code 로 표현을 하자면 다음과 같습니다.

k_t = 0
k_i = 1

function sha(p_l, p_r, n_l, n_c, n_r)
 sah = k_t + k_i * min(p_l*(n_l+n_c) + p_r*n_r, p_l*n_l + p_r*(n_r+n_c))
end

for sorted vertex list inside the partition
 p_l = vertex.axis - partition.minimum.axis
 p_r = partition.maximum.axis - vertex.axis
 n_l = number of triangles left side of vertex.axis
 n_r = number of triangles right side of vertex.axis
 n_c = number of triangles on vertex.axis
 if sah(p_l, p_r, n_l, n_c, n_r) is minumum
  set vertex as best candidate
 end if
end for

SAH 에 관한 논문들을 몇가지 찾아보면 상수들이 나오는데 위에서 k_t 와 k_i 가 있어서 각각 트리를 1칸 내려갈때마다 들어가는 비용과 Ray-Test 1회를 할때마다 들어가는 비용을 계산에 넣도록 되어 있습니다. 이 상수는 각 시스템마다 다른 비용이 들기때문에 논문들에서 공개하고 있지 않기 때문에 모든 수치를 무시할 수 있는 숫자로 바꿔버렸습니다. 적절한 상수들은 Kd-Tree 의 depth 를 조절하는 기능을 갖고 있지만 위와 같이 각각 0, 1 로 해버리면 tree는 최대 depth 까지 만들어지게 됩니다.

2. 빠른 Kd-Tree 생성

Kd-Tree 의 경우 생성하는 속도에 대한 연구도 꽤 진행 되어서 최근 몇몇 논문에서는 0.1초내에 100만 폴리건이 넘는 공간을 빌드하는 것도 발표되어 있습니다. Realtime Ray-Tracing 을 위해서 연구가 되는듯 싶은데 그정도까지는 아니라도 무식하게 접근할 경우 빌드하는데 너무 많은 시간이 소비되게 됩니다. 그중 한가지가 AABB 의 시작과 끝에 대한 event list 를 작성해서 접근하는 방식으로 다음 논문을 보면 해당 내용이 나와 있습니다.

http://www.cgg.cvut.cz/members/havran/ARTICLES/ingo06rtKdtree.pdf

제 경우 Kd-Tree 에 사용할 모든 삼각형들의 aabb 목록을 만든다음 각 axis 에 대해서 시작-끝에 대한 event list 를 세개 만든다음 맨 처음 소트를 시킨다음 사용하고 있습니다. event 는 float 값의 aabb 시작 및 끝에 해당하는 값과 30 bit 값으로 어느 AABB의 시작과 끝인지를 나타내는 triangle number, 그리고 시작/끝/시작+끝 3가지를 상태를 갖고 있는 enum 값을 2비트로 사용하고 있습니다.

이 event list 는 각 axis 별로 만들어지고 가장 적절한 SAH 값을 사용하기 위해 for 루프를 돌면서 처음부터 끝까지 한번 훑어가면서 가장 적절한 split candidate 를 찾게 됩니다. 최적의 split 이 정해지면 split 에 의해서 나눠진 left-right partition 에 필요한 event list 를 다시 작성해야 합니다.

이 부분에서 꽤 헷갈렸는데 정확히 언급한 자료가 없지만 일단 부모로 부터 넘겨받은 event list 을 splt 기준으로 왼쪽-오른쪽에 포함되는 녀석들만 적절히 골라 나눈다음 자식에게 넘겨줘야 합니다. 여기가 꽤 까다로운데 x 축을 기준으로 나눴을 경우 x 축의 event list 는 기존의 것을 그대로 사용할 수 있지만 y, z 축을 기준으로 만들어진 event list 들은 x 축에 대한 정보가 없기 때문에 aabb 번호를 참고해서 각 event 들이 적절하게 다시 생성되도록 해야하는 것이 여러가지 까다롭습니다.

3. 빠른 Kd-Tree vs Ray 테스트

Kd-Tree 의 멋진 점은 수백만개의 객체가 흩어져 있는 공간에 대해 빠른 Ray-Test 가 가능하다는 점 입니다. Stoll 의 PT 자료 맨 마지막에 “Rays per Second” is measured in millions. 라고 언급 했듯이 Kd-Tree 는 빠른 Ray-Test 을 하기 위해서 모든 수단을 가리지 않고 동원해야 합니다. 여기서부터는 최적화에 깊이 들어가는 부분인데 일단 제 최종 버젼의 Kd-Tree 의 Kd-Tree Traverse 루프는 브라켓을 포함해서 24줄밖에 되지 않습니다.

최 적화된 Kd-Tree는 임의의 x,y,z 축을 기준으로 공간이 나눠지게 되는데 각각 축에 대해서 if 문을 통해 if x ~ if y ~ if z 식으로 코드를 작성하지 않고 축을 int axis 타잎으로 사용한다음 값에 대한 접근도 이 axis 단위로 해야한다는 것입니다. 예를 들어 Kd-Tree 를 돌아다닐때 Ray 의 방향의 역수인 inv_dir 값이 필요한데 D3DXVECTOR3 inv_dir; 를 사용하지 않고 float inv_dir[3]; 를 사용해서 계산해야 한다는 것입니다. 물론 계산에 사용하는 모든 값들은 D3DXVECTOR3 와 같이 x,y,z 접근하는 형태가 아니라 float[3] 형으로 선언해야겠죠?

이러한 코드적인 것에 더해서 VS 2005 의 컴파일 옵션, Intel vTune 등을 통한 최적화 작업도 꾸준히 찾아보고 시도해봐야 한다는 것입니다. VS 2005 가 생성하는 코드의 경우 FPU 연산이 상당히 비효율적인데 몇몇 C++ 쪽 컴파일 옵션을 변경하고 강제로 SSE를 켜줄경우 옵션 변경만으로도 상당한 성능 향상이 있습니다. 제가 이렇게 작성한 코드조차 IPC 값이 1.4에 가깝게 나와서 상당히 느린 코드로 나오고 있기 때문에 아직 많은 부분에서 최적화의 여지가 남아 있습니다.

Kd-Tree 의 경우 Ray-Test 코드가 모두 읽기 전용 계산이기 때문에 멀티쓰레드화에 매우 적합하고 Packet Traversing 이라고 해서 SSE를 통해 한번에 4개씩 Ray 를 쏘는 방식을 통해 수배에 가까운 효율을 높이기도 합니다. 저도 여기까지는 아직 접근하지 않았지만 현재 2.4Ghz CPU에서 랜덤한 Ray 를 생성해서 테스트해본 결과 1.4M Ray/s 까지 속도가 나온 상태입니다. 여기 SSE 와 Multi-Tread 를 더해면 적게는 2~3배에서 많게는 8~10배정도의 속도 향상을 기대하고 있습니다. ^_^

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

Kd-Tree 는 만능 트리는 아니지면 일단 Static 한 공간에 대해서는 상당히 효율적인 공간 구성이 가능하게 됩니다. Dynamic 한 것에 대해 여러가지 연구가 되고 있지만 일단 구축하는데 많은 시간과 메모리를 소비한다는 문제로 당분간은 비현실적이지만 depth 를 제한하고 미리 tree 를 구축할 경우 다양한 방법으로 활용이 가능하다고 생각합니다.

일단 일주일이 넘게 Kd-Tree 코드를 만들면서 고민했던 것을 후루룩 털어 놓았는데 혹시 비슷한 코드를 작성하는 분들께 도움이 될 수 있었으면 좋겠습니다.

참고 : http://zupet.tistory.com/272
  
트랙백 0  |  댓글   |
 이전  1234···67   다음 

fotowall :: ncloud RSS Feeds today : 14   yesterday : 16
total : 270,465