Opening up a port with powershell

前端 未结 2 1964
独厮守ぢ
独厮守ぢ 2020-12-14 10:09

On Machine A I am running a port scanner. On Machine B I would like to open and close ports in an organized fashion. I am hoping to do all of this

2条回答
  •  醉话见心
    2020-12-14 11:00

    I needed something that would not only acknowledge that the port was open, but respond as well. So,here's my super-basic not-quite-telnet server.

    Clear-Host; $VerbosePreference="Continue"; $Port=23
    $EndPoint=[System.Net.IPEndPoint]::new([System.Net.IPAddress]::Parse(""),$Port)
    $Listener=[System.Net.Sockets.TcpListener]::new($EndPoint)
    
    $KeepListening=$true
    while ($KeepListening) {
      $Listener.Start()
      while (!$Listener.Pending) { Start-Sleep -Milliseconds 100 }
    
      $Client=$Listener.AcceptTcpClient()
      Write-Output "Incoming connection logged from $($Client.Client.RemoteEndPoint.Address):$($Client.Client.RemoteEndPoint.Port)"
    
      $Stream=$Client.GetStream()
      $Timer=10; $Ticks=0; $Continue=$true
      $Response=[System.Text.Encoding]::UTF8.GetBytes("I see you.  I will die in $($Timer.ToString()) seconds.`r`nHit  to add another 10 seconds.`r`nType q to quit now.`r`nType x to terminate listener.`r`n`r`n")
      $Stream.Write($Response,0,$Response.Length)
    
      $StartTimer=(Get-Date).Ticks
      while (($Timer -gt 0)  -and $Continue) {
        if ($Stream.DataAvailable) {
          $Buffer=$Stream.ReadByte()
          Write-Output "Received Data: $($Buffer.ToString())"
          if ($Buffer -eq 113) {
            $Continue=$false
            $Response=[System.Text.Encoding]::UTF8.GetBytes("`r`nI am terminating this session.  Bye!`r`n")
          }
          elseif ($Buffer -eq 32) {
            $Timer+=10
            $Response=[System.Text.Encoding]::UTF8.GetBytes("`r`nAdding another 10 seconds.`r`nI will die in $($Timer.ToString()) seconds.`r`n")
          }
          elseif ($Buffer -eq 120) {
            $Continue=$false
            $KeepListening=$false
            $Response=[System.Text.Encoding]::UTF8.GetBytes("`r`nI am terminating the listener.  :-(`r`n")
          }
          else { $Response=[System.Text.Encoding]::UTF8.GetBytes("`r`nI see you.  I will die in $($Timer.ToString()) seconds.`r`nHit  to add another 10 seconds.`r`nType q to quit this session.`r`nType x to terminate listener.`r`n`r`n") }
    
          $Stream.Write($Response,0,$Response.Length)
        }
        $EndTimer=(Get-Date).Ticks
        $Ticks=$EndTimer-$StartTimer
        if ($Ticks -gt 10000000) { $Timer--; $StartTimer=(Get-Date).Ticks }
      }
    
      $Client.Close()
    }
    $Listener.Stop()
    

提交回复
热议问题