TCP/IP 소켓 기반 악성코드 원리 실습
1. 실습 개념 이해
사용된 주요 개념
| TCP 소켓 | 네트워크에서 데이터를 신뢰성 있게 주고받기 위한 양방향 연결 방식 |
| 클라이언트-서버 모델 | 서버가 대기하고, 클라이언트가 접속하여 데이터 전송 |
| 파일 전송 | 클라이언트가 로컬 파일을 읽고 서버로 전송. 서버는 수신된 내용을 저장 |
| 악성코드 유출 시뮬레이션 | 보안이 없는 TCP 통신에서 민감 데이터가 쉽게 유출될 수 있음을 체험 |
2. 통신 코드 작성 및 실행
| client_file.c | 파일을 서버로 전송하는 클라이언트 |
| server_file.c | 클라이언트로부터 파일을 받아 저장하는 서버 |
| file.txt | 클라이언트에서 전송할 테스트 파일 |
| received.txt | 서버에서 저장되는 수신 파일 |
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
int sock;
struct sockaddr_in server;
FILE *file;
char buffer[1024];
sock = socket(AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1"); // 서버 주소
server.sin_port = htons(8888); // 서버 포트
connect(sock, (struct sockaddr *)&server, sizeof(server));
file = fopen("file.txt", "rb");
if (!file) {
printf("file.txt 열기 실패\n");
return 1;
}
int bytes;
while ((bytes = fread(buffer, 1, 1024, file)) > 0) {
send(sock, buffer, bytes, 0);
}
fclose(file);
close(sock);
printf("파일 전송 완료!\n");
return 0;
}
클라이언트 코드 (client_file.c)
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
int server_socket, client_socket;
struct sockaddr_in server, client;
char buffer[1024];
FILE *received_file;
server_socket = socket(AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(8888);
bind(server_socket, (struct sockaddr *)&server, sizeof(server));
listen(server_socket, 1);
socklen_t c = sizeof(client);
client_socket = accept(server_socket, (struct sockaddr *)&client, &c);
received_file = fopen("received.txt", "wb");
int bytes;
while ((bytes = read(client_socket, buffer, 1024)) > 0) {
fwrite(buffer, 1, bytes, received_file);
}
fclose(received_file);
close(client_socket);
close(server_socket);
printf("파일 수신 완료!\n");
return 0;
}
서버 코드 (server_file.c)
3. 파일 암호화 실습
4. 파일 복호화 실습
실습 내용
- 암호화된 test.enc 파일을 동일 키로 복호화
- 복호화된 결과를 test_dec.txt로 저장
'swlug' 카테고리의 다른 글
| [swlug] 3주차 프로젝트 과제 (0) | 2025.05.07 |
|---|---|
| swlug 2학년_1학기_3주차_웹해킹_과제 (0) | 2025.05.05 |
| A Survey on Adversarial Attacks and Defenses in Natural Language Processing (0) | 2025.04.30 |
| swlug 2학년_1학기_2주차_웹해킹_과제 (0) | 2025.04.02 |
| [1주차] 논문 분석_IoT 장치 취약점 분석을 위한 IoT Companion App 기반 SendMessage 식별 방법론 (0) | 2025.04.02 |