📄 ftp.c
字号:
if (strncmp(content, "202", 3) == 0)
printf("表示命令未被执行,此站点不支持此命令\n");
if (strncmp(content, "211", 3) == 0)
printf("表示系统状态或系统帮助响应\n");
if (strncmp(content, "212", 3) == 0)
printf("表示目录状态信息\n");
if (strncmp(content, "213", 3) == 0)
printf("表示文件状态信息\n");
if (strncmp(content, "214", 3) == 0)
printf("表示帮助信息\n");
if (strncmp(content, "215", 3) == 0)
printf("表示名字系统类型\n");
if (strncmp(content, "221", 3) == 0)
printf("表示控制连接已经被关闭\n");
if (strncmp(content, "225", 3) == 0)
printf("表示数据连接已经打开,没有数据传输\n");
if (strncmp(content, "226", 3) == 0)
printf("表示数据连接已经关闭,请求文件操作成功完成\n");
if (strncmp(content, "227", 3) == 0)
printf("表示进入被动模\n");
if (strncmp(content, "230", 3) == 0)
printf("表示用户已经登录\n");
if (strncmp(content, "250", 3) == 0)
printf("表示请求文件操作已经成功执行\n");
if (strncmp(content, "257", 3) == 0)
printf("表示创建路径名字\n");
if (strncmp(content, "331", 3) == 0)
printf("表示用户名正确,需要输入密码\n");
if (strncmp(content, "332", 3) == 0)
printf("表示 登录时需要帐户信息\n");
if (strncmp(content, "350", 3) == 0)
printf("表示对请求的文件操作需要更多的指令\n");
if (strncmp(content, "421", 3) == 0)
printf("表示服务不可用,关闭控制连接\n");
if (strncmp(content, "425", 3) == 0)
printf("表示打开数据连接操作失败\n");
if (strncmp(content, "426", 3) == 0)
printf("表示关闭连接,中止传输\n");
if (strncmp(content, "450", 3) == 0)
printf("表示请求的文件操作未被执行\n");
if (strncmp(content, "451", 3) == 0)
printf("表示请求操作中止,有本地错误发生\n");
if (strncmp(content, "452", 3) == 0)
printf("表示未执行请求的操作,系统存储空间不足 ,文件不可用\n");
if (strncmp(content, "500", 3) == 0)
printf("表示语法错误,命令错误\n");
if (strncmp(content, "501", 3) == 0)
printf("表示参数的语法错误\n");
if (strncmp(content, "502", 3) == 0)
printf("表示命令未被执行\n");
if (strncmp(content, "503", 3) == 0)
printf("表示命令顺序发生错误\n");
if (strncmp(content, "504", 3) == 0)
printf("表示由于参数而发生错误命令\n");
if (strncmp(content, "530", 3) == 0)
printf("表示未登录\n");
if (strncmp(content, "532", 3) == 0)
printf("表示存储文件需要帐户信息\n");
if (strncmp(content, "550", 3) == 0)
printf("表示未执行请求的操作,文件不可用\n");
if (strncmp(content, "551", 3) == 0)
printf("表示请求操作中止,页面类型未知\n");
if (strncmp(content, "552", 3) == 0)
printf("表示请求的文件操作中止,超出存储分配空间\n");
if (strncmp(content, "553", 3) == 0)
printf("表示未执行请求的操作,文件名不合法\n");
for (i = 0; i < hlf->count_new; i++)
{
printf("%s", char_to_ascii(content[i]));
}
printf("\n");
}
}
else
{
/* FTP服务器接收到新的数据 */
hlf = &ftp_connection->server;
strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
sprintf(address_string + strlen(address_string), ":%i", ip_and_port.source);
strcat(address_string, " ---> ");
strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
sprintf(address_string + strlen(address_string), ":%i", ip_and_port.dest);
strcat(address_string, "\n");
printf("--------------------------------\n");
printf("%s", address_string);
/* 输出FTP服务器端接收到的新的数据 */
memcpy(content, hlf->data, hlf->count_new);
content[hlf->count_new] = '\0';
if (ftp_connection->addr.source == 20)
printf("FTP服务器向FTP客户端发送数据\n");
else
{
if (strstr(content, "USER"))
printf("用户名字为(USER):%s\n", content + strlen("USER"));
else if (strstr(content, "PASS"))
printf("用户密码为(PASS):%s\n", content + strlen("PASS"));
else if (strstr(content, "PORT"))
printf("端口参数为(PORT):%s\n", content + strlen("PORT"));
else if (strstr(content, "LIST"))
printf("显示文件列表(LIST):%s\n", content + strlen("LIST"));
else if (strstr(content, "CWD"))
printf("改变工作目录为(CWD):%s\n", content + strlen("CWD"));
else if (strstr(content, "TYPE"))
printf("类型为(TYPE):%s\n", content + strlen("TYPE"));
else if (strstr(content, "RETR"))
printf("获取文件为(RETR):%s\n", content + strlen("RETR"));
else if (strstr(content, "STOR"))
printf("保存文件为(STOR):%s\n", content + strlen("STOR"));
else if (strstr(content, "XRMD"))
printf("删除目录(XRMD):%s\n", content + strlen("XRMD"));
else if (strstr(content, "QUIT"))
printf("退出登陆(QUIT):%s\n", content + strlen("QUIT"));
else
printf("FTP客户端使用的命令为 %c%c%c%c\n", content[0], content[1], content[2], content[3]);
}
for (i = 0; i < hlf->count_new; i++)
{
printf("%s", char_to_ascii(content[i]));
}
printf("\n");
}
}
default:
break;
}
return ;
}
/*
=======================================================================================================================
主函数
=======================================================================================================================
*/
void main()
{
if (!nids_init())
/* Libnids初始化 */
{
printf("出现错误:%s\n", nids_errbuf);
exit(1);
}
nids_register_tcp(ftp_protocol_callback);
/* 注册回调函数 */
nids_run();
/* 进入循环捕获数据包状态 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -