일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Android
- 앱스토어
- albumbook
- 앨범북
- css
- MSYS2
- Nodejs
- OSX
- otpkey
- WebAuthn
- 2FA
- Xcode
- SwiftUI
- 앱리소스
- kmip
- fido
- FIDO2
- SWIFT
- 안드로이드
- OTP
- MFA
- openssl
- 애플
- SSH
- appres
- git
- apple
- SSL
- 인증
- MYSQL
Archives
- Today
- Total
인디노트
PF_PACKET을 사용하여 C 코드에서 패킷을 보내는 예시 본문
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/ethernet.h>
#include <netpacket/packet.h>
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 destination address for the socket
memset(&dest_addr, 0, sizeof(dest_addr));
dest_addr.sll_family = AF_PACKET;
dest_addr.sll_ifindex = if_nametoindex("eth0"); // Change this to the interface you want to use
dest_addr.sll_halen = ETH_ALEN;
memcpy(dest_addr.sll_addr, dest_mac, ETH_ALEN);
// Fill the buffer with the packet data
memset(buffer, 0, sizeof(buffer));
struct ethhdr *eth = (struct ethhdr *) buffer;
memcpy(eth->h_dest, dest_mac, ETH_ALEN);
eth->h_proto = htons(ETH_P_IP); // Change this to the protocol you want to use
// Send the packet
if (sendto(sock_fd, buffer, sizeof(buffer), 0, (struct sockaddr *) &dest_addr, sizeof(dest_addr)) < 0) {
perror("sendto");
return 1;
}
close(sock_fd);
return 0;
}
이 예시 코드는 eth0 인터페이스를 사용하도록 설정하고 브로드캐스트 주소로 패킷을 보내도록 설정하였습니다. 필요에 따라 인터페이스 이름과 목적지 MAC 주소를 변경하여 사용하실 수 있습니다. 패킷 데이터를 채우는 방법과 전송하는 방법도 프로토콜에 따라 변경해야 합니다.
반응형
'개발 플랫폼 및 언어 > 네트워크 기술' 카테고리의 다른 글
ethertnet 패킷 라우팅 C 코드 (0) | 2023.04.14 |
---|---|
Multicast Packet 로부터 상대방 IP 알아내는 C 코드 (0) | 2023.04.14 |
eth0 에서 recvfrom 함수로 읽어서 그대로 eth1 으로 write 함수로 전송 하는 C 코드 (0) | 2023.04.13 |
ethhdr 의 src 및 dst 를 변경하는 C 코드 (0) | 2023.04.13 |
iphdr 를 이용해서 tcphdr 를 찾는 C 코드 (0) | 2023.04.13 |
Comments