Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 불법유통근절
- 파이썬
- 기타정보
- 연구모임
- 도구모음
- 경기팀
- UKPT
- 화학물질불법유통온라인감시단
- 12기
- Los
- codeup
- 여행
- 정보보안
- webhacking
- suninatas
- UKPT level
- nurisec
- 웹 해킹 입문
- 국가정보원
- PHP
- HTML
- 불법유통
- 대외활동
- 화학물질
- MITRE ATT&CK
- 국정원
- 프로젝트
- Service
- 국가기록원
- 화학물질안전원
Archives
- Today
- Total
agencies
python을 이용한 C 소스코드 추상화 (최신본) 본문
기호와 연산자를 제외한 모든 값들을 추상화합니다.
(사용 목적 : 소스코드의 변조 여부 확인)
소스코드에서
int a = 0; 이라는값이 있다고 가정해봅시다.
하지만 실제 사용되고 있는 코드는 int b = 0;과 같이 작성될 경우,
두 개의 값이 일치하지 않습니다.
즉 값이 1개만 달라져도 다르게 나올 수 있기에,
int a = 0; 대신 val val = val; 형식으로 추상화 함으로써
미묘하게 달라지는 것은 발견해 낼 수 있을 것 같습니다.
import re
import hashlib
import pandas as pd
# CSV 파일 읽기
file_path = "backward-db.csv" # CSV 파일 경로
df = pd.read_csv(file_path)
# 추상화 함수
def abstract_code_simple(origin_code):
# 데이터 타입을 'val'로 변경
abstracted_code = re.sub(r'\b[a-zA-Z_][a-zA-Z0-9_]*\b', 'val', origin_code)
# 변수명을 'val'로 변경
abstracted_code = re.sub(r'\b[u]\b', 'val', abstracted_code)
return abstracted_code
# 공백 제거 및 SHA256 해시 생성 함수
def generate_hash(code):
# 공백 제거
code_no_spaces = re.sub(r'\s+', '', code)
# SHA256 해시 생성
hash_object = hashlib.sha256(code_no_spaces.encode())
return hash_object.hexdigest()
# 공백 제거된 추상화 코드 생성 및 해시 추가
df["abs_origin_code"] = df["origin"].apply(abstract_code_simple)
df["abs_origin_code_hash"] = df["abs_origin_code"].apply(lambda x: generate_hash(re.sub(r'\s+', '', x)))
# 결과를 저장
output_file_path = "abstracted_test_with_hash.csv"
df.to_csv(output_file_path, index=False)
'Ⅰ. 프로그래밍' 카테고리의 다른 글
정규표현식을 이용하여 C 언어에서 함수 추출해보기! 2탄! (0) | 2024.12.17 |
---|---|
파이썬 프로그래밍 (키보드 후킹) (1) | 2024.12.08 |
정규표현식을 이용하여 C 언어에서 함수 추출해보기! (0) | 2024.12.02 |
c 소스코드 추상화 해보기 (변수, 파라미터) (0) | 2024.11.28 |
파이썬으로 이미지 내용을 텍스트로 추출하여 읽기 (ocr) (0) | 2024.11.28 |