C课程Telnet客户端实现.docx
- 文档编号:8997481
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:16
- 大小:112.73KB
C课程Telnet客户端实现.docx
《C课程Telnet客户端实现.docx》由会员分享,可在线阅读,更多相关《C课程Telnet客户端实现.docx(16页珍藏版)》请在冰点文库上搜索。
C课程Telnet客户端实现
基于C/S程序设计课程设计(论文)
程序设计(报告)题目
Telnet客户端实现
程序设计(报告)任务
程序设计的任务与要求:
(1)掌握C#语言编程的基础知识。
(2)较熟练地编写C#语言应用程序。
(3)了解C#语言的常用类、网络编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2010年7月6日
目录
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内容2
2.1系统功能2
2.2系统设计2
2.3系统实现4
2.4程序的运行和测试9
第3章课程设计总结12
参考资料13
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C#网络程序开发案例》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C#语言课程的基本知识的理解和掌握
2.掌握C#语言编程和程序调试的基本技能
3.利用C#语言进行基本的网络软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C#语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C#语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C#语言及.NET开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1系统功能
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。
它为用户提供了在本地计算机上完成远程主机工作的能力。
在终端使用者的电脑上使用telnet程序,用它连接到服务器。
终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。
可以在本地就能控制服务器。
要开始一个telnet会话,必须输入用户名和密码来登录服务器。
Telnet是常用的远程控制Web服务器的方法。
它最初是由ARPANET开发的,但是现在它主要用于Internet会话。
它的基本功能是,允许用户登录进入远程主机系统。
起初,它只是让用户的本地计算机与远程计算机连接,从而成为远程主机的一个终端。
它的一些较新的版本在本地执行更多的处理,于是可以提供更好的响应,并且减少了通过链路发送到远程主机的信息数量。
主窗体MAINFORM其中封装了TELNET客户端主界面和处理TELNET协议的主要方法。
包含了主菜单,用于执行具体的命令;中间黑色的区域是输入命令和显示命令执行情况的区域;最下面是显示运行状态的状态栏。
状态栏由四个部分组成从左到右依次为连接状态,本地地址,连接的服务器地址和服务器状态。
2.2系统设计
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。
该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(NetVirtualTerminal)格式传送到远程主机。
该过程实际上是从本地主机向远程主机发送一个IP数据报;3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;4)最后,本地终端对远程主机进行撤消连接。
该过程是撤销一个TCP连接。
Telnet协议必须使用外带信令以便强制服务器读取一个控制命令。
我们知道TCP用紧急数据机制实现外带数据信令,那么Telnet只要再附加一个被称为数据标记(datemark)的保留八位组,并通过让TCP发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。
作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。
服务器在遇到了数据标记后将返回正常的处理过程。
Talnet客户端的实现这个系统的功能分为一个主窗体和二个副窗体。
主窗体MAINFORM其中封装了TELNET客户端主界面和处理TELNET协议的主要方法。
包含了主菜单,用于执行具体的命令;中间黑色的区域是输入命令和显示命令执行情况的区域;最下面是显示运行状态的状态栏。
状态栏由四个部分组成从左到右依次为连接状态,本地地址,连接的服务器地址和服务器状态。
下图为Talnet客户端的流程图:
图2.1Telnet客户端流程图
2.3系统实现
privatevoidProcessDo(shortch)
{
//处理DO,以WILL或者WONT响应
switch((char)ch)
{
caseBINARY:
Console.WriteLine(BINARY);
Send(newchar[]{IAC,WONT,BINARY});
Console.WriteLine("发送:
WONTBINARY");
break;
caseECHO:
Console.WriteLine(ECHO);
Send(newchar[]{IAC,WONT,ECHO});
Console.WriteLine("发送:
WONTECHO");
break;
caseSGA:
Console.WriteLine(SGA);
if(!
sw_igoahead)
{
Send(newchar[]{IAC,WILL,SGA});
Console.WriteLine("发送:
WILLSGA");
sw_igoahead=true;
}
Else
{
Console.WriteLine("不发送响应");
}
break;
caseTERMSPEED:
Console.WriteLine(TERMSPEED);
Send(newchar[]{IAC,WILL,TERMSPEED});
Console.WriteLine("发送:
WILLTERMSPEED");
Send(IAC+SB+TERMSPEED+(char)0+"57600,57600"+IAC+SE);
Console.WriteLine("发送:
SBTERMSPEED57600");
break;
caseTFLOWCNTRL:
Console.WriteLine(TFLOWCNTRL);
Send(newchar[]{IAC,WONT,TFLOWCNTRL});
Console.WriteLine("发送:
WONTTFLOWCNTRL");
break;
caseLINEMODE:
Console.WriteLine(LINEMODE);
Send(newchar[]{IAC,WONT,LINEMODE});
Console.WriteLine("发送:
WONTLINEMODE");
break;
caseSTATUS:
Console.WriteLine(STATUS);
Send(newchar[]{IAC,WONT,STATUS});
Console.WriteLine("发送:
WONTSTATUS");
break;
caseTIMING:
Console.WriteLine(TIMING);
Send(newchar[]{IAC,WONT,TIMING});
Console.WriteLine("发送:
WONTTIMING");
break;
caseDISPLOC:
Console.WriteLine(DISPLOC);
Send(newchar[]{IAC,WONT,DISPLOC});
Console.WriteLine("发送:
WONTDISPLOC");
break;
caseENVIRON:
Console.WriteLine(ENVIRON);
Send(newchar[]{IAC,WONT,ENVIRON});
Console.WriteLine("发送:
WONTENVIRON");
break;
caseUNKNOWN39:
Console.WriteLine(UNKNOWN39);
Send(newchar[]{IAC,WILL,UNKNOWN39});
Console.WriteLine("发送:
WILLUNKNOWN39");
break;
caseAUTHENTICATION:
Console.WriteLine(AUTHENTICATION);
Send(newchar[]{IAC,WONT,AUTHENTICATION});
Console.WriteLine("发送:
WONTAUTHENTICATION");
Console.WriteLine("发送:
SBAUTHENTICATION");
Send(IAC+SB+AUTHENTICATION+(char)0+(char)0+
(char)0+(char)0+""+IAC+SE);
break;
Console.WriteLine("未知的选项");
break;
}
}
//处理DON'T
privatevoidProcessDont(shortch)
{
switch((char)ch)
{
caseSE:
Console.WriteLine(SE);
Console.WriteLine("接收到:
RECEIVEDSE");
break;
caseECHO:
Console.WriteLine(ECHO);
if(!
sw_echo)
{
sw_echo=true;
Send(newchar[]{IAC,WONT,ECHO});
Console.WriteLine("发送:
WONTECHO");
}
break;
caseSGA:
Console.WriteLine(SGA);
if(!
sw_ugoahead)
{
Send(newchar[]{IAC,WONT,SGA});
sw_ugoahead=true;
}
break;
caseTERMSPEED:
Console.WriteLine(TERMSPEED);
Send(newchar[]{IAC,WONT,TERMSPEED});
Console.WriteLine("发送:
WONTTERMSPEED");
break;
caseTFLOWCNTRL:
Console.WriteLine(TFLOWCNTRL);
Send(newchar[]{IAC,WONT,TFLOWCNTRL});
Console.WriteLine("发送:
WONTTFLOWCNTRL");
break;
caseSTATUS:
Console.WriteLine(STATUS);
Send(newchar[]{IAC,WONT,STATUS});
Console.WriteLine("发送:
WONTSTATUS");
break;
caseTIMING:
Console.WriteLine(TIMING);
Send(newchar[]{IAC,WONT,TIMING});
Console.WriteLine("发送:
WONTTIMING");
break;
caseDISPLOC:
Console.WriteLine(DISPLOC);
Send(newchar[]{IAC,WONT,DISPLOC});
Console.WriteLine("发送:
WONTDISPLOC");
break;
caseENVIRON:
Console.WriteLine(ENVIRON);
Send(newchar[]{IAC,WONT,ENVIRON});
Console.WriteLine("发送:
WONTENVIRON");
break;
caseUNKNOWN39:
Console.WriteLine(UNKNOWN39);
Send(newchar[]{IAC,WILL,UNKNOWN39});
Console.WriteLine("发送:
WILLUNKNOWN39");
break;
default:
break;
}
}
2.4程序的运行和测试
由于Telnet服务器对NTLM的使用有3个选项,所以当你Telnet远地机器时,会显示下面情况中的一种:
1)身份验证选项=0时
Microsoft(R)Windows(TM)Version5.00(Build2195)
WelcometoMicrosoftTelnetService
TelnetServerBuild5.00.99201.1
login:
password:
\为0时不使用NTML身份验证,直接输入用户名和密码,比如你可以输入扫到的Administrator和5678
2)身份验证选项=1时
NTLMAuthenticationfailedduetoinsufficientcredentials.Pleaseloginwithcleartextusernameandpassword
Microsoft(R)Windows(TM)Version5.00(Build2195)
WelcometoMicrosoftTelnetService
TelnetServerBuild5.00.99201.1
login:
password:
\先尝试NTLM身份验证,如果失败,再使用用户名和密码,其实这种方式对于我们来说,与上一种方式没什么区别
3)身份验证选项=2时
NTLMAuthenticationfailedduetoinsufficientcredentials.Pleaseloginwithcleartextusernameandpassword
ServerallowsNTLMauthenticationonly
Serverhasclosedconnection
遗失对主机的连接。
所以对于入侵者来说,NTLM是横在我们面前的一座大山,必须要除掉它,一般我们有如下几种方法:
1通过修改远程注册表更改telnet服务器配置,将验证方式从2改为1或0;
2使用NTLM.exe,上传后直接运行,可将telnet服务器验证方式从2改为1;
3在本地建立扫描到的用户,以此用户身份开启telnet客户机并进行远程登录;
4使用软件,比如opentelnet.exe(需要管理员权限且开启IPC管道)
5使用脚本,如RTCS,(需要管理员权限但不依赖IPC管道)
基本上是以上的5种,其中后两种是我们比较常用的开telnet的手法,而且使用方法十分简单,命令如下:
OpenTelnet.exe\serverusernamepasswordNTLMAuthortelnetport
OpenTelnet.exe\服务器地址管理员用户名密码验证方式(填0或1)telnet端口
cscriptRTCS.vbetargetIPusernamepasswordNTLMAuthortelnetport
cscriptRTCS.vbe<目标IP><管理员用户名><密码><验证方式>
根据以上信息和代码经过运行和测试得到了主界面和2个分界面,主窗体是用来与用户交互用的,所以加载时间不能太长,响应速度应足够快,操作简单,设计人性化。
所以,设计的时候,采用了一些通俗易懂的图片和按钮。
文本输入框设计了Alt+S和Ctrl+Enter热键功能,方便用户快速的发送消息。
当用户未输入文字而尝试发送时,弹出消息提示框,提示不能发送空信息,节省系统和网络资源。
主窗体界面运行如图2.2所示:
图2.2主界面窗体
设置TELNET客户端步骤窗体如图2.3所示:
图2.3设置TELNET客户端步骤窗体
运行结果窗体如图2.4所示:
图2.4运行结果窗体
第3章课程设计总结
通过一学期的学习,我基本掌握了C语言的功能及应用。
在期末老师为我们布置了一个课程设计,内容为利用自己所学的知识,用C语言来实现系统运行。
我们小组的题目是《Telnet客户端实现》。
在课程设计的过程中,我了解并发现了很多调试程序的方法,而且懂得了如何处理错误的方法。
对C语言的使用得到了进一步的提高。
对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。
结构设计的合理性决定了这个程序的价值。
在这几天的课程设计过程中,我体会到老师对我们实训的目的,以及实训对每个人综合能力的检验。
我真对自己平时积攒下来的知识那么少而感到羞愧。
通过实训我能充分的学习到一些平时书本上学不到的知识、与自己动手操作的能力,并且结合此次实训,我能够通过上网或者是在图书馆查询一些相关的资料。
通过这一过程,使我学会了很多,此次实习,我深深体会到了积累知识的重要性。
通过这段时间的课程设计,我完成了C语言课程设计的内容。
中间也遇到了一些困难。
比如,刚接到课题时不知如何下手,通过老师的细心讲解以及在网上和图书馆查看了很多资料后,才开始动手设计。
但在调试时还是有些问题不明白,对此我又去图书馆查阅了一下有关资料,对程序进行尝试性调试,再逐步进行修改,终于运行成功。
对于在不断的运行调试后,最终实现了该系统的运行。
还有就是由于所学知识有限,在实践中还是有许多不足之处,不过这些并没有让我气馁,相反更激发了深入学习的兴趣。
在做课设过程中遇到不明白的地方我就查看书籍或询问老师,这样不仅使课本上的知识加深了印象也使我的知识面又有提高,我要继续学习有关的知识,争取设计出更完美的系统。
最后,我要感谢老师对于这次课程设计给予我们的帮助,他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。
我会继续努力,让学到的知识有用武之处。
经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。
我相信在未来的生活中不论遇到什么困难我都会向这次学习一样,一步一步解决问题找出问题的实质,加以解决。
没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进。
参考资料
[1]熊盛新.VisualC#.NET语言参考手册.清华大学出版社.2004
[2]张晓坤.C#编程语言详解.电子工业出版社.2002
[3]陆浩.VisualC#.NET应用技术教程.天津出版社.2000
[4]蒋本立.C#程序设计教程.中国铁道出版社.2005
[5]黄凯涛等.C#学习教程.北京大学出版社.2003
[6]那荣华.VisualC#.NET管理教程.武汉大学出版社.2001
[7]路云哲.C#应用技术教程.南京边城出版社.2006
[8]李兰友.VisualC#.NET程序设计.清华大学北方交通大学出版社.2004
[9]郭瑶.VisualStdio.NET学习教程.长春工业大学出版社.2002
[10]长春亿特.C#编程序起步.人民邮电出版社.2005
[11]张萌.VisualStdio.NET标准教程.希望电子出版社.2000
[12]孙永强等.VisualC#.NET入门与提高.清华大学出版社.2004
[13]郭胜等.C#.NET程序设计教程.清华大学出版社.2003
[14]B-power工作室.C#网络程序设计.中国铁道出版社.2006
[15]谭浩强.C#实用教程.电子工业出版社.2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程 Telnet 客户端 实现