设置TCP端口> 65535与pcap和dnet

时间:2015-04-19 19:43:51

标签: sockets tcp wireshark packet pcap

我一直在网络上注入数据包并通过wireshark观察效果。我能够正确设置和更改tcp端口并设置源和目标。但是,我现在遇到了一个问题。我需要做的一件事是从端口66,000设置源端口。每次我尝试它只是将数字放在wireshark中的1163,这是因为它应该是一个短整数。有谁知道如何让它接受大数字。我知道big endian和htonl应该工作所以我也试过了,但那并没有解决这个问题。

以下是我正在使用的代码

void extract(u_char *user, struct pcap_pkthdr *h, u_char *pack ) {
  struct eth_hdr *ethhdr;
  struct ip_hdr *iphdr;
  struct tcp_hdr *tcphdr;

  ethhdr = (struct eth_hdr *)pack;
  iphdr = (struct ip_hdr *)(pack + ETH_HDR_LEN);
  tcphdr = (struct tcp_hdr *) (pack + ETH_HDR_LEN + (4*iphdr->ip_hl));
  //Set the ports
  tcphdr->th_sport = htons(66666);
  tcphdr->th_dport = htons(atoi(destString));

1 个答案:

答案 0 :(得分:3)

端口号为16位。使用16位,您只能获得65535.无法绕过它。另请参阅http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure处的TCP标头。