首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

NVT相关的有关问题

2012-03-30 
NVT相关的问题突然想作一个可以连接telnet的东东出来玩.但是发现telnet连接上去是没问题了.但是telnet发送

NVT相关的问题
突然想作一个可以连接telnet的东东出来玩.但是发现telnet连接上去是没问题了.但是telnet发送过来的控制数据一直看不明白.也就是说的NVT格式吧(我是这样理解的).telnet回传回来的前几个字符是NVT格式的控制字符.但是一直不明白这些控制字符的据体内容.在网上也没查到NVT规范之类的东东.

#include   <stdlib.h>
#include   <stdio.h>
#include   <WINSOCK2.H>
#include   <process.h>

void   main()
{
SOCKET   test;

int   a   =   0;

char   buff[1024];

char   orda[10];

WORD   wVersion=MAKEWORD(2,0);//定义版本

struct   sockaddr_in   ip_addr;//IP地址

char   addr[32]   =   "192.168.1.1 ";//输入的IP地址

WSADATA   wsData;

int   nResult=   WSAStartup(wVersion,&wsData);

memset(buff,0,sizeof(buff));
memset(orda,0,sizeof(orda));
//memset(addr,0,32);
if   (nResult   !=   0)  
{
printf( "WINSOCK   EEROR\n ");
system( "pause ");
}

//printf( "输入IP地址: ");
//gets(addr);//输入目标机地址
//     printf( "\n ");


test   =   socket(AF_INET,SOCK_STREAM,0);//创建套接字

if(test   ==   INVALID_SOCKET)
{
exit(0);
}

ip_addr.sin_family   =   AF_INET;
ip_addr.sin_port   =   htons(23);//端口
ip_addr.sin_addr.S_un.S_addr   =   inet_addr(addr);//地址格式转换,连接地址

a   =   connect(test,(struct   sockaddr   *)&ip_addr,sizeof(struct   sockaddr_in));//连接目标地址
a   =   WSAGetLastError();
if(0   !=   a)
{
printf( "连接错误!\n ");
exit(0);
}  

do
{
a   =   recv(test,buff,sizeof(buff),0);

printf( "%s ",buff);
memset(buff,0,sizeof(buff));

gets(orda);

*(orda+strlen(orda))   =   13;

send(test,orda,strlen(orda)+1,MSG_DONTROUTE);

memset(orda,0,sizeof(orda));

memset(buff,0,sizeof(buff));


}while   (1);
}

这样能连接上去.也能收到数据.但是数据前面的控制字符一直无法理解.如连上去后.telnet马上回传过来的是     ff   fd   01   ff   fd   21   ff   fb   03


[解决办法]
帮你顶一下
[解决办法]
哦,想起来了,在《tcp/ip详解》第一卷里的26.4节有nvt格式字符的说明,从302-304页。你可以先自己看看,有不明白再问我,呵呵

热点排行