이번에는 파이프와 리다이렉션에 대해 알아보도록 하자. 파일 디스크립터(File Descriptor, fd) : 어떤 명령어를 입력하게되면 해당 명령어가 파일로서 존재한다. 그 파일을 사용해서 작업을 처리하는것을 '프로세스'라 부르는데,프로세스가 생성이되면, 커널이 해당 프로세스를 관리하기 위해 파일 디스크립터 테이블을 생성하여 번호를 할당한다.자주사용되는 파일들에게 기본적으로 번호를 미리 할당해 두어 조금 더 빠른 처리를 수행한다. - 커널은 프로세스를 처리하기 위해 사용되는 장치나 다른 프로세스에 정보를 파일 디스크립터 테이블이라는 곳에 저장을 한다. - 파일 디스크립터 테이블에는 숫자 0번부터 순차적으로 할당되며, 가장 기본적으로 사용되는 파일 디스크립터에 대해서는 미리 지정되어 예약되어있다. 예약되..
# 위와같이 코드를 작성하면 우리가 앞서 하나하나 작성해주며 하나의 비트씩 밀며LED를 제어했던것을 반복문을 통해 제어할 수 있다. # 특정 비트만 1로 만들기 먼저 PortD에 f0이라는 값을 써 준다. 16진수 f 는 2진수의 1111에 해당된다. 따라서 PORTD에는 0b11110000의 값이 써 지게 된다.우리가 16진수를 주로 사용하는 이유는 16진수 한자리가 2진수 4자리를 표현 할 수 있기 때문이다. 이렇게 셋팅되어있는 상태에서 다른 값들은 유지한채 특정비트 여기서는 0번쨰비트 (b0)만을 1로 바꾸고싶을때는 어떻게 해야할지 알아보도록 하자. 비트연산자중에 OR이 있다. 논리연산의 OR과는 다르다. 비트연산의 OR은 | 이고, 논리연산의 OR는 ||이다. 따라서 우리가 알다시피 OR연산을 사..
XPlained 보드에 아두이노 보드를 연결하여 실습을 진행해보도록 하자. # Basic Shield에는 8개의 LED가 붙어있다. 8개의 LED를 비트연산을 통해 알아보도록 하자. # 사용법은 간단하다. 그냥 맞물리는 두개를 합체시켜서 사용하면 된다.이중에서도 위에 표시된 점퍼(Jumper) 라는것은, 이 보드가 LED외에도 여러 다른 기능들을 넣어놨기때문에이를 이용해서 어떤기능을 이용할 지 선택을 해 주는것이다.기본 셋팅이 LED에 가있으므로, 그대로 두면 된다. Basic Shield의 LED는 아두이노의 경우 디지털 출력 번호로 붙지만, XPlained를 사용하고있기 때문에어디에 연결이 되어있는지 알고 있어야 한다. LED는 포트D의 8개의 비트에 각각 연결이 되어있는 상태다.그렇기 때문에 DDR..
# 서버측 기초 소켓통신 구조 sockaddr_in : IPv4의 주소정보를 담기위해 정의된 구조체 - sin_family · AF_INET : IPv4 프로토콜에 적용하는 주소체계 · AF_INET6 : IPv6 프로토콜에 적용하는 주소체계 · AF_LOCAL : 로컬통신을 위한 유닉스 프로토콜 주소체계 - sin_port · 16비트 PORT번호를 저장 - sin_addr · 32비트 IP주소정보를 저장 - sin_zero · 구조체 sockaddr_in의 크기를 구조체 sockaddr과 일치시키기 위한 의미 없는 멤버. 단 반드시 0으로 채워야한다. 네트워크 바이트 순서와 인터넷 주소 변환 - CPU가 데이터를 메모리에 저장하는 방식을 '호스트 바이트 순서'라 하는데 여기엔 두가지가 있다. 리틀엔디..
이번엔 실제 코드를 가지고 LED의 불빛을 제어해보도록 하자. # 지난번 진행한 코드 이렇게 되면 DDRB 에서는 LED가 연결된 5번비트를 출력으로 바꿔줬고, PORTB에서는 동일한 5번비트를 1로 써줘서 High상태로 출력을 만들어줬다. 실제 이 코드를 한번 보드에 옮겨서 실행을 해보자. # 하단의 깜빡이는 LED를 코드를 입력하여 제어해보도록 하자. # 보드를 연결하면 현재 컴퓨터에 연결된 장비가 아트멜스튜디오상에 표시된다. 코드를 실행하기에 앞서 지난번에 설정해둔 설정을 변경해주어야한다. # 실제 보드를 연결하였기 때문에, 속성(Properties) 창에서 연결된 장비를 선택해주고 인터페이스를 설정해준다. 인터페이스에는 ISP와 debugWIRE 이 두개중에 선택할 수 있는데, ISP는 디버깅을 ..
이번엔 실습보드 없이 간단한 프로젝트를 만들어보도록 하자. 먼저 프로젝트부터 생성해보자. # 비주얼스튜디오와 동일한 구조다. 프로젝트명, 경로를 지정해주면 된다. 그리고 기다리면 이렇게 디바이스를 선택하는 화면이 나온다. # PC에서 비주얼스튜디오를 사용할 때는 이 부분이 없지만, 사용할 프로세서에 따라 메모리 크기라던지 조건이 다르기때문에 그에 맞는 옵션을 설정 할 수 있도록 모델을 골라줘야한다. 우리가 사용할 부분은 ATmega 시리즈 이기에, 그 중 168PB를 선택하고 프로젝트를 생성해준다. # 비주얼스튜디오와 동일한 구조를 띄고 있다. 우측에 솔루션 탐색기가 있고, 편집할 소스코드가 깔려서 생성이 된다. 헤더파일로는 avr헤더가 선언이 되어있고, 메인에 소스코드를 작성하면 된다. 우리가 진행할 ..
Atmel Studio7 설치에대해 알아보자.우리가 사용할 수 있는 버전으로는 4.x, 6.x, 7.x 버전이 존재Atmel Studio는 버전이 올라가며 점차 AVR 8bit, 32bit 뿐 아니라 ARM계열의 칩까지 모두 지원을 하기 때문에앞으로 Atmel 제품을 이용해 개발을 진행하려 할 때 최신버전의 툴을 이용해서 개발할 것이 권장된다. 그중에서 우리의 개발 환경에 맞는(호환되는) IDE 버전은 6.x 이상의 버전이면 가능하지만 보다 최신버전을 설치하여 개발을 진행해보도록 하자. http://www.microchip.com/avr-support/atmel-studio-7 # 하단에 다운로드란에서 둘중 어느거로 설치를 진행하건 상관없다. # 최초에 라이센스 동의 및 디폴트경로 그리고 오류발생시 서버..
1. 학습 내용 · 디지털 출력, 입력 - LED, 7SEG, LCD, Buzzer 등 · 아날로그 입력 - 전압, 온습도 센서 AVR 이라는 MCU의 디지털 출력 및 아날로그 입력을 알아보도록 한다.디지털 출력으로는 LED의 불빛 제어, 7SEG에 숫자 출력, LCD에 글자 표시 또는 부저를 이용해서 멜로디 연출 등아날로그 입력으로는 전압측정 또는 온습도 센서를 읽어들여서 표시하는 예제 정도를 다뤄볼 예정 2. 학습 과정 · 제어할 대상에 대한 이해 · 코딩과 디버깅의 반복 코드는 C언어로 작성, 컴파일 이후 JTAG 이라는 툴을 이용해서 작성한 프로그램을 실습 보드에 넣고의도한대로 작동 하는지 확인하게 된다. 이 과정을 디버깅 이라고 한다. 3. AVR · 8-bit AVR의 대표 모델(마이크로컨트롤..
1. 다운로드 수 변경# 다운로드를 누르면 링크로 연결되어 값이 넘어가게 된다. 그러나 이전에 살펴봤듯, download.php 파일을 열어보면 mysql_query("update $t_board"."_$id set download".$filenum."=download".$filenum."+1 where no='$no'");이렇게 쿼리를 넘기고있다. 따라서 변수 filenum에 해당되는 부분을 조작해주면 다운로드수가 변경될 수 있다. 우선 소스코드보기에서 download.php? 이하 부분을 복사한 뒤, URL상으로 루트경로 이후에 붙혀넣기 해줘서쿼리를 조작할 수 있다. http://100.100.100.110/zboard/download.php?id=vul&page=1&page_num=20&catego..
PHP 취약점 중 RFI에 대해 알아보자. RFI ( Remote File Include ) : 파일을 include 할 때 생기는 취약점 includerequire 'db.php';등 위와같이 php코드로 작성된 외부의 파일을 읽어오는 경우 생기는 취약점중 하나로 RFI 가 있다. - 원격 파일도 include 가능(로컬파일에 있는 php코드 뿐 아니라 원격지에 있는 파일도 include 가능) - URL 형태로 include 가능(PHP 기능중 하나) # 위와같이 기능하려면 php설정 중 url_include설정을 On 으로 켜줘야 한다.그다음 restart를 해줘서 설정이 적용되게 해준다. # zboard/skin/zero_vote 경로에 접근하여 파일을 봐보면 객체에 접근이 가능한 것을 알 수 있..