일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 애플
- 앱리소스
- SWIFT
- otpkey
- 인증
- Android
- albumbook
- 2FA
- FIDO2
- MSYS2
- 앨범북
- openssl
- OTP
- Nodejs
- css
- Xcode
- SSH
- MYSQL
- apple
- WebAuthn
- 앱스토어
- SSL
- git
- 안드로이드
- MFA
- SwiftUI
- kmip
- appres
- OSX
- fido
Archives
- Today
- Total
인디노트
iphdr 의 송신자주소 및 수신자 주소를 변경하는 C 함수 본문
#include <stdio.h>
#include <stdlib.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
// IP 헤더의 송신자 주소와 수신자 주소를 변경하는 함수
void change_ip_address(unsigned char *ip_packet, char *src_ip, char *dst_ip) {
struct iphdr *ip_header = (struct iphdr*)ip_packet;
// 송신자 주소와 수신자 주소를 변경함
ip_header->saddr = inet_addr(src_ip);
ip_header->daddr = inet_addr(dst_ip);
}
int main() {
unsigned char ip_packet[256] = {0x45, 0x00, 0x00, 0x3c, 0x1a, 0x2e, 0x40, 0x00, 0x40, 0x06, 0x00, 0x00, 0xc0, 0xa8, 0x00, 0x01, 0xc0, 0xa8, 0x00, 0x02};
// IP 패킷의 송신자 주소와 수신자 주소를 변경함
change_ip_address(ip_packet, "192.168.0.3", "192.168.0.4");
return 0;
}
이 코드에서는 change_ip_address() 함수가 IP 패킷의 송신자 주소와 수신자 주소를 변경합니다. 이 함수는 unsigned char 배열 타입의 ip_packet, 송신자 주소(src_ip), 수신자 주소(dst_ip)를 입력으로 받습니다.
change_ip_address() 함수 내부에서는 입력으로 받은 ip_packet을 struct iphdr 구조체 타입으로 형변환한 뒤, 구조체의 송신자 주소(saddr)와 수신자 주소(daddr)를 각각 입력으로 받은 src_ip와 dst_ip로 변경합니다.
main() 함수에서는 예시로 임의로 생성한 IP 패킷의 송신자 주소와 수신자 주소를 변경한 뒤, 변경된 패킷을 다시 사용할 수 있도록 처리합니다.
반응형
'개발 플랫폼 및 언어 > 네트워크 기술' 카테고리의 다른 글
linux 에서 C 로 대기하고 있다가 시그널을 발생하여 다른 함수에서 시그널을 보내면 깨어나서 함수를 실행하는 C 코드 (0) | 2023.04.15 |
---|---|
icmp 를 전송한 후 응답을 받아서 해당 응답이 어떤 전송건인지 확인하는 C 코드 (0) | 2023.04.14 |
iphdr 의 check 계산 하는 C 코드 (0) | 2023.04.14 |
ethertnet 패킷 라우팅 C 코드 (0) | 2023.04.14 |
Multicast Packet 로부터 상대방 IP 알아내는 C 코드 (0) | 2023.04.14 |
Comments