從編程到入侵

來源:互聯網
上載者:User
大家是不是大都使用別人的工具來搞入侵呢, 我也是, 不過從學了編程以後, 老是想自己寫點程式, 然後用它來入侵,這裡就是教你如何?自己的的夢想。
今天所要示範的是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
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#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 /n",pro);
exit(1);
}
int scan(int port) /* scan() 掃描 */
{
if((sock = socket(AF_INET,SOCK_STREAM,0)) 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;is_name; /* reply->s_name 是連接埠服務 */
printf("Port %5d is open. /tservice /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

main(int argc,char *argv[])
{
FILE *in; /* inputfile定義 */
FILE *out; /* outputfile 定義 */
char buf[1024]; /* 緩衝區 */
int i,j;

if(argc ",argv[0]);
exit();
}

in = fopen(argv[1],"r"); /* 讀檔案並差錯 */
if(in == NULL)
puts("File open error");
out = fopen(argv[2],"w"); /* 寫檔案並查錯 */
if(out == NULL)
puts("File write error");

while(fgets(buf,21,in) != NULL) /* 輸入字串 */
{
for(i=0;i clear inputfile.txt outputfile.txt
inputfile 是superscan掃描結果檔案
outputfile 是處理後要產生的檔案,產生後為IP檔案

第2步
通過telnet的返回banner來確定對反的系統類別型.比如
c:/>telnet 209.249.249.171

SunOS 5.8
login:
從而判斷對反的系統類別型。

/**************************************************************************/

#include
#include
#include
#include
#include
#include
#include

#define PORT 23 /* 定義連接埠 */
#define MAX 1024 /* buf的長度 */

FILE *output; /* 定義outputfile */

main(int argc,char *argv[])
{
FILE *input; /* 定義inputfile */
char scan_ip[1024];

if(argc /n",pro);
printf("System OS 1.Sunos 2. Redhat 3. FreeBSD /n");
}

telnet_banner(char *ip,char *os)
{
struct sockaddr_in addr;

u_char buf[MAX];
int sock,size,i;
if((sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == -1) {
printf(" socket failt");
exit(1);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(ip);

if(connect(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) {
printf("connect failt");
exit(1);
}

while (1) { /* 接收banner的迴圈 */
memset (buf, 0, sizeof (buf)); /* buf的內容置為0 */

if ((size = read (sock, buf, 1))
systemos : 1. SunOS 2. Red Hat 3. FreeBSD
./detector 1.txt 2.txt 1
1.txt 為處理後的superscan掃描檔案.
2.txt 為使用detector用的檔案.
1 表示要找Sunos , 2 表示 Redhat , 3 表示FreeBSD

處理後

* scanhost 209.249.249.171 OS : SunOS 5.8
* scanhost 209.249.249.172 OS : SunOS 5.8

一目瞭然.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.