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
- 불법유통
- 국정원
- 정보보안
- webhacking
- 프로젝트
- 화학물질
- 화학물질불법유통온라인감시단
- 국가기록원
- MITRE ATT&CK
- 대외활동
- 여행
- 불법유통근절
- UKPT level
- codeup
- suninatas
- nurisec
- 도구모음
- 파이썬
- HTML
- Service
- 경기팀
- 12기
- 기타정보
- 국가정보원
- Los
- 웹 해킹 입문
- PHP
- 연구모임
Archives
- Today
- Total
agencies
정규표현식을 이용하여 C 언어에서 함수 추출해보기! 본문
import re
def extract_user_defined_function_names(file_path):
with open(file_path, 'r') as file:
code = file.read()
# Regex pattern to match function definitions (not calls)
function_pattern = re.compile(
r'\b(?:static|extern|inline)?\s*' # Optional specifiers
r'(?:void|int|long|float|double|char|short|unsigned|signed|struct\s+\w+|enum\s+\w+|[a-zA-Z_]\w*\s*\*)\s+' # Return type
r'([a-zA-Z_]\w*)\s*\(', # Function name
re.DOTALL
)
# Extract all matches
all_function_names = function_pattern.findall(code)
# Remove duplicates
unique_function_names = set(all_function_names)
# Identify user-defined functions (those defined in the file)
user_defined_functions = set()
# Regex to find actual function definitions in the code
definition_pattern = re.compile(
r'\b(?:static|extern|inline)?\s*' # Optional specifiers
r'(?:void|int|long|float|double|char|short|unsigned|signed|struct\s+\w+|enum\s+\w+|[a-zA-Z_]\w*\s*\*)\s+' # Return type
r'([a-zA-Z_]\w*)\s*\([^)]*\)\s*\{', # Function name with arguments and opening brace
re.DOTALL
)
# Extract function definitions
defined_functions = definition_pattern.findall(code)
user_defined_functions.update(defined_functions)
# Filter out library function calls (leave only user-defined functions)
filtered_functions = sorted(user_defined_functions.intersection(unique_function_names))
# Print and return the filtered function names
print(filtered_functions)
return filtered_functions
# Call the function with your uploaded file
extract_user_defined_function_names('./util_tmp.c')
정규표현식을 이용해서 c언어 소스코드에 있는 모든 함수들을 추출합니다.
이때 예약어등에 대해 필터링을 해줘야 하는데 (많은 예약어를 등록함으로써 오탐을 줄일 수 있을 것 같습니다)
실행결과
테스트 c 파일
'Ⅰ. 프로그래밍' 카테고리의 다른 글
파이썬 프로그래밍 (키보드 후킹) (1) | 2024.12.08 |
---|---|
python을 이용한 C 소스코드 추상화 (최신본) (0) | 2024.12.04 |
c 소스코드 추상화 해보기 (변수, 파라미터) (0) | 2024.11.28 |
파이썬으로 이미지 내용을 텍스트로 추출하여 읽기 (ocr) (0) | 2024.11.28 |
CVE 관련 정보 수집 (초안) (1) | 2024.11.19 |