본문 바로가기

학부_대학원

(121)
AVR 개발 - LED
[빵판] Bread Board 빵판을 사용해 본다~기본적으로 빵판의 구조는 밑의 [그림-1]과 같다.윗 부분의 빨간색 부분은 +, 파란색 부분은 -로 되어있다. 맨 아랫 부분도 같이.저 부분은 선이 이렇게 전류가 흐른다.반면에 밑에 초록색으로 세로로 줄을 그어 놓은 부분들은 | 이렇게 전류가 흐른다. [그림-1] 그래서 테스트를 해보면 + 부분은 세로 부분에 꼽고 마이너스 부분은 가로 부분에 꼽았다.그리고 다이오드를 연결해보면 + 부분에 직접 닿지 않지만 세로 부분에 있고,밑의 - 부분은 가로 부분에 연결되어있다. 그렇기 때문에 + 에서 -로 전류가 흐르는 것이다. [그림-2]그 결과 다이오드의 불이 켜진다. 이러한 배선?을 이용하여서 저항과 연결선을 이쁘게? 연결한다.
Firmware Analysis [1] Firmware펌 웨어는 디바이스에서 동작하기 위한 모든 코드들의 집합, 모음으로 설명 할 수 있다.그래서 보통 펌 웨어는 bootloader, kernel, file system 뿐만 아니라 디바이스를 작동시키기 위한 추가적인 자원들이 포함되어 있다. 공격자의 입장에서는 file system을 분석 함으로써 다양한 공격 백터를 찾을수 있고, bootloader의 하드웨어 취약점 등 다양한 방법으로 리모트 쉘, 로컬 쉘을 획득할 수 있다.또, 분석가[포렌식,악성코드 분석]는 firmware 전반적인 부분에서 어떠한 부분에서 위험이 발생했는지 확인할 수 있다. [실습]ARM 환경에 맞춰서 Bootloader, kernel file system을 이용하여서 이미지 만들기bootloader 분석 Firmwar..
하드웨어 공부 시작~ AVR 코딩 부터 시작하면서 공부 시작~그 전에... 보드, ISP 등.. 전부 다 VCC, GND, RX, TX와 같이 적혀 있는 부분들이 있다. 용어를 정리하고 간다~ VCC = Voltage of Common Collector(공통 콜렉터용 전압. 보통 5V)GND = Ground; 접지(보통 0V)RX = receiverTX = trasmitter 위와 같이 설명이 가능하다. VCC가 항상 뭘까.. 저렇게 설명하는데 중학교인가 고등학교 물리 시간 내용이 필요하다.그냥 VCC는 건전지라고 생각하자. 그리고 철 선을 연결하고 철 판에 연결하면 결과 건전지[5V] --> 철선 --> 철 판[0V]으로 전류가 이동 할 것이다. 이러한 이유가 발생하는 이유는 중학교 물리시간!! 전류는 항상 전위가 높은곳에..
VFS - Virtual File System[1] Unix 시스템을 공부하다 보면, VFS 라는 개념이 나온다.먼저 VFS가 나오게 된 배경을 알아본다. 하나의 시스템에서 하나의 파일 시스템만 사용하지 않는다.예를들어서 하나의 hdd를 여러 파티션을 나누어서 사용하는 경우를 생각해보자. 하나의 파티션은 fat 파일시스템, 다른 하나는 ext2 파일 시스템, 나머지는 msdos 파일 시스템으로 나누어서 사용한다고 생각하자.각 파티션에 TXT AVI IMG 파일을 분산해서 저장 해 놓았다.이럴 경우 사용자 입장에서 해당 파일에 접근해서 데이터를 읽기 위해서 어떠한 과정이 필요한지 생각해보자.Passwrod.txt 파일을 가져오기 위해서는 fat 파일 시스템에 맞는 open으로 핸들을 획득하고 그 다음 fat_read 나 fat_write 함수를 사용할 것이..
[*nix] 자가 삭제(unlink), 프로세스 이름 변경(prctl) Linux Anti Reversing 말이 안티 리버싱이지 찾기 힘들게 하는 기법. 파일자가 삭제 #include "stdio.h" int main(int argc, char* argv[]){unlink(argv[0]);} link : 쉽게 말하면 Hard link이다. 파일을 inode 블록을 가리키게 한다. 프로세스 이름 변경 NAME prctl - operations on a process SYNOPSIS #include int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); PR_SET_NAME (since Linux 2.6.9) Set the name of the ca..
리눅스 커널 디렉토리 구조 리눅스 커널 구조 확인 richong@ubuntu:/usr/src/linux-3.16.43/arch/x86/kernel$ pwd/usr/src/linux-3.16.43/arch/x86/kernel arch Directory리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현되어 있고 architecture를 의미한다. 각 CPU에 해당하는 디렉토리에 기능들이 구현되어 있다.richong@ubuntu:/usr/src/linux-3.16.43/arch$ lsalpha arm64 c6x hexagon Kconfig metag mn10300 powerpc sh um xtensaarc avr32 cris i386 m32r microblaze openrisc s390 sparc unicore32arm blackfi..
Linux Kernel Build 항상 커널 만들 때, 아무 생각없이 명령어만 따라 쳤는데, 정리하려고 한다. 리눅스 커널을 만드는 과정은 크게 3단계로 나뉘어진다. 1. 커널 구성 : Kernel Configuration2. 커널 컴파일 : Kernel Compile3. 커널 인스톨 : Kernel Installation 사전에 linux kernel을 다운로드하여 /usr/src/ 디렉토리에 압축 해체한다. 1. 커널 구성이란?커널 이미지를 만들 때, 주변의 기기나 네트워크 상태 등을 고려하지 않고 만들면 분명 문제가 생길 것이다.예를들면, 어떤 커널 이미지는 무선 전용 네트워크인데 설치되는 호스트는 무선 카드가 없으면 동작 하지 않을 것이다. --> 예가 맞는지는...그래서 이러한 구성을 해줘야 하는데, 아무런 지식없이 하는건 하기..