当前位置:  技术问答>linux和unix

求助改正/用c在LINUX下写的端口扫描程序有错误 /希望能在6.10前解决

    来源: 互联网  发布时间:2015-06-27

    本文导语:  求助改正/用c在LINUX下写的端口扫描程序有错误  求助  希望有人能帮忙指明错误 帮忙改一下   使用套接子技术在turbo linux下用c开发的简单端口扫描程序有问题   附源代码和详细说明  第一个能运行 但结果不对 ...

求助改正/用c在LINUX下写的端口扫描程序有错误 
求助  希望有人能帮忙指明错误 帮忙改一下
  使用套接子技术在turbo linux下用c开发的简单端口扫描程序有问题
  附源代码和详细说明 
第一个能运行 但结果不对
第2个运行没有反映
第3个编译也没有能通过
1 scanport_tcp.c
#include
#include
#include
#include
#include
#include
#include
#include
#include

enum{CMD_NAME,DST_IP,START_PORT,LAST_PORT};
enum{CONNECT,NOCONNECT};

int tcpportscan(u_int dst_ip,int dst_port);

int main(int argc,char *argv[])
{
    u_int dst_ip;
    int dst_port;
    int start;
    int end;

    if(argc!=4){
        fprintf(stderr,"usage:%s dst_ip start_port last_portn",argv[CMD_NAME]);
           exit(EXIT_FAILURE);
               }

dst_ip=inet_addr(argv[DST_IP]);
start=atoi(argv[START_PORT]);
end=atoi(argv[LAST_PORT]);

for(dst_port=start;dst_ports_name);
              }
           }
   return EXIT_SUCCESS;
   }


int tcpportscan(u_int dst_ip,int port)
  {
     struct sockaddr_in dest;
     int s;
     int ret;

     memset((char *)&dest,0,sizeof(dest));
     dest.sin_family=AF_INET;
     dest.sin_port=htons(port);
     dest.sin_addr.s_addr=dst_ip;

     if((s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))tcp.th_dport=htons(dst_port);
   packet->tcp.th_off=5;
   packet->tcp.th_flags=TH_SYN;
   packet->tcp.th_win=htons(8192);
   packet->tcp.th_urp=0;

   packet->ip.ip_ttl=0;
   packet->ip.ip_p=IPPROTO_TCP;
   packet->ip.ip_src.s_addr=src_ip;
   packet->ip.ip_dst.s_addr=dst_ip;
   packet->ip.ip_sum=htons(sizeof(packet->tcp)+datalen);
   
   #define PSEUDO_HEADER_LEN 12
       packet->tcp.th_sum=0;
       packet->tcp.th_sum=checksum((u_short *)(&(packet->ip.ip_ttl)),
                               PSEUDO_HEADER_LEN+sizeof(packet->tcp)+datalen);
   }

void make_ip_header(struct ip *ip,int src_ip,int dst_ip,int iplen)
       {ip->ip_v=IPVERSION;
        ip->ip_hl=sizeof(struct ip)>>2;
        ip->ip_id=0;
#ifdef_Linux
  ip->ip->len=htons(iplen);
  ip->ip->off=htons(0);
#else
  ip->ip->len=iplen;
  ip->ip->off=IP_DF;
#endif_Linux
  ip->ip_ip_ttl=2;
  ip->ip_p=IPPROTO_TCP;
  ip->ip_src.s_addr=src_ip;
  ip->ip_dst.s_addr=dst_ip;

ip->ip_sum=0;
ip->ip_sum=checksum((u_short *)ip,sizeof(struct ip));
}

u_short checksum(u_short  *data,int len)
  { 
    u_long sum=0;
    for(;len>1;len-=2{
   sum+=*data++;
   if(sum&0x80000000)
       sum=(sum&0xffff)+(sum>>16);
                     }
       if(len==1){
    u_short i=0;
     *(u_char *)(&i)=*(u_char  *)data;
      sum+=i;
                 }

   while(sum>>16)
       sum=(sum&0xffff)+(sum>>16);
   return(sum==0xffff)?sum:~sum;
}
  

|
这种东西,这么长,谁有耐心给你解决?
你自己装一个嗅探器,然后sniff一下你程序生成的包,就可以找出原因在哪里了.
另外, 要注意程序的返回值

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • Web服务器/前端 iis7站长之家
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3