есть код, он через RAW socket должен отправить по указанному DESTINATION_IP заголовок IP, при этом адрес отправителя в заголовке IP заменяется на SOURCE_IP
не работает, tcpdump пишет [21:49:54.033987 IP5 bad-hlen 16]
в чем может быть дело?
static char ip[20];
int main() {
int option = 1;
uint16_t word;
uint32_t dword;
struct sockaddr_in addr = {0};
int sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
if (sock < 0)
return 1;
if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &option, sizeof(option)) < 0)
return 2;
#define IP_HEADER_SIZE 5
word = 4 | (IP_HEADER_SIZE << 4) | (IPTOS_THROUGHPUT << 8);
memcpy(ip, &word, 2);
#define IP_SIZE 20
word = htons(IP_SIZE);
memcpy(ip + 2, &word, 2);
dword = 0;
memcpy(ip + 4, &dword, 4);
word = 0xFF | (IPPROTO_IP << 8);
memcpy(ip + 8, &word, 2);
word = 0;
memcpy(ip + 10, &word, 2);
#define SOURCE_IP "87.252.226.1"
if (inet_aton(SOURCE_IP, &addr.sin_addr) < 0)
return 5;
memcpy(ip + 12, &addr.sin_addr.s_addr, 4);
#define DESTINATION_IP "216.239.59.104"
if (inet_aton(DESTINATION_IP, &addr.sin_addr) < 0)
return 3;
if (sendto(sock, ip, 20, 0, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
perror(NULL);
return 6;
}
close(sock);
return 0;
}

Ответ на:
комментарий
от olecom

Ответ на:
комментарий
от olecom


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Сканер портов (2000)
- Форум Сокеты в Си (продолжене) (2005)
- Форум raw sockets — sending udp datagram (2007)
- Форум Таймаут для connect() (2009)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум IP RAW socket how using (2005)
- Форум [C] Получить данные на TCP сокет (2008)
- Форум C++, OpenSSL. Как соединиться с сервером через прокси? (2015)
- Форум HELP!: sockets, udp, pthreads (2002)
- Форум Клиент, сервер и их правильная работа. (2005)