亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcpip.cc

?? Ubuntu packages of security software。 相當不錯的源碼
?? CC
?? 第 1 頁 / 共 5 頁
字號:
  tcp->th_win = htons(window);else tcp->th_win = htons(1024 * (myttl % 4 + 1)); /* Who cares *//* Urgent pointer */if (urp)  tcp->th_urp = htons(urp);/* And the options */if (tcpoptlen)  memcpy((u8*)tcp + sizeof(struct tcp_hdr), tcpopt, tcpoptlen);/* We should probably copy the data over too */if (data && datalen)  memcpy((u8*)tcp + sizeof(struct tcp_hdr) + tcpoptlen, data, datalen);#if STUPID_SOLARIS_CHECKSUM_BUGtcp->th_sum = sizeof(struct tcp_hdr) + tcpoptlen + datalen; #elsetcp->th_sum = magic_tcpudp_cksum(source, victim, IPPROTO_TCP,				 sizeof(struct tcp_hdr) + tcpoptlen + datalen,				 (char *) tcp);#endifif ( o.badsum )  --tcp->th_sum;  fill_ip_raw(ip, packetlen, ipopt, ipoptlen,  	tos, ipid, df?IP_DF:0, myttl, IPPROTO_TCP,  	source, victim);  *outpacketlen = packetlen; return packet;}/* You need to call sethdrinclude(sd) on the sending sd before calling this */int send_tcp_raw( int sd, struct eth_nfo *eth,		  const struct in_addr *source, const struct in_addr *victim,		  int ttl, bool df,		  u8* ipops, int ipoptlen,		  u16 sport, u16 dport,		  u32 seq, u32 ack, u8 reserved, u8 flags,u16 window, u16 urp,		  u8 *options, int optlen,		  char *data, u16 datalen) {  unsigned int packetlen;  int res = -1;  u8 *packet = build_tcp_raw(source, victim,  			     ttl, get_random_u16(), IP_TOS_DEFAULT, df,  			     ipops, ipoptlen,  			     sport, dport,  			     seq, ack, reserved, flags, window, urp,  			     options, optlen, 			     data, datalen, &packetlen);  if (!packet) return -1;  res = send_ip_packet(sd, eth, packet, packetlen);  free(packet);  return res;}/* Create and send all fragments of a pre-built IPv4 packet * Minimal MTU for IPv4 is 68 and maximal IPv4 header size is 60 * which gives us a right to cut TCP header after 8th byte * (shouldn't we inflate the header to 60 bytes too?) */int send_frag_ip_packet(int sd, struct eth_nfo *eth, u8 *packet, 			unsigned int packetlen, unsigned int mtu){  struct ip *ip = (struct ip *) packet;  int headerlen = ip->ip_hl * 4; // better than sizeof(struct ip)  unsigned int datalen = packetlen - headerlen;  int fdatalen = 0, res = 0;  assert(headerlen <= (int) packetlen);  assert(headerlen >= 20 && headerlen <= 60); // sanity check (RFC791)  assert(mtu > 0 && mtu % 8 == 0); // otherwise, we couldn't set Fragment offset (ip->ip_off) correctly  if (datalen <= mtu) {    error("Warning: fragmentation (mtu=%i) requested but the payload is too small already (%i)", mtu, datalen);    return send_ip_packet(sd, eth, packet, packetlen);  }  u8 *fpacket = (u8 *) safe_malloc(headerlen + mtu);  memcpy(fpacket, packet, headerlen + mtu);  ip = (struct ip *) fpacket;  // create fragments and send them  for (int fragment = 1; fragment * mtu < datalen + mtu; fragment++) {    fdatalen = (fragment * mtu <= datalen ? mtu : datalen % mtu);    ip->ip_len = htons(headerlen + fdatalen);    ip->ip_off = htons((fragment-1) * mtu / 8);    if ((fragment-1) * mtu + fdatalen < datalen)      ip->ip_off |= htons(IP_MF);#if HAVE_IP_IP_SUM    ip->ip_sum = in_cksum((unsigned short *)ip, headerlen);#endif    if (fragment > 1) // copy data payload      memcpy(fpacket + headerlen, packet + headerlen + (fragment - 1) * mtu, fdatalen);    res = send_ip_packet(sd, eth, fpacket, headerlen + fdatalen);    if (res == -1)      break;  }  free(fpacket);  return res;}static int Sendto(char *functionname, int sd, const unsigned char *packet, 		  int len, unsigned int flags, struct sockaddr *to, int tolen) {struct sockaddr_in *sin = (struct sockaddr_in *) to;int res;int retries = 0;int sleeptime = 0;static int numerrors = 0;do {  if ((res = sendto(sd, (const char *) packet, len, flags, to, tolen)) == -1) {    int err = socket_errno();    numerrors++;    if (o.debugging > 1 || numerrors <= 10) {      error("sendto in %s: sendto(%d, packet, %d, 0, %s, %d) => %s",	    functionname, sd, len, inet_ntoa(sin->sin_addr), tolen,	    strerror(err));      error("Offending packet: %s", ippackethdrinfo(packet, len));      if (numerrors == 10) {	error("Omitting future %s error messages now that %d have been shown.  Use -d2 if you really want to see them.", __func__, numerrors);      }    }#if WIN32	return -1;#else    if (retries > 2 || err == EPERM || err == EACCES || err == EADDRNOTAVAIL	|| err == EINVAL)      return -1;    sleeptime = 15 * (1 << (2 * retries));    error("Sleeping %d seconds then retrying", sleeptime);    fflush(stderr);    sleep(sleeptime);#endif  }  retries++;} while( res == -1); PacketTrace::trace(PacketTrace::SENT, packet, len); return res;}/* Send a pre-built IPv4 packet */int send_ip_packet(int sd, struct eth_nfo *eth, u8 *packet, unsigned int packetlen) {  struct sockaddr_in sock;  int res;  struct ip *ip = (struct ip *) packet;  struct tcp_hdr *tcp = NULL;  struct udp_hdr *udp;  u8 *eth_frame = NULL;  eth_t *ethsd;  bool ethsd_opened = false;  assert(packet);  assert( (int) packetlen > 0);  // fragmentation requested && packet is bigger than MTU  if (o.fragscan && ( packetlen - ip->ip_hl * 4 > (unsigned int) o.fragscan ))      return send_frag_ip_packet(sd, eth, packet, packetlen, o.fragscan);  if (eth) {    eth_frame = (u8 *) safe_malloc(14 + packetlen);    memcpy(eth_frame + 14, packet, packetlen);    eth_pack_hdr(eth_frame, eth->dstmac, eth->srcmac, ETH_TYPE_IP);    if (!eth->ethsd) {      ethsd = eth_open_cached(eth->devname);      if (!ethsd) 	fatal("%s: Failed to open ethernet device (%s)", __func__, eth->devname);      ethsd_opened = true;    } else ethsd = eth->ethsd;    res = eth_send(ethsd, eth_frame, 14 + packetlen);    PacketTrace::trace(PacketTrace::SENT, packet, packetlen);     /* No need to close ethsd due to caching */    free(eth_frame);    eth_frame = NULL;    return res;  }  assert(sd >= 0);  memset(&sock, 0, sizeof(sock));  sock.sin_family = AF_INET;#if HAVE_SOCKADDR_SA_LEN  sock.sin_len = sizeof(sock);#endif  /* It is bogus that I need the address and port info when sending a RAW IP      packet, but it doesn't seem to work w/o them */  if (packetlen >= 20) {    sock.sin_addr.s_addr = ip->ip_dst.s_addr;    if (ip->ip_p == IPPROTO_TCP && packetlen >= (unsigned int) ip->ip_hl * 4 + 20) {      tcp = (struct tcp_hdr *) ((u8 *) ip + ip->ip_hl * 4);      sock.sin_port = tcp->th_dport;    } else if (ip->ip_p == IPPROTO_UDP && packetlen >= (unsigned int) ip->ip_hl * 4 + 8) {      udp = (struct udp_hdr *) ((u8 *) ip + ip->ip_hl * 4);      sock.sin_port = udp->uh_dport;    }  }    /* Equally bogus is that the IP total len and IP fragment offset     fields need to be in host byte order on certain BSD variants.  I     must deal with it here rather than when building the packet,     because they should be in NBO when I'm sending over raw     ethernet */#if FREEBSD || BSDI || NETBSD || DEC || MACOSX  ip->ip_len = ntohs(ip->ip_len);  ip->ip_off = ntohs(ip->ip_off);#endif  res = Sendto("send_ip_packet", sd, packet, packetlen, 0,	       (struct sockaddr *)&sock,  (int)sizeof(struct sockaddr_in));  return res;}/* Builds an ICMP packet (including an IP header) by packing the fields   with the given information.  It allocates a new buffer to store the   packet contents, and then returns that buffer.  The packet is not   actually sent by this function.  Caller must delete the buffer when   finished with the packet.  The packet length is returned in   packetlen, which must be a valid int pointer.  The id/seq will be converted   to network byte order (if it differs from HBO) */u8 *build_icmp_raw(const struct in_addr *source, const struct in_addr *victim, 		   int ttl, u16 ipid, u8 tos, bool df,		   u8 *ipopt, int ipoptlen,		   u16 seq, unsigned short id, u8 ptype, u8 pcode,		   char *data, u16 datalen, u32 *packetlen) {struct ppkt {  u8 type;  u8 code;  u16 checksum;  u16 id;  u16 seq;  u8 data[1500]; /* Note -- first 4-12 bytes can be used for ICMP header */} pingpkt;u32 *datastart = (u32 *) pingpkt.data;int dlen = sizeof(pingpkt.data); int icmplen=0;char *ping = (char *) &pingpkt; pingpkt.type = ptype; pingpkt.code = pcode; if (ptype == 8) /* echo request */ {   icmplen = 8; } else if (ptype == 13 && pcode == 0) /* ICMP timestamp req */ {   icmplen = 20;   memset(datastart, 0, 12);   datastart += 12;   //datalen -= 12; } else if (ptype == 17 && pcode == 0) /* icmp netmask req */ {   icmplen = 12;   *datastart++ = 0;   //datalen -= 4; } else    fatal("Unknown icmp type/code (%d/%d) in %s", ptype, pcode, __func__); if (datalen > 0) {   icmplen += MIN(dlen, datalen);   memset(datastart, 0, MIN(dlen, datalen)); }/* Fill out the ping packet */ pingpkt.id = htons(id); pingpkt.seq = htons(seq);pingpkt.checksum = 0;pingpkt.checksum = in_cksum((unsigned short *)ping, icmplen);if ( o.badsum )  --pingpkt.checksum;return build_ip_raw(source, victim,		    IPPROTO_ICMP,		    ttl, ipid, tos, df,		    ipopt, ipoptlen,		    ping, icmplen,		    packetlen);}/* Builds an IGMP packet (including an IP header) by packing the fields   with the given information.  It allocates a new buffer to store the   packet contents, and then returns that buffer.  The packet is not   actually sent by this function.  Caller must delete the buffer when   finished with the packet.  The packet length is returned in packetlen,   which must be a valid int pointer. */u8 *build_igmp_raw(const struct in_addr *source, const struct in_addr *victim, 		   int ttl, u16 ipid, u8 tos, bool df,		   u8 *ipopt, int ipoptlen,		   u8 ptype, u8 pcode,		   char *data, u16 datalen, u32 *packetlen) { struct {   u8 igmp_type;   u8 igmp_code;   u16 igmp_cksum;   u32 var; /* changes between types, unused. usually group address. */   u8 data[1500]; } igmp; u32 *datastart = (u32 *) igmp.data; int dlen = sizeof(igmp.data);  int igmplen = 0; char *pkt = (char *) &igmp; igmp.igmp_type = ptype; igmp.igmp_code = pcode; if (ptype == 0x11) { /* Membership Query */   igmplen = 8; } else if (ptype == 0x12) { /* v1 Membership Report */   igmplen = 8; } else if (ptype == 0x16) { /* v2 Membership Report */   igmplen = 8; } else if (ptype == 0x17) { /* v2 Leave Group */   igmplen = 8; } else if (ptype == 0x22) { /* v3 Membership Report */   igmplen = 8; } else {   fatal("Unknown igmp type (%d) in %s", ptype, __func__); } if (datalen > 0) {   igmplen += MIN(dlen, datalen);   memset(datastart, 0, MIN(dlen, datalen)); } igmp.igmp_cksum = 0; igmp.igmp_cksum = in_cksum((unsigned short *)pkt, igmplen); if (o.badsum)   --igmp.igmp_cksum; return build_ip_raw(source, victim,		     IPPROTO_IGMP,		     ttl, ipid, tos, df,		     ipopt, ipoptlen,		     pkt, igmplen,		     packetlen);}/* A simple function I wrote to help in debugging, shows the important fields   of a TCP packet*/int readtcppacket(const u8 *packet, int readdata) {struct ip *ip = (struct ip *) packet;struct tcp_hdr *tcp = (struct tcp_hdr *) (packet + sizeof(struct ip));const unsigned char *data = packet +  sizeof(struct ip) + sizeof(struct tcp_hdr);int tot_len;struct in_addr bullshit, bullshit2;char sourcehost[16];int i;int realfrag = 0;if (!packet) {  error("%s: packet is NULL!", __func__);  return -1;    }bullshit.s_addr = ip->ip_src.s_addr; bullshit2.s_addr = ip->ip_dst.s_addr;/* this is gay */realfrag = htons(ntohs(ip->ip_off) & 8191 /* 2^13 - 1 */);tot_len = htons(ip->ip_len);strncpy(sourcehost, inet_ntoa(bullshit), 16);i =  4 * (ntohs(ip->ip_hl) + ntohs(tcp->th_off));if (ip->ip_p== IPPROTO_TCP) {  if (realfrag)     log_write(LOG_PLAIN, "Packet is fragmented, offset field: %u\n", realfrag);  else {    log_write(LOG_PLAIN, "TCP packet: %s:%d -> %s:%d (total: %d bytes)\n", sourcehost, 	      ntohs(tcp->th_sport), inet_ntoa(bullshit2), 	      ntohs(tcp->th_dport), tot_len);    log_write(LOG_PLAIN, "Flags: ");    if (!tcp->th_flags) log_write(LOG_PLAIN, "(none)");    if (tcp->th_flags & TH_RST) log_write(LOG_PLAIN, "RST ");    if (tcp->th_flags & TH_SYN) log_write(LOG_PLAIN, "SYN ");    if (tcp->th_flags & TH_ACK) log_write(LOG_PLAIN, "ACK ");    if (tcp->th_flags & TH_PUSH) log_write(LOG_PLAIN, "PSH ");    if (tcp->th_flags & TH_FIN) log_write(LOG_PLAIN, "FIN ");    if (tcp->th_flags & TH_URG) log_write(LOG_PLAIN, "URG ");    log_write(LOG_PLAIN, "\n");    log_write(LOG_PLAIN, "ipid: %hu ttl: %hu ", ntohs(ip->ip_id), ip->ip_ttl);    if (tcp->th_flags & (TH_SYN | TH_ACK)) log_write(LOG_PLAIN, "Seq: %u\tAck: %u\n", (unsigned int) ntohl(tcp->th_seq), (unsigned int) ntohl(tcp->th_ack));    else if (tcp->th_flags & TH_SYN) log_write(LOG_PLAIN, "Seq: %u\n", (unsigned int) ntohl(tcp->th_seq));    else if (tcp->th_flags & TH_ACK) log_write(LOG_PLAIN, "Ack: %u\n", (unsigned int) ntohl(tcp->th_ack));  }}if (readdata && i < tot_len) {  log_write(LOG_PLAIN, "Data portion:\n");  while(i < tot_len)  {    log_write(LOG_PLAIN, "%2X%c", data[i], ((i+1) %16)? ' ' : '\n');    i++;  }  log_write(LOG_PLAIN, "\n");}return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频中文一区二区三区在线观看| 亚洲午夜精品网| 国产精品资源在线观看| 日韩免费视频一区二区| 久久av资源网| 国产精品久久久久久久久果冻传媒| 国产成人免费9x9x人网站视频| 日本一区二区三区在线不卡| 成人综合婷婷国产精品久久免费| 亚洲欧美另类在线| 欧美日韩在线播放一区| 久久综合综合久久综合| 国产网站一区二区三区| 91老师国产黑色丝袜在线| 亚洲一区二区精品久久av| 日韩欧美自拍偷拍| 国产精品一二三在| 亚洲人妖av一区二区| 欧美军同video69gay| 国产一区激情在线| 成人欧美一区二区三区黑人麻豆 | 国产精品视频一区二区三区不卡| 丁香一区二区三区| 婷婷久久综合九色国产成人| 国产午夜精品一区二区| 欧美视频三区在线播放| 国产自产2019最新不卡| 一区二区三区日韩| 日韩欧美成人一区二区| 91视频免费播放| 久久精品99国产精品| 中文字幕在线观看不卡| 91精品在线一区二区| 91亚洲男人天堂| 免费看黄色91| 亚洲欧洲99久久| 精品日韩欧美在线| 欧美日韩在线播| 国产suv精品一区二区三区| 天天影视涩香欲综合网| 国产精品无圣光一区二区| 宅男在线国产精品| 91在线观看成人| 国产精品1区2区3区| 亚洲成a人片在线观看中文| 国产亚洲欧美一区在线观看| 欧美一区欧美二区| 在线观看视频一区二区| 成人免费视频免费观看| 久久成人免费日本黄色| 亚洲电影第三页| 亚洲日本va午夜在线电影| 国产日韩三级在线| 2020国产精品| 8v天堂国产在线一区二区| 色一区在线观看| proumb性欧美在线观看| 久久99精品久久久久| 日韩1区2区3区| 天堂久久久久va久久久久| 亚洲欧美一区二区久久 | 岛国精品在线观看| 激情久久五月天| 青草国产精品久久久久久| 亚洲主播在线播放| 亚洲精品国久久99热| 中文字幕在线观看一区| 国产精品第一页第二页第三页| 久久精品这里都是精品| 久久精品一区八戒影视| 久久综合狠狠综合久久综合88| 欧美变态tickle挠乳网站| 日韩欧美一级片| 日韩欧美卡一卡二| 欧美变态凌虐bdsm| 久久久亚洲精品一区二区三区| 欧美成人r级一区二区三区| 91精品国产福利在线观看 | 91久久精品日日躁夜夜躁欧美| 成人美女视频在线看| www..com久久爱| 91年精品国产| 欧美系列在线观看| 91麻豆精品国产91久久久久久| 日韩一区二区三区在线| 精品国产污污免费网站入口 | 美女视频黄 久久| 精品亚洲免费视频| 国产精品91一区二区| 国产+成+人+亚洲欧洲自线| 成人av网站在线| 日本道色综合久久| 欧美日本一区二区三区| 日韩精品一区在线| 国产日韩欧美不卡| 亚洲乱码国产乱码精品精小说| 亚洲裸体在线观看| 无吗不卡中文字幕| 久久成人综合网| jlzzjlzz亚洲女人18| 日本精品一区二区三区高清 | 婷婷综合另类小说色区| 国产在线精品一区二区不卡了| 国产suv精品一区二区三区| av成人免费在线| 欧美日韩高清一区二区| 精品国产99国产精品| 国产精品不卡视频| 日韩1区2区3区| 成人黄色小视频| 91麻豆精品国产| 国产精品剧情在线亚洲| 亚洲黄色片在线观看| 久久精品72免费观看| 99久久夜色精品国产网站| 欧美日韩精品免费观看视频| 精品福利在线导航| 一区二区三区精密机械公司| 久草精品在线观看| 欧美亚洲动漫另类| 久久九九久久九九| 婷婷久久综合九色综合伊人色| 高清成人在线观看| 欧美一区二区三区日韩| 中文字幕日韩精品一区| 精品一区二区三区欧美| 91麻豆免费观看| 久久精品在线观看| 日本午夜精品视频在线观看| 不卡视频一二三| 日韩免费电影网站| 亚洲小说春色综合另类电影| 懂色av一区二区在线播放| 3d动漫精品啪啪一区二区竹菊| 亚洲午夜羞羞片| 99视频一区二区| 久久中文娱乐网| 三级在线观看一区二区 | aaa国产一区| 精品国产乱码久久久久久闺蜜 | 欧美日本国产一区| 日韩一区在线看| 国产成人高清在线| 精品蜜桃在线看| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩午夜在线| 亚洲美腿欧美偷拍| 91片在线免费观看| 中文子幕无线码一区tr| 国产精品一区二区在线播放| 国产精品三级在线观看| 久久精品国产亚洲aⅴ| 欧美日本在线一区| 午夜久久久影院| 欧美性大战久久久久久久| 亚洲欧美色一区| 91免费在线视频观看| 亚洲免费资源在线播放| 99久久伊人网影院| 国产精品久久综合| av高清不卡在线| 国产精品久久久久三级| 国产69精品久久久久毛片| 国产日韩精品一区二区三区在线| 国产精品一区二区三区四区| 久久综合九色综合97婷婷女人| 韩国午夜理伦三级不卡影院| 26uuu成人网一区二区三区| 精品一区二区在线观看| 欧美精品一区二区在线观看| 精品亚洲aⅴ乱码一区二区三区| 精品久久久久av影院| 国产一区二区三区四| 国产精品美女久久久久久久久 | 日韩精品最新网址| 精品一区二区三区在线观看| 久久综合九色综合欧美就去吻| 国产综合久久久久久鬼色| 国产日韩欧美精品一区| 不卡欧美aaaaa| 亚洲综合免费观看高清完整版| 欧美三级一区二区| 蜜桃视频第一区免费观看| 日韩美一区二区三区| 国产乱码精品一品二品| 中文一区二区在线观看| 色哟哟精品一区| 人人爽香蕉精品| 久久精品日产第一区二区三区高清版| 国产制服丝袜一区| 亚洲欧洲av在线| 欧美猛男超大videosgay| 蜜桃一区二区三区在线观看| 欧美精品一区二区三区久久久 | 久久se这里有精品| 国产精品久久久久久妇女6080| 色哟哟精品一区| 韩国视频一区二区| 亚洲欧美日韩一区二区三区在线观看| 这里只有精品99re|