我被黑客离开 PLINK 中的源代码以使其与一致地兼容。

如果你不知道,齐声是一个文件同步工具,它运行的“SSH”命令连接到远程服务器,但没有ssh.exe的窗口;有砰砰,这是非常接近,但不够紧密(它不表现得像异口同声地希望它),所以人们通常使包装在其周围,的像这样的

的问题之一是,异口同声地预计,密码提示打印到标准错误(但砰砰把它打印到stdout,并导致齐声相混淆),所以我想,好吧,应该是很简单的,破解我的直通砰砰的代码并使其打印提示到标准输出。所以我砍死我的方式通过,并做到了。

接下来的问题:我不能响应该提示!!不管是什么I型,它没有任何效果。

用于获取输入的代码大致是这样的:

hin = GetStdHandle(STD_INPUT_HANDLE);
....
r = ReadFile(hin, .....);

我不知道它为什么做这样,但我不是在设计的命令行工具的Windows方面的专家,所以我知道什么!但我想的东西是在建立输入处理丢失。

我看着为上述包装工具中的源代码和我看到这一点: hconin=CreateFile("CONIN$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0)

和我尝试(只是为了赫克)

hin=CreateFile("CONIN$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
....
r = ReadFile( hin ...... )

和令人惊讶它的作品!我现在可以响应提示!

这是为什么?什么是 “CONIN $”?为什么是从STD_INPUT_HANDLE不同?

我可以排序的“猜测”那FILE_SHARE_READOPEN_EXISTING在此发挥作用(因为SSH正在从另一个进程中运行),但我想知道这是怎么回事,并确保该代码没有按”吨有一些有害的副作用或安全漏洞或什么可怕的那样!

有帮助吗?

解决方案

CONIN$是控制台的输入装置。通常情况下,标准输入是一个开放的文件句柄到这一点,但如果标准输入重定向出于某种原因,然后使用CONIN$将让你得到访问控制台尽管重定向。 参考。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top