Welcome to Masshirosoft Helmet Service (C, telnet?)
(追記)当時のサーバーをかなぐり捨てたので今はつながりません。
どうでも良いものをこしらえました。
以下で接続します。
C:\Users\User0001>telnet stackprobe.ccsp.mydns.jp
src
https://github.com/stackprobe/Factory/blob/master/Labo/Socket/telnet/Helmet.c
#include "libs\Server.h" typedef enum Status_et { CONNECTED, INPUT_USER, INPUT_PASSWORD, LOGGED_IN, } Status_t; typedef struct Info_st { Status_t Status; char *User; } Info_t; uint CreateTelnetServerPerformInfo(void) { Info_t *i = (Info_t *)memAlloc(sizeof(Info_t)); i->Status = CONNECTED; i->User = NULL; return (uint)i; } void ReleaseTelnetServerPerformInfo(uint prm) { Info_t *i = (Info_t *)prm; memFree(i->User); memFree(i); } #define DUMMY_PROMPT_FORMAT "C:/Users/%s.ADMINISTRATOR>" char *TelnetServerPerform(char *inputLine, uint prm) { Info_t *i = (Info_t *)prm; switch(i->Status) { case CONNECTED: i->Status = INPUT_USER; return strx( "Welcome to Masshirosoft Helmet Service\r\n" "\r\n" "login: " ); case INPUT_USER: if(inputLine && *inputLine) { cout("[%s] %p user: %s\n", c_makeJStamp(NULL, 1), i, inputLine); i->Status = INPUT_PASSWORD; i->User = strx(inputLine); i->User = setStrLenRng(i->User, 4, 12, '_'); line2csym(i->User); return strx("password: "); } break; case INPUT_PASSWORD: if(inputLine && *inputLine) { cout("[%s] %p password: %s\n", c_makeJStamp(NULL, 1), i, inputLine); i->Status = LOGGED_IN; return xcout( "\r\n" "*==============================================================================\r\n" "Masshirosoft Helmet Server.\r\n" "*==============================================================================\r\n" "\r\n" DUMMY_PROMPT_FORMAT ,i->User ); } break; case LOGGED_IN: if(inputLine) { if(*inputLine) { cout("[%s] %p command: %s\n", c_makeJStamp(NULL, 1), i, inputLine); if( !_stricmp(inputLine, "EXIT") || !_stricmp(inputLine, "QUIT") || !_stricmp(inputLine, "BYE") ) return NULL; return xcout( "The filename, directory name, or volume label syntax is incorrect.\r\n" "\r\n" DUMMY_PROMPT_FORMAT ,i->User ); } return xcout(DUMMY_PROMPT_FORMAT, i->User); } break; default: error(); } return strx(""); }
実のところ telnet のプロトコルはよく分かっていなくて、環境の問題(?)で telnet サーバーを立てられないから色々試せなくて、、、と言い訳を書き残しておく。こんなことやっている場合じゃないんだ。本筋に戻ろう...