반응형
반응형
1. Scapy 란?: Scapy는 네트워크 패킷 생성 툴로 패킷을 직접 만들거나 수정해서 보내고, 이를 캡처하거나 분석해서 네트워크 테스트, 디버깅 등에 활용할 수 있다. Scapy는 python 기반의 도구로 python 설치를 꼭 해줘야 한다. Linux에서 주로 사용되지만, Windows에서도 WSL을 통해 간단히 사용할 수 있다. 2. Scapy 특징L2~L7 패킷 생성 및 분석 가능간단한 Python 코드로 네트워크 테스트 가능ICMP, TCP, UDP, ARP 같은 다양한 프로토콜 지원 3. 윈도우 WSL에서 Scapy 설치하기3.1) WSL 사용하는 이유: Windows에서는 네트워크 패킷을 직접 조작하거나 전송하는 기능이 제한적이다. WSL은 Windows에서 Linux 환경을 만들어주는..
1. 사용 중인 인터페이스 확인하기: tcpdump 를 사용하기 위해 사용 중인 네트워크 인터페이스를 먼저 확인해야한다. 리눅스 쉘에서 ip link 명령어를 치면 아래처럼 나올 것이다. 현재 내가 사용중인 네트워크 인터페이스의 명칭은 'eth0' 이다.ip link2. tcpdump 명령어 종류리눅스에서 사용할 거라면 위처럼 ip link로 인터페이스를 확인 후 명령어에 적어주면 되고, 필자는 네트워크 스위치의 vlan 에서 tcpdump 를 사용할 예정이라 인터페이스 명에 vlan 을 적어주었다. 아래는 vlan 인터페이스를 통해 tcpdump 를 사용하는 예제이다. 2.1) 패킷 내용을 자세히 보기 (-vv): vlan1 인터페이스를 통해 ip address 로 부터 오는 패킷의 상세한 정보를 출력..
엔디안(Endianness)엔디안은 컴퓨터 메모리나 다른 데이터 포맷에서 다중 바이트 데이터를 메모리에 저장하거나 전송할 때, 바이트를 배열하는 방식을 말한다. 서로 다른 엔디안을 사용하는 시스템 간의 데이터 교환 시 각각의 시스템에 맞는 네트워크 바이트 순서로 변환해줘야 한다. 1. 빅엔디안(Big-endian) 데이터를 메모리의 가장 큰 주소부터 저장하는 방식이다. (큰 단위의 바이트가 메모리의 낮은 주소에 저장됨) ex) '0x12345678' 은 메모리에 [12 34 56 78] 순서로 저장 -> 네트워크 프로토콜, 특히 TCP/IP 스택은 빅엔디안을 사용한다.주소 1 | 0x12주소 2 | 0x34주소 3 | 0x56주소 4 | 0x78 2. 리틀엔디안(Little-endian) 데이터를 메모리..
1. 러스트 변수(Rust Variables)- 변수는 기본적으로 불변(immutable)이나, 필요에 따라 변수를 가변(mutable)로 만들 수 있다. 변수가 불변일 때, 어떤 이름에 한번 값이 묶이면 그 값은 바꿀 수 없다. 이를 테스트하기 위해 workspace 안에 variables라는 프로젝트를 만들어 보자.cargo new variables // variables 라는 프로젝트 생성cd variables/src // variables 디렉토리로 이동vi main.rc // src 디렉토리 내 main.rc 파일을 열어 코드 편집 아래의 프로그램을 작성하고 cargo run 명령어로 프로그램을 실행해보자. fn main() { let x = 5; println!("The value ..
오늘은 리눅스 커널 내 pr_debug를 활용해 디버깅 메시지를 출력하는 예제에 대해 써보려고 한다. 1. pr_debug 기본 사용법기본 사용법은 아래와 같고, 출력 메시지는 일반적으로 dmesg나 /var/log/messages를 통해 확인할 수 있다. 근데 CONFIG_DYNAMIC_DEBUG 또는 CONFIG_DEBUG가 활성화되지 않으면 아무 출력도 발생하지 않는다. (pr_debug 동작은 커널 설정(.config)에 의존한다.#include pr_debug("This is a debug message: variable=%d\n", my_variable); (1) CONFIG_DYNAMIC_DEBUG해당 컨피그가 활성화되면 디버깅 메시지가 동적으로 활성화/비활성화 가능하다. 디버깅 메시지를 런..
1. 카고(Cargo)란?카고는 러스트 빌드 시스템 및 패키지 매니저로 코드 빌드나 코드 작성에 필요한 외부 라이브러리(dependency)를 다운로드할 때나, 라이브러리를 제작할 때 겪는 귀찮은 일들을 줄여주는 도구이다. 아래의 명령어로 카고가 설치되어 있는지 확인해보자.cargo --version2. 카고로 프로젝트 생성하기본인이 원하는 디렉토리에서 아래의 명령어로 cargo 디렉토리 및 파일들을 생성해보자. hello_cargo 라는 이름으로 지정했고, 카고는 동일한 이름의 디렉토리 안에 파일들을 생성한다. hello_cargo 안으로 들어가 ls 명령어로 조회해보자.$ cargo new hello_cargo$ cd hello_cargo그럼 위와 같이 hello_cargo 안에 git, Cargo...