반응형

프로그래밍 30

Manifest

매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명한다. 안드로이드 애플리케이션을 구동하는데 필요한 설정값을 관리해주는 곳이라고 생각하면 편하다. 모든 앱 프로젝트에 manifests 폴더 안에 AndroidManifest.xml 파일이 있어야 한다. 매니페스트 파일 역할 1. 앱의 패키지 이름(식별자, 고유값) 앱을 패키징 할 때 빌드 도구가 이 값을 Gradle 빌드 파일의 애플리케이션 ID로 대체한다. 2. 앱의 구성 요소(activity, service, receiver, provider) 3. 앱이 시스템 또는 다른 앱의 보호된 부분에 액세스 하기 위한 필요한 권한 사용자 데이터, 특정 시스템 기능에 액세스 하기 위한 권한을..

Layouts 조사

1. LinearLayout - LinearLayout은 단 방향으로 모든 하위 요소를 정렬하는 뷰 그룹이다. - 두 가지 방향이 있다. 1. horizontal(수평) 2. vertical(수직) - LinearLayout의 모든 하위 요소는 순차적으로 스택 되므로, 세로 목록의 경우 너비에 상관없이 한 행당 하나의 하위 요소만 있게되며, 가로 목록의 경우 높이가 한 행 높이다. 주요 속성 android:orientation : 레이아웃 방향을 지정할 수 있다. android:gravity : 객체가 자신의 경계 내에서 X, Y축 모두에 내용을 배치하는 방법을 지정 2. FrameLayout - FrameLayout은 단일 항목을 표시하도록 설계되었다. - 일반적으로 단일 하위 뷰를 유지하는 데 사용해..

Palette 조사

안드로이드의 화면을 만들기 위한 도구들이다. 1. Text - TextView : 화면에 입력한 문자열을 보여준다. - EditText : 입력 기능이 가능한 텍스트이다. 여러가지 타입이 존제한다. 1) password 2) E-mail 3) Phone 4) Postal Address 5) Multiline Text 6) Time 7) Date 8) Number - AutoCompleteTextView : 사용자 입력을 자동으로 완성해주는 텍스트뷰이다. ex) "o"를 입력하면 "o"로 시작하는 리스트형태로 보여준다. - MultiAutoCompleteTextView : 자동완성텍스트 뷰와 비슷하다. 그러나 자동완성텍스트는 한번만 실행되지만 이것은 계속 사용이 가능하다. 대신 ',' 이후 자동완성 리스트..

Ethernet 헤더

Ethernet 헤더는 제일 낮은 계층의 프로토콜. 0 1 2 3 Destination Address Destination Address Source Address Source Address Ethernet Type X Ethernet 헤더는 도착지 MAC 주소가 6바이트, 출발지 MAC 주소가 6바이트 그리고 어떤 프로토콜의 데이터를 운반하는지 Ethernet Type 2바이트 필드로, 총 14바이트로 구성된다. Ethernet Type은 리눅스 환경에서 /usr/include/net/ethernet.h 파일에 정의되어있다.

체크섬(Checksum)

체크섬은 전송되는 헤더 및 데이터의 무결성을 보장하기 위해서 사용되며, 기본적으로 데이터의 합으로 계산된다. 통신 프로토콜에서 헤더 및 운반 중인 데이터에 오류가 발생하지 않았는지 확인하는 일반적인 방법은 바로 체크섬을 이용한다. 1. 데이터를 전송할 때 송신 측에서는 체크섬 값을 계산하고 이 값을 데이터와 함께 전송한다. 2. 데이터를 받는 수신 측에서는 송신 측에서 체크섬을 계산할 때와 동일한 알고리즘으로 체크섬을 계산한다. 3. 만약 데이터를 수신하는 쪽에서 계산된 체크섬 값과 수신된 체크섬 값이 서로 다른 값이 나오면 에러가 발생한 사실을 확인할 수 있다. 수신 측에서 데이터를 수신할 때 체크섬 계산 결과가 일치하지 않는다면 해당 패킷은 폐기되기 때문에 패킷을 전송할 때 정확한 체크섬 계산은 패킷..

Packet Capture 라이브러리2

다음은 이어서 전 소스코드 사용했던 pcap_findalldevs() 함수, pcap_freealldevs() 함수를 살펴볼 것이다. pcap_findalldevs() 함수 #include int pcap_findalldevs(pcap_if_t **, char *); 이 함수는 사용자 PC에 있는 모든 네트워크 디바이스 정보를 가져오는 함수이다. 매개변수로는 pcap_if_t 타입의 포인터 변수가 저장된 변수의 주소 값과 에러 메시지가 저장될 버퍼의 주소 값을 전달한다. 전에 사용했던 소스코드를 보면 이 함수를 호출한 뒤, alldevs 변수에 연결 리스트로 검색된 네트워크 카드 정보가 저장된다. pcap_if_t의 구조체는 pcap.h 파일에 정의되어 있다. struct pcap_if { struct ..

Packet Capture 라이브러리

RAW 소켓을 사용하지 않고, 라이브러리를 이용하여 패킷을 캡처하거나 프로토콜 헤더를 직접 작성하여 전송할 수 있다. 유닉스 계열에서 네트워크 패킷 캡처를 위해 가장 많이 libpcap 라이브러리를 사용한다. libpcap은 데이터 링크 계층부터 프로토콜 스택을 통과하는 네트워크 패킷을 캡처할 수 있도록, 네트워크 패킷을 전송할 수 있게 해 준다. 리눅스에서 libpcap 이용하여 네트워크 디바이스 정보를 확인해보자. 첫 번째로 libpcap 라이브러리가 필요하므로 다운로드를 하여보자. #apt-get install libpcap-dev 컴파일할 때는 gcc -o libpcap_test libpcap_test.c -lpcap 이렇게 해줘야 pcap.h 파일을 인식해 컴파일이 된다. 이렇게 실행하면 네트워..

RAW 소켓

RAW 소켓이란 소켓을 생성할 때 지정하는 옵션을 이용하여 데이터를 전송할 때 직접 프로토콜 헤더를 만들고, 데이터를 수신할 때도 프로토콜 헤더를 포함하여 수신하겠다는 의미로 소켓을 생성하는 것이다. 보통 소켓 관련 라이브러리 및 운영체제에서 프로토콜 헤더를 작성하여 직접 작성하지 않아도 되지만, 간혹 직접 다뤄야 하는 경우가 필요하다. 참고로 대부분의 Socket API는 RAW 소켓을 지원한다. 윈도우 XP 경우도 2001년에 출시되었을 때 Winsock 인터페이스를 통해서 RAW 소켓을 지원했다. 하지만, 해커가 RAW 소켓을 이용하여 직접 프로토콜 헤더를 만들어 공격에 사용하였기 때문에 3년 후의 윈도우 XP에서는 RAW 소켓의 사용을 제한하였다. 그래서 윈도우에서 학습할 경우 Packet Cap..

반응형