SMOTE 기법을 활용한 데이터 불균형 해소
·
카테고리 없음
데이터셋을 사용해서 머신러닝 모델을 학습시키기 전에 데이터 불균형으로 인한 과적합 문제를 해결하고 소수 클래스 예측 성능을 향상시키기 위해서 SMOTE 기법을 통해 데이터를 정제시키는 과정이 필요하다. 다음과 같은 데이터셋과 코드를 활용해 데이터셋을 불러오고 전처리 과정을 거쳐 클래스 불균형을 해소하고 모델을 학습/평가하는 과정을 진행했다. 사용 데이터셋: KDD99, NSL-KDD, UNSW-NB15Python + Pandas + scikit-learn + imbalanced-learn 기반 코드 1. SMOTE 기법이란SMOTE(Synthetic Minority Over-sampling Technique)는 데이터 불균형 문제를 해결하기 위한 대표적인 오버샘플링(oversampling) 기법이다...
파이썬을 이용해 웹 크롤링하기
·
카테고리 없음
먼저 작업 경로에서 크롤링을 할 폴더를 생성한다. 환경 데이터 분석 공모전을 위한 AI 모델 학습에 사용될 녹조 하천의 이미지와 일반 하천의 이미지를 크롤링하기 위해 다음 폴더로 'green_algae' 와 'clean_water' 폴더 2개를 생성해주었다. 파이썬 코드를 실행하면 작업 디렉토리에 지정한 이름의 폴더 2개가 생성된 걸 확인할 수 있다. 여러 웹 크롤링 툴이 있지만 데이터 모델을 학습시키기 위해 이미지를 많이 모아야해서 BingImageCrawler를 사용해 Bing에 있는 이미지들을 수집했다. from icrawler.builtin import BingImageCrawlerimport osfrom PIL import Imageimport imagehash# ✅ 저장 경로 설정base_..
Snort 설치 및 실습
·
카테고리 없음
네트워크 침입 탐지 기술에 대해 공부하면서 대표적인 오픈소스 NIDS인 Snort를 이용해서 네트워크 공격을 탐지하는 실습을 진행했다.   Snort는 네트워크 보안에서 널리 사용되는 오픈 소스 기반의 침입 탐지 시스템(IDS) 및 침입 방지 시스템(IPS)으로 네트워크 트래픽을 분석하고, 악성 활동을 탐지하며, 이를 차단하거나 경고를 생성하는 데 사용된다. 먼저 net-tools를 설치해주고 ifconfig 명령어로 기기의 ip 주소를 확인해준다sudo apt install net-tools sudo apt updatesudo apt-get install -y gcc libpcre3-dev zlib1g-dev libluajit-5.1-dev libpcap-dev openssl libssl-dev lib..
CryptoHack - Introduction to CryptoHack(Base64)
·
Wargame/CryptoHack
Base64 인코딩은 이진 데이터를 텍스트 형식으로 변환하는 인코딩 방식으로 이진 데이터를 ASCII 문자로 변환하여 텍스트 기반 시스템에서도 안전하게 전송하거나 저장할 수 있도록 한다.  주어진 hex string을 byte로 디코딩하고 base64.b64encode() 함수를 사용해 base64로 인코딩하면 flag를 구할 수 있다.
CryptoHack - Introduction to CryptoHack(Hex)
·
Wargame/CryptoHack
Hexadecimal으로 되어있는 string을 디코딩해서 flag를 구하는 문제이다힌트에서 파이썬 함수 중 bytes.fromhex()을 사용하면 hex를 byte로 디코딩 할 수 있다고 알려주고 있다  input값을 받아주고 함수를 이용해 flag 값을 구한다
CryptoHack - Introduction to CryptoHack(ASCII)
·
Wargame/CryptoHack
다음 주어진 정수를 아스키 문자로 변환해서 flag를 구하는 문제이다 아스키 문자로 변환하는 코드를 작성했고 다음과 같은 flag를 구할 수 있었다crypto{ASCII_pr1nt4bl3}
Overthewire bandit 22
·
Wargame/Overthewire bandit
21번 문제와 마찬가지로 디렉토리 목록을 조회한 후 cronjob_bandit23 파일을 조회했고 /usr/bin/cronjob_bandit23.sh를 파일을 열어서 쉘 스크립트를 확인했다 이 파일을 그냥 실행했을 때 사용자가 bandit22이기 때문에 bandit22의 비밀번호가 /tmp/$mytarget으로 전송된다. bandit23의 비밀번호를 구해야하기 때문에 mytarget에서 myname 변수 대신 bandit23을 넣어주고 실행하면 $mytarget값을 출력한다 cat /tmp/$mytarget 을 입력하면 다음 단계의 비밀번호를 얻을 수 있다
Overthewire bandit 21
·
Wargame/Overthewire bandit
Cron은 UNIX 및 Linux 시스템에서 특정 시간이나 주기적으로 명령어나 스크립트를 실행할 수 있도록 예약하는 스케줄링 도구로 주로 서버에서 백업, 로그 정리, 정기적인 데이터 수집 등의 작업을 자동화하는 데 사용된다.  디렉토리 목록에서 cronjob_bandit22 파일을 열어보았고 표준출력과 표준에러를 동시에 리디렉션하는 &> 기호와 /dev/null을 통해 정상출력과 오류출력을 휴지통으로 리디렉션하는 것을 확인할 수 있다. @reboot는 프로그램을 다시 시작하는 것을 의미하고 *****는 순서대로 분 시간 일 월 요일 명령어 자리를 나타낸다/usr/bin/cronjob_bandit22.sh 값을 리디렉션하기 때문에 cat 명령어로 이 파일을 조회했다  /etc/bandit_pass/band..
Overthewire bandit 20
·
Wargame/Overthewire bandit
setuid binary 파일을 이용해서 포트에 접속하고 이전 비밀번호와 대조해서 비밀번호를 얻는 문제이다 setuid 바이너리실행 파일이 setuid로 설정되면, 실행하는 사용자의 권한이 아니라 파일 소유자의 권한으로 실행됨 daemon사용자가 직접 실행하지 않아도 백그라운드에서 계속 동작하는 프로그램보통 이름이 "d"로 끝남 (예: sshd, httpd, mysqld 등)주로 서버 역할을 수행 (클라이언트의 요청을 받음)  주어진 setuid binary 파일인 suconnect를 실행해보았는데 도움말을 통해 ./suconnect 의 형식으로 포트에 연결되는 것을 알 수 있다 문제를 풀기 위해서는 터미널을 2개 생성해야 한다. 이전 문제처럼 기본 포트 2220번에 연결하는 걸로 생각했는데 문제의 po..
Overthewire bandit 19
·
Wargame/Overthewire bandit
문제에는 주어진 setuid binary 파일을 활용하고 실행해서 문제를 풀어야한다고 나와있다  첫 번째 문자(-)는 파일 유형소유자(User) 권한 (첫 번째 3자리)그룹(Group) 권한 (두 번째 3자리)기타 사용자(Others) 권한 (세 번째 3자리) 권한 문자 의미r (Read): 읽기 권한w (Write): 쓰기 권한x (Execute): 실행 권한s 또는 S: Setuid 또는 Setgid 비트t 또는 T: Sticky bit-rwsr-xr-x 처럼 소유자 권한에서 x 대신 s가 나타나면 Setuid 비트가 설정된 것이고 파일을 실행할 때, 파일을 실행한 사용자의 권한이 아닌 파일 소유자의 권한으로 실행된다 -rwxr-sr-x 처럼 그룹 권한에서 x 대신 s가 나타나면 Setgid 비트가 ..