Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- setsockopt(rcv_sock, SOL_SOCKET, SO_RCVTIMEO, &read_timeout, sizeof(read_timeout));
- for (int i = low_port; i <= high_port; i++)
- {
- tmp_msg.clear();
- udph->check = 0;
- memset (datagram2, 0, 4096);
- // Set destination port in UDP header
- udph->dest = htons (i);
- to.sin_port = htons(i);
- memset(pseudogram, 0, psize);
- memcpy(pseudogram , (char*) &psh , sizeof (struct pseudo_header));
- memcpy(pseudogram + sizeof(struct pseudo_header) , udph , sizeof(struct udphdr) + strlen(data));
- udph->check = csum( (unsigned short*) pseudogram , psize);
- //std::cout << udph->check << std::endl;
- if (sendto (sock, datagram, iph->tot_len, 0, (struct sockaddr *) &to, sizeof(to)) < 0)
- {
- perror("sendto failed");
- }
- usleep(1000);
- rcvd_l = recvfrom(rcv_sock, datagram2, sizeof(datagram2), 0, (struct sockaddr *) &to, &addrlen);
- if(datagram2[0] != 0){
- std::cout << "port: " << i << std::endl;
- std::cout << "recieved length: " << rcvd_l << std::endl;
- int counter = 0;
- for (int j = sizeof(struct iphdr) + sizeof(struct udphdr); j < rcvd_l; j++) {
- std::cout << datagram2[j];
- tmp_msg += datagram2[j];
- counter++;
- }
- if (tmp_msg.find("61453") != std::string::npos) {
- chcksum_port = i;
- std::cout << "checksum port: " << chcksum_port << std::endl;
- }
- std::cout << std::endl << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement