일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2FA
- MSYS2
- 인증
- SSL
- MFA
- css
- OTP
- SWIFT
- 앨범북
- 앱리소스
- Android
- FIDO2
- apple
- 앱스토어
- 애플
- git
- OSX
- kmip
- openssl
- WebAuthn
- 안드로이드
- fido
- SSH
- Xcode
- MYSQL
- albumbook
- SwiftUI
- otpkey
- appres
- Nodejs
- Today
- Total
목록분류 전체보기 (790)
인디노트
#include #include #include #include int main() { char ip_address_str[] = "192.168.0.1"; unsigned char ip_address[4]; // 문자열을 unsigned char 배열로 변환 if (inet_pton(AF_INET, ip_address_str, ip_address) != 1) { fprintf(stderr, "Failed to convert IP address\n"); return 1; } // 변환된 unsigned char 배열 출력 for (int i = 0; i < 4; i++) { printf("%d ", ip_address[i]); } printf("\n"); return 0; } 위 코드에서 inet_pto..
Linux에서 시그널 처리를 위해서는 signal() 함수를 사용하여 시그널 핸들러 함수를 등록해야 합니다. 시그널 핸들러 함수는 시그널이 발생했을 때 실행됩니다. 대기 상태에서 시그널이 발생하면, 시그널 핸들러 함수가 호출되어 해당 시그널에 대한 처리를 수행합니다. 그러면 대기 중인 함수가 깨어나서 시그널 핸들러 함수를 실행하고, 이후에 다시 대기 상태로 들어갑니다. #include #include #include #include void signal_handler(int signal_num) { printf("Received signal %d\n", signal_num); } int main() { signal(SIGUSR1, signal_handler); // SIGUSR1 시그널 핸들러 등록 wh..
#include #include #include #include #include #include #include #include #define PACKET_SIZE 4096 #define IP_HDR_SIZE sizeof(struct iphdr) #define ICMP_HDR_SIZE sizeof(struct icmphdr) // IP 체크섬 계산 함수 unsigned short checksum(void *b, int len) { unsigned short *buf = b; unsigned int sum = 0; unsigned short result; for (sum = 0; len > 1; len -= 2) sum += *buf++; if (len == 1) sum += *(unsigned char ..
#include #include #include #include // 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, 0x4..
#include #include #include #include #include // IP 헤더의 체크섬 필드를 계산하는 함수 unsigned short calculate_ip_checksum(struct iphdr *ip_header) { unsigned int sum = 0; unsigned short checksum; // IP 헤더의 체크섬 필드는 0으로 초기화 ip_header->check = 0; // IP 헤더의 각 2바이트를 16비트 체크섬 값에 더함 for (int i = 0; i < sizeof(struct iphdr) / 2; i++) { sum += *((unsigned short*)ip_header + i); } // 체크섬 계산 결과에 carry를 전파하는 부분을 처리 while..
#include #include #include #include #include #include #include #include #include #define BUF_SIZE 2048 #define ETH_HDR_LEN 14 int main(int argc, char **argv) { int sockfd; struct ifreq ifr; char buffer[BUF_SIZE]; struct ether_header *eth_header = (struct ether_header *) buffer; struct sockaddr_ll socket_address; int numbytes; if(argc != 3) { printf("Usage: %s \n", argv[0]); exit(1); } sockfd = s..
#include #include #include #include #include #include #include #include #include #define MAX_BUF_LEN 2048 int main(int argc, char *argv[]) { int sockfd, n; char buffer[MAX_BUF_LEN]; struct sockaddr_in servaddr, cliaddr; socklen_t len = sizeof(cliaddr); // 소켓 생성 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } // 소켓 옵션 설정 int reuse = 1; ..
Linux에서 Gateway의 MAC 주소를 가져오기 위해서는 네트워크 인터페이스를 통해 ARP (Address Resolution Protocol) 캐시를 확인해야 합니다. 이를 위해 sys/socket.h와 net/if_arp.h 헤더 파일을 사용하고, ioctl() 함수를 호출하여 인터페이스 정보를 가져옵니다. 아래는 Linux에서 Gateway의 MAC 주소를 가져오는 간단한 C 코드 예시입니다: #include #include #include #include #include #include #include #include #include int main() { struct in_addr gateway_ip; struct ifreq ifr; int sockfd, ret; // Gateway IP ..
#include #include #include #include #include #include #include #include int main() { int sock_fd; struct sockaddr_ll dest_addr; char buffer[ETH_FRAME_LEN]; unsigned char dest_mac[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; // Broadcast address // Create a PF_PACKET socket sock_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); if (sock_fd < 0) { perror("socket"); return 1; } // Set the destinati..
#include #include #include #include #include #include #include #include #include #include #define ETH_FRAME_LEN 1518 int main() { int sockfd_in = 0, sockfd_out = 0, ret = 0; char buffer[ETH_FRAME_LEN] = {0}; struct sockaddr_ll dest = {0}; // create socket for eth0 sockfd_in = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); if (sockfd_in == -1) { perror("socket"); exit(EXIT_FAILURE); } // bind soc..