从编程到入侵

2008-04-09 04:10:54来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


大家是不是大都使用别人的工具来搞入侵呢, 我也是, 不过从学了编程以后, 老是想自己写点程序, 然后用它来入侵,这里就是教你如何实现自己的的梦想。
今天所要演示的是telnet的入侵, 近来的sunos_telnet搞的风风火火.
1.扫描一个IP段, 所以要写个IP扫描器
2.Telnet banner check, 看telnet的反应, 所以要写个system os check depent op telnet.
3.用sunos_telnet来测试, sunos_telnet.exe网上有下载.
第一步:
/* simple tcp portscan */
/* 只对一个IP的扫描 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#define START_PORT 1
#define STOP_PORT 1024
struct sockaddr_in addr; /* 以struct sockaddr_in 结构定义 addr */
struct hostent *host;
struct servent *reply;
int sock, i;
int start_port; /* 起始端口 */
int stop_port; /* 结束端口 */
int usage(char *pro) /* 帮助 */
{
printf(" simple TCP scanner\n");
printf("usage: %s <Remote-host> <start port> <end port>\n",pro);
exit(1);
}
int scan(int port) /* scan()扫描 */
{
if((sock = socket(AF_INET,SOCK_STREAM,0)) < 0) { /* 建立socket描述符 */
printf("scan errno -> socket\n");
exit(1);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr = *(struct in_addr *)host->h_addr;
if((connect(sock,(struct sockaddr *)&addr,sizeof(addr))) == 0) /*
建立连接,判断端口 */
return 0; /* 成功 */
else
return 1; /* 失败 */
}
int main(int argc,char *argv[]) /*主程序 */
{
char *service;
if(argc != 4)
usage(argv[0]);
start_port = atoi(argv[2]); /* 将argv[2]转换成整数*/
stop_port = atoi(argv[3]); /* 将argv[3]转换成整数*/
if(strcmp(argv[2],"-")== 0 && strcmp(argv[3],"-")== 0) { /* 对比 argv[2] argv[
3] 和 "-"符号 */
start_port = START_PORT; /* 如果是 "-" 的话,起始端口等于1 */
stop_port = STOP_PORT; /* 如果是 "-" 的话,结束端口等于1 */
}
if(start_port > stop_port) { /* 如果起始端口大于结束端口 */
printf(" start port can not greater than stop port.\n");
usage(argv[0]);
exit(1);
}
if((host = gethostbyname(argv[1])) == NULL) { /* 用gethostbyname()
来得到对方的信息 */
printf("can't get host info %s \n",argv[1]);
exit(1);
}
printf("Scanning host %s from %d to %d ......................\n",argv[1],
start_port,stop_port);
for(i=start_port;i<=stop_port;i ) /* 使用for语句对每个端口进行连接 */
{
if(scan(i) == 0) {
reply = getservbyport(htons(i),"tcp"); /* 用getservbyport得到端口信息 */
if(reply == NULL) /* 无法得到端口信息 */
service = "Uknown";
else
service = reply->s_name; /* reply->s_name 是端口服务 */
printf("Port ] is open. \tservice <%s>\n",i,service);
}
close(sock);
}
}
/*****************************************************************************/
看懂上面的代码吗? 如果你看不懂的话, 或编写不成功, 就用superscan吧,
superscan扫描结果:
* 209.249.191.73
|___ 23 Telnet
|___ ............
* 209.249.191.74
|___ 23 Telnet
* 209.249.191.75
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.191.76
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.191.77
|___ 23 Telnet
* 209.249.191.78
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.202.166
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.202.167
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.202.168
|___ 23 Telnet
|___ ..... ..#..'
* 209.249.242.3
|___ 23 Telnet
|___ ............
* 209.249.242.14
|___ 23 Telnet
|___ ................User Access Verification....Password:
* 209.249.249.171
|___ 23 Telnet
|___ ........#..'..$
* 209.249.249.172
|___ 23 Telnet
|___ ........#..'..$

是不是很讨厌前面的 * 和 |___ 23 Telnet |___ ........#..'..$ 东西呢, 那再写个程序搞定它,
/*************************superscan clear.c************************/
#include <stdio.h>

main(int argc,char *argv[])
{
FILE *in; /* inputfile定义 */
FILE *out; /* outputfile 定义 */
char buf[1024]; /* 缓冲区 */
int i,j;

if(argc<3)
{
printf("usage : %s <inputfile> <outputfile>",argv[0]);
exit();
}

in = fopen(argv[1],"r"); /* 读文件并差错 */

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:总结开3389的5种方法

下一篇:IRC攻防手册