이 포스트는 [인공지능 보안을 배우다] 책을 참고해 학습한 내용을 정리한 글입니다.특징공학 기법을 사용하여 분류에 도움이 되는 특징과 그렇지 않은 특징을 분류하고, 성능이 가장 좋은 특징 조합을 찾아 낸다. 1. 첫번째 코드백업 해둔 pe_all 데이터를 다시 가지고와 불필요한 열을 제거하는 과정이다.pe_all = pe_all_tmp # 백업 데이터프레임 복원- 이전에 백업해 둔 pe_all_tmp를 다시 가져온다.pe_all = pe_all.drop(['filename', 'MD5', 'packer_type'], axis=1) # 불필요 열(col) 제거- 해당 데이터 중 filename, MD5, packer_type 열을 제거한다. pe_all.shape # ( 937 x ..
이 포스트는 [인공지능 보안을 배우다] 책을 참고해 학습한 내용을 정리한 글입니다.1. 첫번째 코드첫번째 코드는 필요한 라이브러리와 모듈을 임포트하고, 결과를 출력할 데이터 프레임을 생성하고 특징 데이터를 로드 한다.1.1. 필요 라이브러리와 모듈을 임포트import numpy as np : 넘파이를 임포트 한다.넘파이란 수치계산을 위한 라이브러리로서, 다차원 배열 객체를 생성하고 계산 할 수 있다.import pandas as pd : 판다스 라이브러리를 임포트한다. 판다스는 데이터 분석을 위한 라이브러리로 데이터를 표로 시각화 한다.import seaborn as sns : 시본 라이브러리를 임포트한다. 시본은 데이터를 시각화 하는 라이브러리로, 그래프를 쉽게 생성할 수 있도록 한다.imp..
이전 포스트에서 이어진다Featrue Engineering 첫 번째 코드 이전과 같은 오류다 pe_all = pe_all.drop(['filename', 'MD5', 'packer_type'], axis=1) 로 수정한다. Featrue Engineering세 번째 코드do_randomforest 함수에서 self.y_train이 2D 배열일경우 경고가 뜬다. fit() 메서드에 전달되기 전에 y_train을 1D 배열로 변환해야 한다. scikit-learn의 fit() 메서드는 1D 배열을 사용하므로, y_train을 ravel()을 사용해 1D 배열로 변환 해 준다. model.py의 랜던포레스트 메서드를 수정한다. 띄어쓰기에 주의한다. clf = RandomForestClassif..
특징 추출을 완료했다면, 어느 특징이 가장 모델링에 적합한지 판단해야 한다. 실습자료 코드는 텐서플로우 1.x 기반으로 작성되어 있는데, 현재 m1 mac에서는 최소 2.x부터 지원하므로 현재 실습환경은 2.13 버전으로 구성되어 있다.문제는 1.x 버전에서 2.x 버전으로 넘어가면서 많은 부분이 변경되어서 1.x 버전의 코드로는 온전히 실행이 불가능했다.아래는 분석은 잠시 미뤄두고 코드를 실행시키기 위한 눈물겨운 노력의 과정이 담겨 있다. 첫 번째 코드필요한 라이브러리를 임포트 하고 csv파일을 불러오는 코드이다.파이썬 3을 사용 중이라면 print구문에 괄호를 달아주어야 한다.첫 번째 코드의 오류실행해 보니 다음과 같은 오류가 발생했다 seaborn 라이브러리가 설치되어있지 않다고 한다.필요 패키..
1. PE파일을 통째로 이미지(png)로 변환이제 책에서 소개하는 마지막 특징추출방식인 파일 자체를 이미지로 변환하여 특징을 추출하는 방법이 남아있다.파일의 이진코드를 순서대로 0~255사이의 숫자로 변환하여 이를 각 픽셀의 밝기 수치로 사용한다. 자료에서 제공하는 코드의 핵심 부분은 다음과 같다 : g = np.reshape(a, (int(len(a)/width), width)) reshape= 배열의 구조를 재조정할 때 사용 (차원 간의 변경) a(= 파일의 이진코드 )를 순차적으로 읽어와 2차원 배열로 변환한다.g = np.uint8(g) unit8(g) 배열g요소를 부호 없는 8bit 정수로 변환 (0~255) 배열 내 모든 요소는 0~ 255 사이가 되고 이 요소요소가 각 픽셀의 ..