LINUX.ORG.RU

RAW SOCKET


0

0

Народ, помогите с сабжем:
Открываю сокет :
sock==socket(PF_INET,SOCK_RAW,IPPROTO_RAW)

Создаю TCP/IP пакет :
ip=(struct iphdr*)packet;
tcp=(struct tcphdr*)(packet+IPHDRSIZE);
DATA=(unsigned char*)(packet+IPHDRSIZE+TCPHDRSIZE);

//TCP
tcp->th_sport=htons(source_port);//source port
tcp->th_seq=htonl(seq_num);//seq number
tcp->th_ack=htonl(ack_num);//ack number
tcp->th_off=5;//offset
tcp->th_flags=flags;//tcp flags
tcp->th_win=htons(winsize);//window size
tcp->th_urp=0;//urgent pointer(no urgent data)
tcp->th_dport=htons(dest_port);
tcp->th_sum=in_cksum((u_short*)pseudo,TCPHDRSIZE+PSEUDOHDRSIZE+data_size);

//IP
ip->saddr=source_ip;//source ip address
ip->daddr=dest_ip;//destinition ip address
ip->ihl=5;//header lenght(count of 4-bytes words) 
ip->version=4;//ip version
ip->ttl=245;//TTL(time to life)
ip->protocol=6;//TCP
ip->tot_len=htons(IPHDRSIZE+TCPHDRSIZE+data_size);//lenght
ip->tos=0;//type of service
ip->id=random() % 1256;//id
ip->frag_off=0;//offset
ip->check=in_cksum((u_short*)packet,IPHDRSIZE);//checksum

//Посылаю его:
sin_dest.sin_addr.s_addr=ip->daddr;
sin_dest.sin_family=AF_INET;

sendto(sp_fd,packet,IPHDRSIZE+TCPHDRSIZE+data_size,0,
	   (struct sockaddr*)&sin_dest,sizeof(struct sockaddr));

Так вот вопрос: sendto возвращает количество переланных байт   
(как оно идолжно быть),но почему-то на целевую машину ничего      
не приходит. Машины в одной сети, соединены хабом. 
Может кто-нибудь подскажет в чем дело? 
anonymous

Ты не привел адрес в сетевой вид функцией htons И еще я не уверен но помоему надо вычислять только контрольную сумму тсп,для Ип вычисляет ядро

OxiD ★★★★
()

А что tcpdump говорит?

anonymous
()

Не сетевой адрес раньше приводится и в эту функцию уже приведенный передается. В том-то и дело, что tcpdump ничего не говорит

anonymous
()

Дистрибутив

А ты уверен что для tcpdump'a все ключи правильно указал попробуй написать скрипт для ipchains который все пакеты с определенного порта будет в лог заносить и потом логи почитай.

OxiD ★★★★
()

Спасибо, заработало. Посмотрел исходники nmapa и сделал как там.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.