본문 바로가기

전체 글

(133)
[백준 1043 C++] 거짓말 오늘은 백준(BOJ) 1043번 거짓말 문제에 대해 다뤄볼 예정이다. 미확인 도착지 문제 링크 (백준(BOJ) 1043번 문제): https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 문제 설명 백준 1043번 거짓말 문제는 지민이가 각 파티에서 자신의 이야기의 진실을 알고 있는 사람이 있을 경우, 이야기를 과장되게 할 수 없으므로 이야기의 진실을 모르고 있는 사람들만 모인 파티의 최대 개수를 세는 문제이다. 즉, 다시 말해 파티 1에 [사람 1 (진실 앎),..
[Python] 특별 메서드 (Special Method) 특별 메서드 (magic method) 특별 메서드는 파이썬 인터프리터가 호출하기 위한 것으로, 소스코드에서 my_object.__len__()으로 직접 호출하지 않고, len(my_object) 형태로 호출한다. 만약 my_object가 사용자 정의 클래스의 객체면 __len__() 객체 메서드를 호출한다. 즉, len(), iter(), str() 등 관련된 내장 함수가 특별 메서드가 구현되어 있는 경우, 특별 메서드를 호출하며, 이 메서드들은 클래스 내부나 콘솔의 테스트 코드에서 직접 호출하지 않는다. 예제 1. __len__(), __getitem__()를 사용한 간단한 예제 예제 2. __repr__(), __abs__(), __bool__(), __add__(), __mul__() 를 사용한 ..
오픈소스 프로젝트에 AFL Fuzzer 붙이는 방법 오늘은 PDF-Writer라는 오픈 소스 프로젝트에 AFL Fuzzer를 붙여보겠습니다. [AFL++] Software Testing Tool & Fuzzing Tool https://github.com/AFLplusplus/AFLplusplus GitHub - AFLplusplus/AFLplusplus: The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enh The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++..
디바이스 드라이버 (Device Driver) 개념 오늘은 디바이스 드라이버에 대한 내용을 정리해보도록 하겠습니다. 디바이스 드라이버 (Device Driver)란? 디바이스들을 동작시키기 위해서는 구동용 소프트웨어가 필요한데, 이러한 소프트웨어를 디바이스 드라이버라고 합니다. 특히, 응용 프로그램에서 하드웨어 장치를 이용해서 데이터를 직접 읽고 쓰거나 제어해야 하는 경우 또는 소프트웨어적인 디바이스를 만든 경우 디바이스 드라이버 사용합니다. 디바이스 드라이버 특징 - 디바이스와 시스템 사이에 데이터를 주고받기 위한 인터페이스를 제공하는 커널 내부 기능 중 하나 - 커널의 일부분으로 내장되어 커널 모드에서 실행되며, 메모리에 상주하며 스왑 되지 않음 - 디바이스 드라이버는 디바이스를 하나의 파일로 추상화 시켜줘서, 디바이스를 디바이스 파일 (/dev/…)..
리눅스 디렉터리 구조와 명령어 정리 리눅스 디렉터리 /proc/modules : 현재 시스템에 설치되어 있는 모듈을 보여줌 /proc/ksyms : Symbol table을 가지고 있는 텍스트 형태의 파일 /usr/include/linux : 커널 라이브러리 /usr/src/ : 커널 소스 코드 / : 최상위 디렉터리 /root : 시스템 관리자인 root 사용자의 홈 디렉터리 /bin : 시스템을 사용하기 위한 기본적인 명령어들이 존재 /boot : 부팅에 필요한 커널과 부팅할 때 필요한 핵심 파일들이 존재, 부팅할 때 부트로더가 /boot 디렉터리에 있는 커널의 위치를 참조 /dev : 디바이스 파일 (device file)들이 존재 /etc : 시스템 환경 설정 파일들과 응용 프로그램 및 서버 프로그램 등의 환경 설정에 필요한 설정 ..
What is the Software Testing? 이번에 Software Testing이 무엇이며 왜 이것이 중요해지고 있는지에 대해 알아보도록 하겠습니다. Software Testing 이란? 소프트웨어 테스팅이란 소프트웨어 제품 또는 응용 프로그램이 해야 할 작업을 수행하는지 평가하고 확인하는 과정을 의미합니다. 그럼, 소프트웨어 테스팅을 하는 이유가 무엇일까요? 그것은 개발자가 개발을 할 때, 버그가 없는 완벽한 프로그램을 만드는 것이 불가능하기 때문에 테스팅 과정을 필요로 합니다. 그렇기에, 소프트웨어 테스팅을 하게 되면, 버그가 발생하는 것을 막을 수 있고, 소프트웨어 품질 향상과 개발 비용을 줄일 수 있다는 장점이 있습니다. 여기서 개발 비용이 줄어든다는 의미는 테스팅을 통해 초기에 문제점을 발견하여 해결할 경우, 이를 수정하기 위한 비용이 ..
[OSS-Fuzz] Suricata TestDriver Analysis Suricata에 대한 설명은 아래 링크에 있습니다. What is Suricata open source software? OSS-Fuzz에서 Suricata 오픈 소스를 대상으로 Fuzzing을 진행하였는데, 해당 테스트 드라이버에 대한 소스코드를 분석해보도록 하겠습니다. 해당 환경은 oss-fuzz에서 제공한 환경입니다. [oss-fuzz Github] GitHub - google/oss-fuzz: OSS-Fuzz - continuous fuzzing for open source software. OSS-Fuzz - continuous fuzzing for open source software. - GitHub - google/oss-fuzz: OSS-Fuzz - continuous fuzzing f..
[OSS] Suricata (Network Security Tool) Suricata Open Source Software 란? Suricata 는 높은 성능의 Network IDS, IPS, 그리고 네트워크 보안을 위한 모니터링 엔진을 제공하는 오픈 소스입니다. 여기서 IDS와 IPS란 무엇일까요? 간단히 말해 네트워크 보안 시스템을 말합니다. IDS(Intrusion Detection System) IDS는 침입 탐지 시스템으로 일반적으로 시스템에 대한 원치 않는 조작을 탐지하는 역할을 합니다. 이는 모든 종류의 악의적인 네트워크 트래픽 및 컴퓨터 사용을 탐지하기 위해 필요하며, 이 시스템은 Network Attack, Data Driven Attack(데이터 처리 공격), Privilege Escalation (권한 확대), 악성 소프트웨어 등과 같은 호스트 기반의 ..