最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PowerShell小技巧之獲取TCP響應(yīng)(類Telnet)

 更新時間:2014年10月12日 14:05:56   投稿:hebedich  
這篇文章主要介紹了使用PowerShell獲取TCP響應(yīng)(類Telnet)的小技巧,需要的朋友可以參考下

通常情況下,為了檢測指定的TCP端口是否存活,我們都是通過telnet指定的端口看是否有響應(yīng)來確定,然而默認(rèn)情況下win8以后的系統(tǒng)默認(rèn)是不安裝telnet的。設(shè)想一下如果你黑進(jìn)了一個服務(wù)器,上面沒裝telnet,但是為了進(jìn)一步滲透進(jìn)內(nèi)網(wǎng),需要探測內(nèi)部服務(wù)器特定端口是否打開,同時你還不愿意安裝telnet,擔(dān)心引起管理員注意。那么好吧,在這個情況下你需要我的這個腳本。由于它是原生態(tài)的PowerShell語句完成,木有telnet你也照樣能檢測TCP端口的情況了。

下面首先上代碼,后面進(jìn)行講解:

復(fù)制代碼 代碼如下:

        =====文件名:Get-TCPResponse.ps1=====
Function Get-TCPResponse {
<# Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
        .SYNOPSIS
            Tests TCP port of remote or local system and returns a response header
            if applicable
        .DESCRIPTION
            Tests TCP port of remote or local system and returns a response header
            if applicable
            If server has no default response, then Response property will be NULL
        .PARAMETER Computername
            Local or remote system to test connection
        .PARAMETER Port
            TCP Port to connect to
        .PARAMETER TCPTimeout
            Time until connection should abort
        .EXAMPLE
        Get-TCPResponse -Computername pop.126.com -Port 110

        Computername : pop.126.com
        Port         : 110
        IsOpen       : True
        Response     : +OK Welcome to coremail Mail Pop3 Server (126coms[75c606d72bf436dfbce6.....])

        Description
        -----------
        Checks port 110 of an mail server and displays header response.
    #>
    [OutputType('Net.TCPResponse')]
    [cmdletbinding()]
    Param (
        [parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
        [Alias('__Server','IPAddress','IP','domain')]
        [string[]]$Computername = $env:Computername,
        [int[]]$Port = 25,
        [int]$TCPTimeout = 1000
    )
    Process {
        ForEach ($Computer in $Computername) {
            ForEach ($_port in $Port) {
                $stringBuilder = New-Object Text.StringBuilder
                $tcpClient = New-Object System.Net.Sockets.TCPClient
                $connect = $tcpClient.BeginConnect($Computer,$_port,$null,$null)
                $wait = $connect.AsyncWaitHandle.WaitOne($TCPtimeout,$false)
                If (-NOT $wait) {
                    $object = [pscustomobject] @{
                        Computername = $Computer
                        Port = $_Port
                        IsOpen = $False
                        Response = $Null
                    }
                } Else {
                    While ($True) {
                        #Let buffer
                        Start-Sleep -Milliseconds 1000
                        Write-Verbose "Bytes available: $($tcpClient.Available)"
                        If ([int64]$tcpClient.Available -gt 0) {
                            $stream = $TcpClient.GetStream()
                            $bindResponseBuffer = New-Object Byte[] -ArgumentList $tcpClient.Available
                            [Int]$response = $stream.Read($bindResponseBuffer, 0, $bindResponseBuffer.count)
                            $Null = $stringBuilder.Append(($bindResponseBuffer | ForEach {[char][int]$_}) -join '')
                        } Else {
                            Break
                        }
                    }
                    $object = [pscustomobject] @{
                        Computername = $Computer
                        Port = $_Port
                        IsOpen = $True
                        Response = $stringBuilder.Tostring()
                    }
                }
                $object.pstypenames.insert(0,'Net.TCPResponse')
                Write-Output $object
                If ($Stream) {
                    $stream.Close()
                    $stream.Dispose()
                }
                $tcpClient.Close()
                $tcpClient.Dispose()
            }
        }
    }
}

首先創(chuàng)建一個System.Net.Sockets.TCPClient對象,去連接指定的域名和端口,瞬間斷開的那是服務(wù)器沒開那個端口,直接被拒絕了,如果沒拒絕,那就等著服務(wù)器端給你響應(yīng),然后讀取字節(jié)流拼接起來進(jìn)行解析。
最后需要強(qiáng)調(diào)的是需要對打開的流和TCP連接進(jìn)行關(guān)閉,以便釋放資源
調(diào)用方法如下:

復(fù)制代碼 代碼如下:

Get-TCPResponse -Computername pop.126.com -Port 110
 

再對比一下telnet的結(jié)果

結(jié)果是一樣的,以后沒有telnet也難不住大家了,have fun!^_^

相關(guān)文章

最新評論

缙云县| 广河县| 禄丰县| 岑溪市| 台江县| 虹口区| 突泉县| 通渭县| 灌云县| 临安市| 灵台县| 吉安县| 新巴尔虎右旗| 宜兰市| 博乐市| 南乐县| 靖远县| 大田县| 桐柏县| 呼玛县| 沂源县| 兴宁市| 内乡县| 德昌县| 志丹县| 惠州市| 松溪县| 芜湖县| 邵武市| 舟山市| 屏东县| 赫章县| 扎囊县| 诏安县| 平凉市| 绥滨县| 仲巴县| 淳安县| 芦山县| 砀山县| 伽师县|