NVT相关的问题

shjmqqc111 shjmqqc111 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
突然想作一个可以连接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
...全文
评论 5
收藏 已收藏
分享
返回顶部
shjmqqc111
其它技术问题 3,881 成员 9,044 内容