파이썬 개요
파이썬은 가독성이 높고 강력한 스크립트 언어로, 보안 도구 개발, 자동화 스크립트 작성, 데이터 분석 등 다양한 분야에서 널리 사용됩니다. 이 글에서는 파이썬의 기본 구조와 핵심 문법을 다루며, 실제 스크립트를 작성하는 데 필요한 기초 지식을 다집니다.
다룰 주요 개념은 다음과 같습니다:
- 변수(Variables)와 데이터 타입
- 연산자(Operators)
- 조건문(If statements)
- 반복문(Loops)
- 함수(Functions)
- 파일 입출력(File I/O)
- 모듈 및 라이브러리 import
파이썬에서 문법(Syntax)은 코드가 올바르게 실행되기 위한 핵심 규칙입니다. 들여쓰기, 기호, 키워드 등의 규칙을 정확히 준수해야 인터프리터가 코드를 정상적으로 인식하고 실행할 수 있습니다.
기본 출력과 주석
가장 기본적인 텍스트 출력 방법을 살펴보겠습니다.
# 시스템 상태 확인 메시지 출력
print("System initialization complete.")
위 코드에서 #로 시작하는 줄은 주석(Comment)으로, 실행 시 무시되며 코드의 이해를 돕는 설명을 적는 데 사용됩니다. print() 함수는 괄호 안의 값을 콘솔에 출력하며, 문자열(String)을 출력할 때는 따옴표(" 또는 ')로 감싸야 합니다.
산술 및 비교 연산자
파이썬은 일반적인 사칙연산을 비롯해 다양한 산술 연산자를 지원합니다.
+: 덧셈-: 뺄셈*: 곱셈/: 나눗셈**: 거듭제곱%: 나머지 (Modulo)//: 몫 (Floor division)
비교 연산자는 두 값의 관계를 평가하여 불리언(Boolean) 결과를 반환합니다. 조건문이나 반복문에서 자주 활용됩니다.
==: 같다!=: 같지 않다>,<,>=,<=: 크기 비교
변수와 데이터 타입
변수는 메모리에 데이터를 저장하기 위한 이름표입니다. 파이썬의 변수 명명 규칙은 다음과 같습니다:
- 문자 또는 밑줄(
_)로 시작해야 합니다. - 문자, 숫자, 밑줄만 포함할 수 있습니다.
- 대소문자를 구분합니다.
- 파이썬의 예약어(Reserved words)는 사용할 수 없습니다.
server_ip = "192.168.1.10"
max_connections = 500
변수의 값은 프로그램 실행 중 언제든지 업데이트할 수 있습니다.
active_sessions = 45
active_sessions = active_sessions + 5
print(active_sessions) # 50 출력
주요 데이터 타입:
- String (str): 텍스트 데이터
- Integer (int): 정수
- Float (float): 실수
- Boolean (bool): 참(True) 또는 거짓(False)
- List (list): 순서가 있는 변경 가능한 데이터 집합
논리 연산자와 조건문
논리 연산자(and, or, not)는 여러 조건을 결합할 때 사용됩니다.
cpu_usage = 85
memory_usage = 90
if cpu_usage > 80 and memory_usage > 80:
print("Warning: High system resource usage detected.")
elif cpu_usage > 80 or memory_usage > 80:
print("Notice: Moderate resource usage.")
else:
print("System resources are stable.")
if 문은 조건에 따라 코드 블록을 선택적으로 실행합니다. 파이썬에서는 블록을 구분하기 위해 반드시 들여쓰기(Indentation)를 사용해야 하며, 조건문 끝에는 콜론(:)을 붙입니다.
반복문 (Loops)
반복문은 특정 코드 블록을 여러 번 실행할 때 사용됩니다.
while 반복문
조건이 참(True)인 동안 코드를 반복 실행합니다.
retry_count = 0
max_retries = 3
while retry_count < max_retries:
print(f"Attempting connection... Retry {retry_count + 1}")
retry_count += 1
for 반복문
리스트, 튜플, 문자열 등 반복 가능한(Iterable) 객체의 요소를 순회할 때 사용합니다.
target_ports = [22, 80, 443, 8080]
for port in target_ports:
print(f"Scanning port {port}...")
연속된 숫자를 순회할 때는 range() 함수를 사용합니다.
# 0부터 4까지 출력
for i in range(5):
print(i)
함수 (Functions)
함수는 재사용 가능한 코드 블록을 정의할 때 사용하며, def 키워드로 선언합니다.
def calculate_response_time(distance_ms, processing_ms):
total_time = distance_ms + processing_ms
return total_time
network_delay = 45
server_process = 120
final_time = calculate_response_time(network_delay, server_process)
print(f"Total response time: {final_time}ms")
함수는 return 문을 통해 결과를 호출자로 반환할 수 있습니다.
파일 입출력 (File I/O)
파이썬의 open() 함수를 사용하여 파일을 읽고 쓸 수 있습니다.
# 파일 읽기
with open("config.yaml", "r") as file:
content = file.read()
print(content)
파일 모드:
"r": 읽기 (기본값)"w": 쓰기 (기존 파일 덮어쓰기)"a": 추가 (파일 끝에 데이터 추가)
파일 작업 시 with 문을 사용하면 블록이 종료될 때 파일을 자동으로 닫아주므로 리소스 누수를 방지할 수 있습니다.
# 파일 쓰기
with open("scan_results.txt", "w") as file:
file.write("Scan completed successfully.\n")
file.write("No vulnerabilities found.")
모듈 및 라이브러리 활용
파이썬은 방대한 표준 라이브러리와 서드파티 패키지를 제공합니다. import 문을 사용하여 외부 모듈을 불러올 수 있습니다.
import os
import socket
hostname = socket.gethostname()
current_dir = os.getcwd()
print(f"Host: {hostname}")
print(f"Directory: {current_dir}")
표준 라이브러리 외에 추가 패키지가 필요한 경우, 파이썬의 패키지 관리자인 pip를 사용하여 설치할 수 있습니다.
# 터미널에서 실행
# pip install requests
설치 후 스크립트 내에서 import requests와 같이 호출하여 HTTP 요청 처리 등 다양한 기능을 활용할 수 있습니다. 네트워크 패킷 조작에는 scapy, 취약점 분석 및 CTF에는 pwntools 등이 보안 분야에서 자주 사용됩니다.