영역 바이너리 옵션 타입

마지막 업데이트: 2022년 3월 6일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
  1. ① 위성 : 천리안위성 1호 또는 천리안위성 2A호 위성 종류를 선택
  2. ② 센서 : 선택된 위성 검색 조건 항목에 포함된 센서 종류 선택, 위성 검색된 조건에 포함되는 센서만 표출된다.
  3. ③ 레벨 : 위성자료의 레벨 종류 선택, 검색된 조건에 포함되는 자료 레벨만 표출된다.
  4. ④ 종류 : 위성자료의 검색 종류 선택, 이미 검색된 조건에 선택된 항목들에 포함되는 자료 종류만 표출된다.
  5. ⑤ 관측영역 : 전구, 동아시아, 한반도 등 영역을 선택, 위성에 따라 선택 가능한 영역만 표출된다.
  6. ⑥ 포맷 : 위성자료의 파일 포맷 종류 선택, 전체, 텍스트(asc), 이진(bin, HE5, H5, NetCDF), 영상(png)
  7. 위성자료서비스 자료신청 화면 -->

교수님 이건 아니잖아요

PIE가 설정되어 있으면 코드 영역의 주소가 실행될 때마다 변하기 때문에 ROP와 같은 코드 재사용 공격을 막을 수 있다.

PIE 보호기법을 우회하기 위해서는 코드 영역의 주소를 알아내야 한다.

PIE 보호기법이 설정되어 있을 때 코드 영역은 공유 라이브러리처럼 메모리에 로딩되기 때문에 libc.so.6 라이브러리 주소를 구하는 과정과 같이 특정 코드 영역의 주소를 알아낸다면 코드 영역 베이스 주소를 구할 수 있다. 구한 주소로 오프셋 계산을 통해 코드나 데이터 영역의 주소를 구할 수 있다.

example8.c에는 두 종류의 취약점이 존재함.

gdb로 vuln함수를 디스어셈블

주소가 오프셋 형태로 출력됨을 확인.

바이너리에는 쉘을 실행시켜주는 give_shell 함수가 있다. 포맷 스트링 버그를 이용해 give_shell 함수의 주소를 구한 후, 스택 버퍼 오버플로우 취약점으로 리턴 주소를 give_shell 함수의 주소로 덮어 쉘을 실행해보자.

printf(buf)를 실행하는 시점에 브레이크포인트를 설정해 스택 메모리 살펴보기

printf가 호출되는 시점의 스택 메모리

x/40wx $esp로 출력된 메모리는 printf(buf)를 실행하는 시점의 스택 메모리다. 스택 메모리를 보면 0xffffd550에 바이너리 코드 영역의 주소인 0x565557be이 저장되어 있는 것을 볼 수 있다. 0x565557be는 vuln함수의 리턴주소다. (main+66의 주소) 포맷 스트링 버그를 이용해 0xffffd550에 있는 값을 출력시켜보자. 0x61616161이 저장되어 있는 0xffffd528이 첫 번째 포맷 스트링에 대한 인자 위치이므로 11번째 포맷에서 스택에 저장된 0x565557be를 출력시킬 수 있다.

11번째 "%x"에 대한 결과로 565557be가 출력되어 바이너리의 코드 주소를 알아냈다. 이 주소를 이용해 give_shell의 주소를 계산한다.

give_shell 함수의 주소는 0x565557be - 0xee 인것을 확인했다.

exmaple8_leak.py

give_shell 함수의 주소를 구하는 파이썬 스크립트

실행하면 give_shell 함수의 주소가 출력됨

example8.c의 스택 오버플로우 취약점을 이용해 vuln함수의 리턴 주소를 give_shell 주소로 덮어 쉘을 실행해보자.

buf로부터 리턴 주소까지의 오프셋은 40바이트이므로 최종 공격 페이로드는 다음과 같다.

example8에 대한 익스플로잇 코드

PIE가 설정되어 있는지 확인하는 방법

PIE 보호기법이 적용되어 있는 ELF 바이너리는 실행될 때 메모리의 동적 주소에 로딩된다.

이러한 성질로 readelf를 이용해 바이너리의 type header를 검사하는 것으로 바이너리의 PIE 적용 여부를 체크 가능함.

메모리 구조 [Memory Structure]

오늘은 제목에서 밝혔듯 메모리 구조에 대해 알아보려 합니다. 흔히 메모리라고 하면 RAM을 지칭하는데요, 보통 컴퓨터 구조에 대해 학습하시거나 배우셨던 분들은 알겠지만 메모리의 종류는 많아도 엄청 많은 걸 알고 있을 겁니다. 그만큼 컴퓨터에서는 매우 중요한 부품 중 하나죠. 컴퓨터 구조에 대해 전반적으로 다루려고 하면 내용이 너무 많아지기 때문에 오늘은 메모리에 대해 우리가 코딩한 것과 어떤 관계가 있는지를 알아보고자 합니다.

왜 그러면 다른 것들도 많은데 메모리냐! CPU나 명령어 셋이 더 중요하지 않냐! 라고 하실 수도 있겠지만, 틀린 말은 아니더라도 메모리도 매우 중요하다고 봅니다.

특히 알고리즘 문제를 많이 풀어본 분들은 알겠지만, 한정된 자원 안에서 효율적으로 프로그램이 실행 될 수 있도록 하기 위해서는 기본적으로 메모리에 대한 이해를 필요로 하기 때문이죠.

오늘은 C언어가 조금 많이 보일 수도 있지만, 아예 모르더라도 최대한 설명을 해서 알려주고, 최소한만 알아도 이해할 수 있도록 노력해서 써보겠습니다.

그럼 한 번 하나씩 알아보도록 하죠.

  • 메모리 구조 (Memory Structure)

여러분들은 C언어, C++, Java 등의 언어들을 이용하여 코딩을 하고 실행파일로 만들겁니다. 예로들면 C언어로 작성하여 빌드하고 만든 실행파일인 .exe 파일처럼 말이죠.

이러한 실행파일을 실행시키면 메모리에 로드되면서 코드에서 작성한 동작에 따라 메모리에 데이터들을 쓰고 읽습니다.

좀 더 구체적으로 말하자면, 여러분이 실행파일을 만들어 실행파일로 디스크에 저장할겁니다. 그리고 사용자가 실행파일을 더블클릭(실행)할테죠. 이를 운영체제에 실행파일을 실행하도록 요청하는 것입니다. 그러면 운영체제는 프로그램의 정보들을 읽고 메인 메모리에 공간을 할당해줍니다. 그리고 프로그램의 코드(변수, 함수 등)들을 메모리에 읽고 쓰면서 동작을 하게 되죠.

하지만, 일단 설명에 앞서 유의할 점은 임베디드 환경과 우리가 일반적으로 사용하는 PC컴퓨터(x86, x64 등등)하고는 조금 차이가 있습니다. 여기서는 PC에서 사용한다는 가정하에 설명드리겠습니다.

그럼 메모리에 어떻게 올라가는지를 알아보기 전에 메모리의 구조를 대략적으로나마 보겠습니다.

각 언어마다 조금씩 차이가 있지만 전체적인 구조 자체는 위 사진과 같이 영역이 나뉩니다. 보다시피 4가지의 영역으로 구분되죠.

일단, 각 영역별로 간단하게 설명하도록 하겠습니다.

텍스트 영역은 아주 쉽게 말하면 코드를 실행하기 위해 저장되어있는 영역입니다. 흔히 코드 영역이라고도 하는데, 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역입니다. 한마디로 명령문들이 저장되는 것인데, 제어문, 함수, 상수들이 이 영역에 저장됩니다.

데이터 영역은 우리가 작성한 코드에서 전역변수, 정적변수 등이 저장되는 공간입니다. 이들의 특징을 보면 보통 메인(main)함수 전(프로그램 실행 전)에 선언되어 프로그램이 끝날 때 까지 메모리에 남아있는 변수들이라는 특징이 있습니다.

좀 더 구체적으로 말하자면 Data영역도 크게 두 가지로 나뉩니다.

초기화 된 변수 영역 (initialized data segment)과 초기화되지 않은 변수 영역(un initialized data segment)으로 나뉘죠. 그리고 그 중 초기화되지 않은 변수 영역은 BSS( Block Started by Symbol) 이라고도 합니다.

힙 영역은 쉽게 말해서 '사용자에 의해 관리되는 영역'입니다. 흔히 동적으로 할당 할 변수들이 여기에 저장된다고 보시면 됩니다. 또한 Java나 C++에서 new 연산자로 생성하는 경우 또는 class, 참조 변수들도 Heap영역에 차지하게 됩니다. 다만, 이는 언어마다 조금씩 상이하니 일단은 '동적 할당 영역'이라고 알아두시면 될 것 같습니다.

그리고 Heap 영역은 대개 '낮은 주소에서 높은 주소로 할당(적재)됩니다'

스택 영역은 함수를 호출 할 때 지역변수, 매개변수들이 저장되는 공간입니다. 메인(main) 함수안에서의 변수들도 당연 이에 포함되죠. 그리고 함수가 종료되면 해당 함수에 할당된 변수들을 메모리에서 해제시킵니다. 한마디로 Stack 자료구조의 pop과 같은 기능이죠.
여러분이 함수를 '재귀' 호출 할 때, 재귀가 깊어져 Stack Overflow 를 경험해보셨을 겁니다. 이 이유가 재귀를 반복적으로 호출하면서 Stack 메모리 영역에 해당 함수의 지역변수, 매개변수들이 계속 할당되다가 OS에서 할당해준 Stack영역의 메모리 영역을 넘어버리면 발생하는 오류입니다.

Stack영역은 Heap영역과 영역 바이너리 옵션 타입 반대로 높은주소에서 낮은주소로 메모리에 할당됩니다.

이렇게 4가지 영역을 간단하게 알아보았습니다. 하지만 아직 설명하지 않은 것이 있죠. 위 이미지를 보면 메모리 모양 옆에 Low address, High address가 있을 겁니다.

이 것 또한 4가지 영역과 관련이 있습니다. 실제로 Data영역들은 낮은 주소에 할당되고, Heap, Stack의 경우는 비교적 높은 주소에 할당되거든요.

일단, 이를 설명하기 전에 메모리 주소에 영역 바이너리 옵션 타입 영역 바이너리 옵션 타입 대해 잠깐 보고 가보죠.

  • 메모리 주소 (Memory Address)

여러분들이 게임이나 어떤 프로그램을 다운로드 할 때 한 번쯤은 반드시 들어봤을 단어가 있습니다.

'32bit 운영체제 용', '64bit 운영체제 용'

또는 Windows 운영체제 사용자들 대다수가 한 번쯤을 봤을 x86(32비트) 또는 x64(64비트) 가 있죠.

이 둘의 차이점을 아주 간단하게 말하자면 비트의 너비(폭)이라고 보시면 됩니다. 비유하자면 고속도로에 32개의 차선이 있는데 이를 더 넓혀 64개의 차선으로 만든 것이죠. 직관적으로 말하자면 데이터 처리 단위라고 보시면 됩니다.

그리고 32개의 비트가 있다는 것은 0000 0000 0000 0000 0000 0000 0000 0000 부터 1111 1111 1111 1111 1111 1111 1111 1111 까지, 그러니까 2 32 의 경우의 수를 갖고,

64개의 비트가 있다는 것은 2 64 의 경우의 수를 갖는다는 것이죠.

이 둘의 차이는 생각보다 엄청나게 큽니다.

2 32 = 4,294,967,296 (약 43억)

2 64 = 영역 바이너리 옵션 타입 18,446,744,073,709,551,616 (약 1844경)

64bit 운영체제가 데이터 처리 단위가 더 많다보니 당연히 CPU 처리도 고속화 되고, 새로운 명령어들도 만들 수 있죠. 그렇다보니 64bit 운영체제에서는 32bit프로그램을 돌릴 수가 있지만, 32bit에서는 64bit용 프로그램을 돌릴 수가 없는 것입니다.

그럼 32bit와 64bit를 설명하느냐?

이 것이 바로 메모리와도 연관이 있기 때문입니다. (참고로 바이트 표기법은 사실 우리가 아는 표현 방식이 아닌, KiB, MiB, GiB, TiB 등이 맞지만 익숙 한 것은 KB, MB, GB, TB 가 익숙할테니 여기 한 정하여 해당 표현으로 대체하겠습니다.)

메모리 한칸은 1byte의 크기를 갖고 있습니다. 그리고 32bit 운영체제에서는 32개의 비트, 즉 4바이트 길이의 주소를 갖습니다. 쉽게 말하자면 집 평수는 1평이고, 이 집을 가리키는 주소는 32자리로 표현된다고 보시면 됩니다. (길이와 크기를 혼동하시면 안됩니다.)

그리고 2 32 까지의 경우의 수가 있으니, 4 ,294,967,296 개의 주소를 가리킬 수 있다는 의미이고, 이는 1바이트 크기의 메모리가 4 ,294,967,296 개 까지 인식이 가능하다는 것, 즉 메모리의 최대 크기는 4 ,294,967,296 byte = 4GB 이죠. 옛날 32bit 운영체제가 대다수인 시절 메모리를 4GB까지밖에 설치 할 수 없는 이유가 여기서 나오는 것이죠.

그럼 64bit 운영체제는 어떨까요? 64bit 는 8바이트이므로 하나의 주소가 8바이트 길이의 주소를 갖는다는 것을 알 수 있겠죠? 그리고 마찬가지로 2 64 개. 즉, 18,446,744,073,709,551,616 개의 주소를 가리킬 수 있다는 의미고 이는 18,446,744,073,709,영역 바이너리 옵션 타입 551,616 byte = 16EB(엑사바이트) = 16384TB(테라바이트) 까지 입니다. 한 마디로 이론적으로는 램을 16EB까지 설치 할 수 있다는 것이죠. (엑사바이트는 테라바이트의 1024배입니다.)

(참고로 아직 16EB를 지원하는 OS는 없고 제가 알기로는 리눅스에서 8EB까지 지원하는 버전이 있다고는 들었습니다. 메인보드에서도 지원 한계량이 있어서.. 그렇다고는 해도 아직까지는 충분한 양입니다. 요즘에는 대부분 32GB 또는 64GB까지는 지원하는 것 같더군요.)

엄청난 차이라는 것을 볼 수 있겠죠?

하지만 이 주소를 2진수로 표현하기에는 너무 길어 우리는 보통 편의상 16진수로 표현합니다.

32bit에서는 0x00000000 ~ 0xFFFFFFFF

64bit에서는 0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF

두 메모리를 좀 더 구체적으로 보자면 이렇게 됩니다.

요즘은 어떨지 모르겠지만, 보통 C언어에서 포인터(pointer)에 대해 배울 때 포인터는 메모리 공간 주소를 가리키는 변수이고, "모든 포인터는 모두 4byte의 동일한 크기를 갖는다." 라고 배우지만 이는 사실 32bit 운영체제에 한정해서 사실인 것이죠.

위에서 배운 내용을 생각해보면 포인터는 '주소'를 가리키기 때문에 운영체제가 몇비트이냐에 따라 달라집니다. 주소의 길이가 달라집니다. 32bit에서는 포인터의 크기가 4byte라면, 64bit에서는 주소의 길이가 8byte이기 떄문에 당연하게도 포인터의 크기 또한 8byte일 수밖에 없죠.

더군다나 요즘은 아주 오래된 컴퓨터가 아니면 64bit 운영체제이기 때문에 '운영체제 비트에 따라 포인터의 크기가 달라진다' 라고 배우거나, '보통의 경우 포인터는 8byte의 크기를 갖는다'로 가르치는 것이 앞으로의 대세가 되지 않을까 싶습니다.

(애플도 카탈리나부터 32bit 프로그램 지원을 중단했고, 확실하게 32bit 운영체제는 한계가 많기 때문이죠.)

이렇게 메모리의 구조를 살짝이나마 알아보았습니다.

그리고 이 다음 설명부터는 64bit 를 기준으로 설명하도록 하겠습니다.

다시 복기하고 넘어가자면 메모리 한 칸의 크기는 1바이트다.

64비트 운영체제는 메모리 한 칸의 주소를 64비트로 표현하며 이는 8바이트와 같은 의미이고, 메모리 주소를 8바이트로 표현하기 때문에 포인터(주소를 가리키는 변수)의 크기 또한 8바이트이다.

내비게이션 영역 및 비용

Navigation Areas 는 특정 영역을 걸어서 지나가는 데 드는 비용(어려움)을 뜻하며, 경로를 탐색할 때에는 낮은 비용 영역순으로 선택됩니다. 또한 각각의 내비메시 에이전트에는 Area Mask 가 있어 에이전트가 이동할 수 있는 영역을 지정할 수 있습니다.

위의 예제에서, 영역 타입은 아래 두 개의 사용 사례에 사용됩니다.

  • Water 영역에는 높은 비용을 할당되어 있어 걸어가는 데 더 많은 비용이 소요됩니다. 이를 통해 물이 얕은 곳을 느리게 걸어가는 시나리오를 처리할 수 있습니다.
  • Door 영역에는 특정 캐릭터만 접근할 수 있습니다. 이를 통해 사람은 통과할 수 있지만 좀비는 통과할 수 없는 시나리오를 처리할 수 있습니다.

영역 타입은 내비메시 베이킹에 포함된 모든 오브젝트에 할당할 수 있으며, 각각의 오프 메시 링크에는 영역 타입을 지정하는 프로퍼티가 있습니다.

경로 탐색 비용

비용을 조절하여 경로 탐색자가 경로를 탐색할 때 선호하는 영역을 제어할 수 있습니다. 예를 들어 한 영역의 비용을 3.0으로 설정하면, 해당 영역을 지나가기 위해서는 다른 경로로 지나갈 때보다 세 배의 시간이 걸립니다.

비용의 작동 방식을 완전히 파악하기 위해 경로 탐색자의 작동 방식을 살펴보겠습니다.

경로 탐색 도중 거쳐가는 노드와 링크

Unity는 A*를 사용하여 내비메시에서 최단 경로를 계산합니다. A*는 연결된 노드 그래프에서 작동합니다. 이 알고리즘은 경로 시작점에서 가장 가까운 노드에서부터 시작하여 여러 연결 노드를 거쳐 목적지에 도달합니다.

Unity 내비게이션은 폴리곤 메시로 나타나기 때문에 경로 탐색자는 우선 각 폴리곤에 노드의 위치가 되는 포인트를 배치해야 합니다. 최단 경로는 이 노드들 사이에서 계산됩니다.

위 그림의 노란 점과 선은 A*를 따라 가로지르는 순서에 따라 노드와 링크가 내비메시에 배치되는 방식을 보여줍니다.

두 노드 사이를 이동하는 비용은 이동하는 거리와 링크 아래의 폴리곤 영역 타입에 설정된 비용에 따라 달라지며, 이를 거리 * 비용 이라고 합니다. 실제로 영역의 비용이 2.0인 경우 해당 폴리곤을 지나가는 거리는 두 배로 표시됩니다. A* 알고리즘에서는 모든 비용이 1.0 이상이어야 합니다.

최종 경로에서의 비용의 영향은 조절하기 어려우며, 특히 경로가 길수록 더 어렵습니다. 비용을 다루는 가장 좋은 방법은 영역 바이너리 옵션 타입 비용을 힌트로 취급하면 됩니다. 예를 들어, 에이전트가 오프 메시 링크를 너무 자주 사용하지 않게 하려면 이 비용을 늘리면 됩니다. 하지만 에이전트가 보도 위를 걷는 것을 선호하는 동작을 조절하기는 어려울 수 있습니다.

어떤 레벨에서 경로 탐색자는 항상 최단 경로를 선택하지 않는다는 점도 알아두어야 합니다. 이는 노드 배치 때문입니다. 작은 장애물 옆에 큰 열린 영역이 있을 때, 즉 내비게이션 메시에 아주 큰 폴리곤과 아주 작은 폴리곤이 포함될 때 이런 현상을 쉽게 볼 수 있습니다. 큰 폴리곤의 노드는 해당 폴리곤의 아무 곳에나 배치될 수 있는데, 경로 탐색자의 관점에서 볼 때 이것이 우회 경로로 보일 수 있습니다.

영역 타입비용Areas 탭에서 전역으로 설정하거나 스크립트를 사용하여 에이전트별로 오버라이드할 영역 바이너리 옵션 타입 수 있습니다.

영역 타입

영역 타입은 내비게이션 창영역 탭에 있습니다. 29 개의 커스텀 타입과 Walkable, Not Walkable, Jump 등 3개의 빌트인 타입이 있습니다.

  • Walkable은 걸을 수 있는 영역을 의미하는 일반적인 영역 타입입니다.
  • Not Walkable은 내비게이션을 방지하는 일반적인 영역 타입입니다. 내비메시가 해당 영역을 지나가지 못하게 하면서 특정 오브젝트를 장애물로 표시할 때 사용할 수 있습니다.
  • Jump는 자동으로 생성된 모든 오프 메시 링크에 할당되는 영역 타입입니다.

다른 영역 타입의 오브젝트가 여러 개 중첩되는 경우 일반적으로 최종 생성된 내비메시 영역 타입이 우선적으로 적용됩니다. 하지만 Not Walkable 은 예외적으로 항상 최우선적으로 적용됩니다. 이를 통해 특정 영역을 차단해야 하는 경우 확실하게 차단할 수 있습니다.

영역 마스크

각 에이전트에는 내비게이션에 사용할 영역을 정의할 수 있는 Area Mask 가 있습니다. 영역 마스크는 에이전트 프로퍼티에서 설정할 수 있으며, 런타임 중에는 스크립트를 사용하여 비트마스크를 조작할 수 있습니다.

영역 마스크는 특정 타입의 캐릭터만 해당 영역을 지나갈 수 있게 할 때 유용합니다. 예를 들어 좀비에게서 도망치기 게임에서 각각의 문 아래 영역을 Door 영역 타입으로 표시하고, 좀비 캐릭터의 영역 마스크에서 Door 영역을 선택 해제하면 좀비가 해당 영역을 통과하지 못합니다.

# 데이터 타입

thumbnail

모든 숫자 타입은 UNSIGNED 옵션을 사용할 수 있습니다. UNSIGNED 옵션을 사용하면 0과 양수만을 표현하게 됩니다.우선 가장 기본적인 숫자라고 할 수 있는 정수 타입에 대해 알아보겠습니다.컴퓨터의 실수 표현에는 고정 소수점과 부동 소수점 방식이 존재합니다.

thumbnail

데이터 타입과 변수

값을 저장할 수 있는 메모리상의 공간.프로그래밍 언어에서 사용할 수 있는 데이터의 종류를 말한다.데이터 타입은 데이터를 메모리에 저장할 때 확보해야하는 메모리 공간의 크기, 할당할 수 있는 유효한 값에 대한 정보, 메모리에 저장되어 있는 2진수 데이터를 어떻게 해석할지

thumbnail

post-thumbnail

TypeScript 타입

자바스크립트를 공부하다 보면, 자연스럽게 타입스크립트(TypeScript)를 자주 접하게 됩니다. 타입스크립트 개념을 배우는 과정에서, 개별 시리즈에 게시물을 포스팅하는 방식으로 타입스크립트 공부를 정리해보고자 합니다.

thumbnail

post-thumbnail

데이터 타입(원시 타입)

thumbnail

post-thumbnail

TypeScript 소개

자바스크립트를 공부하다 보면, 자연스럽게 타입스크립트(TypeScript)를 자주 접하게 됩니다. 타입스크립트 개념을 배우는 과정에서, 개별 시리즈에 게시물을 포스팅하는 방식으로 타입스크립트 공부를 정리해보고자 합니다.

thumbnail

JS Essential: 참조와 복사

해당 게시물은 도서 와 패스트캠퍼스 강의 "김민태의 프론트엔드 아카데미 : 제 1강 JavaScript & TypeScript Essential"를 참고하여 작성되었습니다.

thumbnail

JS Essential: 값(Value)과 타입

해당 게시물은 도서 와 패스트캠퍼스 강의 "김민태의 프론트엔드 아카데미 : 제 1강 JavaScript & TypeScript Essential"를 참고하여 작성되었습니다.

thumbnail

post-thumbnail

Core Javascript 01 데이터 타입

기본형 : 할당이나 연산시 값이 담긴 주솟값을 바로 복제한다. 기본형은 불변성(immutability)을 띈다.숫자 number문자열 string불리언 booleannullundefined심볼 symbol : 유일한 식별자(unique identifier)를 만들고 싶

국가기상위성센터

  1. ① 위성 : 천리안위성 1호 또는 천리안위성 2A호 위성 종류를 선택
  2. ② 센서 : 선택된 위성 검색 조건 항목에 포함된 센서 종류 선택, 위성 검색된 조건에 포함되는 센서만 표출된다.
  3. ③ 레벨 : 위성자료의 레벨 종류 선택, 검색된 조건에 포함되는 자료 레벨만 표출된다.
  4. ④ 종류 : 위성자료의 검색 종류 선택, 이미 검색된 조건에 선택된 항목들에 포함되는 자료 종류만 표출된다.
  5. ⑤ 관측영역 : 전구, 동아시아, 한반도 등 영역을 선택, 위성에 따라 선택 가능한 영역만 표출된다.
  6. ⑥ 포맷 : 위성자료의 파일 포맷 종류 선택, 전체, 텍스트(asc), 이진(bin, HE5, H5, NetCDF), 영상(png)
  7. 위성자료서비스 자료신청 화면 -->

버튼 기능

검색된 위성자료를 다운로드 하기 위해 임시로 정보를 저장히기 위한 화면으로, 여러 검색조건을 통해서 자료요청 에 저장된 자료를 체크박스를 통해 일괄 선택하여 자료 서비스를 요청 할 수 있습니다.

자료요청 목록 주요 항목

위성자료서비스 Wishlist 화면

  1. ① 검색 조건 영역 : 자료요청 에 담긴 위성자료 항목을 지정한 기간을 입력하여 목록을 제공
  2. ② 자료주기 : 상세보기 화면을 통해서 등록된 위성자료의 사용자가 설정한 주기 옵션 정보
  3. ③ 자료 갯수 : 해당하는 항목이 포함하고 있는 위성자료의 개수로, 개별자료조회를 영역 바이너리 옵션 타입 통한 항목은 1로 표시되며, 상세보기를 통해 신청한 자료는 사용자가 지정한 기간에 포함된 위성자료의 갯수를 표시
  4. ④ 자료 용량 : 해당 위성자료가 포함하고 있는 자료의 전체 파일 용량
  5. ⑤ 포맷 변환 : 위성자료가 포맷 변환을 제공하는 자료일 경우 선택 박스로 표시되며, 변환 가능한 포맷 종류를 선택 할 수 있는 옵션 제공
  6. 위성자료서비스 자료요청 목록

자료요청 항목

위성자료서비스 Wishlist 화면

  1. ① 요청 목적 : 위성자료 요청 목적을 선택
  2. ② 자료 압축 분활 : 위성자료는 압축을 하여 제공하기 때문에 대용량 자료는 분할하여 제공하게 된다. 옵션에서 제공되는 압축 용량을 선택한다.
  3. ③ 포맷 : 압축 포맷 형식을 선택한다.
  4. ④ 신청 사유 : 위상자료 신청 사유를 입력한다.
  5. 위성자료서비스 자료요청 화면

자료 다운로드

자료요청 화면에서 요청한 자료의 이력을 확인하고 다운로드 기능을 제공합니다. 요청한 자료는 순차적으로 처리하여 제공하기 때문에 처리 상태를 확인하여 다운로드를 할 수 있습니다.
다운로드가 가능한 상태가 되면 다운로드 버튼이 표시되며, 다운로드 버튼을 클릭하여 신청한 자료를 다운로드 받습니다.
다운로드 가능한 자료는 관리자가 지정한 일정 기간이 지나면 자동으로 삭제되며, 자료가 삭제되면 다운로드 버튼은 자동으로 비활성화 됩니다.

주요 항목

  1. ① 요청일 : 자료를 요청한 시간 정보를 보여준다.
  2. ② 처리상태 : 요청한 위성자료의 요청 처리 흐름 상태를 보여준다. (처리대기, 처리중, 처리완료)
  3. ③ 다운로드 버튼 : 처리 완료된 파일인 경우 다운로드 받을 수 있는 버튼이 활성화 된다. 일정 기간이 지나면 요청한 자료는 자동으로 삭제되고 다운로드 버튼은 비활성화 된다.
  4. ④ 상세정보 버튼 : 요청한 자료의 상세 목록 정보를 보여준다.
  5. 위성자료서비스 다운로드 화면 -->


0 개 댓글

답장을 남겨주세요