#include #include #include #include #include int main(int argc, char **argv) { const char *packet_file = argv[1]; FILE *packet_stream = fopen(packet_file, "rb"); unsigned char packet[60]; int sock; int r; struct sockaddr_in target; struct iphdr *ip; fread(packet, 1, 60, packet_stream); ip = (struct iphdr *)packet; if(ip->id != 0) { puts("IP ID is non-zero."); return -1; } sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); target.sin_family = AF_INET; target.sin_addr.s_addr = ip->daddr; r = sendto(sock, packet, 60, 0, (struct sockaddr *)&target, sizeof(struct sockaddr_in)); if(r == -1) if(errno == EPERM) puts("Errno EPERM found!"); else puts("Other errno found!"); else printf("No errno found! r = %d\n", r); return 0; }