我必须通过telnet连接到远程服务器,并希望在那里发送文件输入.
这是一个处理器模拟器(MCF68k),因此我不能将文件scp到服务器并从那里运行.
我可以发送这样的输入:
telnet host.name < input.file
哪个会成功将数据传输到服务器并运行我想要的存储命令.但是,我需要telnet会话保持交互(不终止).
如何将文件传递给命令,然后将stdin的控制权返回给终端并保持交互式会话打开?
很晚编辑:
我认为这可以通过以下方式完成expect:
男人期待:http://www.manpagez.com/man/1/expect/
python包装器:http://www.noah.org/wiki/pexpect
我已经阅读了很多关于这个主题的内容,telnet是一个协议,不是简单的套接字连接,等待换行符,使用外部库等等......
最重要的是,我需要一个快速而脏的java telnet应用程序启动和运行,不一定可扩展,不一定漂亮,所以我试图避免使用库,系统函数调用等.我一直在尝试和测试,到目前为止,当我尝试登录路由器(当然通过telnet)时,我得到了......没有.
这是我到目前为止使用的代码的剪辑,请有人指出我正确的方向,因为我不知道还应该尝试什么,因为我确信它必须是非常简单和愚蠢的东西我失踪了.提前致谢!
Socket socket = new Socket("192.168.1.1", 23);
socket.setKeepAlive(true);
BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter w = new PrintWriter(socket.getOutputStream(),true);
int c=0;
while ((c = r.read()) != -1)
System.out.print((char)c);
w.print("1234\r\n"); // also tried simply \n or \r
//w.flush();
//Thread.sleep(1000);
while ((c = r.read()) != -1)
System.out.print((char)c);
w.print("1234\r\n");
//Thread.sleep(1000);
while ((c = r.read()) != -1)
System.out.print((char)c);
socket.close();
Run Code Online (Sandbox Code Playgroud) 这就是我想要做的:
web-browser - >通过telnet(server1)连接到远程服务器 - >通过端口80(server2)上的telnet连接到squid-proxy(需要身份验证)
我写了一个使用Twisted的小python脚本(这里:
#! /usr/bin/python
from twisted.internet import reactor, protocol
from twisted.web import http
from telnetlib import Telnet
import getpass
from sys import stdout
class datareceiver(protocol.Protocol):
def dataReceived(self,data):
self.telnet_con.write(data)
stdout.write( self.telnet_con.read_all() )
def connectionMade(data):
stdout.write("\nA connection was made to this server\n")
def main():
server1 = "10.1.1.1"
#user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = Telnet(server1)
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
#This is server2
tn.write("telnet 10.1.1.10 80 \n")
#serverfac = protocol.Factory() …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个自托管的 wcf 服务器,使用wsHttpBinding. 我正在运行 Win 2003 服务器 R2 SP2。
如果我将其配置为侦听http://localhost:443/MyService,则一切正常。我可以连接到http://localhost:443/MyServiceInternet Explorer,但收到标准的“错误请求”消息
现在,如果我尝试切换到 HTTPS,我会看到一个奇怪的现象。
这是我所做的:
http://localhost到https://localhost和从Security=None到Security=Transport(如许多 wcf 教程中所述)我已经像这样注册了我的 HTTP 端口:
httpcfg delete ssl -i 0.0.0.0:443
httpcfg set ssl -i 0.0.0.0:443 -h ea2e450ef9d4...
Run Code Online (Sandbox Code Playgroud)请注意,我使用的证书是“真实证书”(即由受信任的 CA 颁发,即 Comodo)。服务器响应证书中提到的 NS 上的 ping。
现在,以下将超时:
Microsoft Telnet> open localhost 443
Run Code Online (Sandbox Code Playgroud)
这是来自netstat(Pid '4' 是 'System' 进程)的输出:
netstat -nao
Proto Local Adress Remote Adress State Pid
TCP 0.0.0.0:443 0.0.0.0:0 …Run Code Online (Sandbox Code Playgroud) PHP 中几乎所有 TELNET 实现的示例都使用套接字 ( fsockopen )。这对我不起作用,因为它花费了无法接受的时间(约 60 秒)。
我曾为其他目的尝试过fsockopen,但发现它与 cURL 相比速度较慢。
问题 1:为什么套接字这么慢?
更新:我发现我们需要设置stream_set_timeout函数,我们可以控制socket的执行时间。我很好奇如何设置正确的超时或如何在收到响应后使其“停止等待”。
我无法用 cURL 实现同样的事情。我应该把需要发送到 telnet 的命令放在哪里?是CURLOPT_CUSTOMREQUEST正确的选择吗?我正在做这样的事情:
class TELNETcURL{
public $errno;
public $errstr;
private $curl_handle;
private $curl_options = array(
CURLOPT_URL => "telnet://XXX.XXX.XXX.XXX:<port>",
CURLOPT_TIMEOUT => 40,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_PROTOCOLS => CURLPROTO_TELNET
);
function __construct(){
$this->curl_handle = curl_init();
curl_setopt_array($this->curl_handle, $this->curl_options);
}
public function exec_cmd($query) {
curl_setopt($this->curl_handle, CURLOPT_CUSTOMREQUEST, $query."\r\n");
$output = curl_exec($this->curl_handle);
return $output;
}
function __destruct(){
curl_close($this->curl_handle); …Run Code Online (Sandbox Code Playgroud) 我需要/想要在我正在编码的 MUD 客户端中实现一个符合RFC1143 的Telnet 子选项协商系统,但我很难将第 7 节中的方法转换为可用的 C/C++ 代码。正如文本所建议的一种方法,我有两个六状态枚举 - 我明白,鉴于选择的位模式,当且仅当以下TelnetQStateFlag情况下state,一个选项被认为是活动的state == QStateYes:
enum TelnetQStateFlag {
// +-----If set then we have a queued
// | request for the opposite state
// |+----If set then we want the opposite
// ||+---Must be only one set for option
// ||| to be active
QStateNo = 0x0, // 000 - No
QStateWantNo = 0x2, // 010 - Want No and we/he do …Run Code Online (Sandbox Code Playgroud) 我买了一个 VPS 并在其上构建了一个 shadowsocks 服务器。它运行良好大约 2 个月,突然无法工作,即我无法使用它来克服 GFW。所以我检查了服务器,重新安装了所有东西,检查了防火墙,但仍然无法解决问题。请帮我解决这个难题!
首先,我可以通过 ssh 连接到服务器。我使用的是 mac,服务器操作系统是 CentOS7。
我试图从 mac ping 服务器,它连接了。
PING vultr (108.61.215.163): 56 data bytes
64 bytes from 108.61.215.163: icmp_seq=0 ttl=50 time=485.473 ms
64 bytes from 108.61.215.163: icmp_seq=1 ttl=50 time=407.054 ms
64 bytes from 108.61.215.163: icmp_seq=2 ttl=50 time=429.089 ms
64 bytes from 108.61.215.163: icmp_seq=3 ttl=50 time=552.046 ms
^C
--- vultr ping statistics ---
5 packets transmitted, 4 packets received, 20.0% packet loss
round-trip min/avg/max/stddev = 407.054/468.416/552.046/56.118 ms
Run Code Online (Sandbox Code Playgroud)
然后我用我在 shadowsocks 中定义的特定端口 telnet 它,但它无法连接。 …
我正在用 Scapy 读取 Pcap 文件。如何识别在这个 pcap 文件中是否有使用 Telnet 协议的数据包?
我看到只有当这些端口中的一个是 23 时,Scapy 才能将“telnet”写入 dport/sport,但是如果我使用另一个端口进行 Telnet,我如何通过 Scapy 识别这一点?