IOException, брошенное NetworkStream.Read (), связанное с экземпляром netcat после короткого периода бездействия? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть объект NetworkStream, который подключен к удаленному экземпляру netcat. Все работает, пока я печатаю на клавиатуре и данные передаются между хостами.

$serverStream.Read($bytes, 0, $bytes.Length))

Однако после ~ 60 секунд бездействия я получаю ошибку ниже (IOException) в Read(). Чтение документации говорит мне, что IOException выбрасывается, когда сокет закрыт.

Я использовал netcat много и никогда не испытывал, что это отключает сеансы. Итак, проблема связана с NetworkStream, я полагаю?

Как я могу помешать $serverStream.Read() вызвать исключение и вместо этого просто подождать, пока данные не станут доступны (сохраняя сеанс без изменений)?

NetworkStream

https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.networkstream.read?view=netframework-4.8

Exception calling "Read" with "3" argument(s): "Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or establishe
d connection failed because connected host has failed to respond."
At C:\Users\bd6164\Desktop\phishing_revsh.ps1:31 char:9
+ while (($i = $serverStream.Read($bytes, 0, $bytes.Length)) -ne 0) {
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IOException

1 Ответ

1 голос
/ 30 апреля 2019

Netcat

Вы уверены, что не установили тайм-аут?

NetworkStream

Вы можете установитьвремя ожидания для сетевого потока с этой строкой:

networkStream.ReadTimeout = миллисекунды ;


Может быть, это поможет вам:

https://unix.stackexchange.com/questions/424125/ncat-command-gives-idle-timeout-expired-on-using-option-i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...