일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- write up
- 시스템해킹
- CTF
- Smashing The Stack For Fun And Profit
- picoCTF
- 번역
- reversing
- Protostar
- 스택
- Aleph One
- forensics
- KOISTUDY
- 카이사르
- 정답
- 리버싱
- 리눅스
- 해설
- Hxd
- #picoCTF2018
- 버퍼오버플로우
- #hacking
- dreamhack
- picoCTF2018
- grep
- 시스템
- general skills
- writeup
- WEB
- 해킹 공부
- cryptography
Archives
- Today
- Total
Security || AI
1. 데이터 분류하기 with Pandas, os 본문
1. 환경
칼리리눅스 64bit, python 3.8.5(추가 모듈: pandas)
2. label.csv 분석하기
악성파일 7000개, 정상파일 3000개의 정상 여부를 저장하는 csv파일이다.
악성코드의 경우 라벨이 1이고, 정상 파일인 경우 0으로 표현되어있다.
pandas로 파일을 불러올 때 첫 행이 각 열의 정보를 대표하는 이름으로 들어와 파일 하나가 누락되는 문제가 발생하였다. 이를 해결하기 위해, 맨 위에 file_name과 flag라는 행을 추가하여 파일 이름과 파일 종류 여부를 판단하는 변수를 추가하였다.
3. 파일 분류하는 코드 짜기
import pandas as pd
import os
data = pd.read_csv('./label.csv')
path = ['BENI_PATH', 'MAL_PATH']
for i in range(10000):
name = 'train_set/'+data.loc[i, 'file_name']+'.vir'
flag = int(data.loc[i, 'flag'])
payload = "mv "+name+" "+path[flag]
os.system(payload)
#print(name, flag)
csv에서 0이면 정상파일, 1이면 악성파일이다. 그러므로, path라는 리스트에 0번째에는 정상파일이 저장될 경로를 저장하고, 1이면 악성파일이 저장될 경로를 저장하였다.
그 다음, 총 1만개의 파일을 분류하기 위해 10000번 반복하며 파이썬의 os모듈을 활용하여 mv를 통해 파일을 분류하여 주었다.
Pandas의 loc을 사용하여 i번째 인덱스의 file_name을 통해 file_name 열의 파일 이름을 가져왔다.
또한, i번째의 flag를 사용하여 flag 열의 정상 파일 여부인지를 가져왔다.
그 다음, 작성된 payload를 os.system()을 통해 분류하였다.
반응형
'프로젝트 > RL_Malware' 카테고리의 다른 글
3. 추출한 악성코드 pe 헤더 추가하기 (0) | 2021.02.15 |
---|---|
2. 악성코드 PE 추출 with pickle, pefile (0) | 2021.02.15 |