国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - PowerShell - PowerShell小技巧之發送TCP請求

PowerShell小技巧之發送TCP請求

2020-06-26 15:05PowerShell教程網 PowerShell

這篇文章主要介紹了使用PowerShell發送TCP請求的小技巧,并把代碼分享給大家,有需要的朋友可以參考下,其實可以擴展出很多方面的應用,大家自由發揮吧

很多時候我們需要通過Socket發送特定的TCP請求給服務器的特定端口來實現探測服務器的指定端口所開啟的服務。很多語言都有相應的方法實現上述需求,當然,PowerShell也不例外,比如我們要發送一個簡單的http請求到指定的web服務器:
GET / HTTP/1.1
Host:cn.bing.com

這里我們想請求微軟必應的中文首頁,如果需要通過PowerShell向cn.bing.com服務器發送get請求,就需要創建一個System.Net.Sockets.TcpClient對象,向指定的服務器和端口發送請求。

具體代碼如下:

 

復制代碼 代碼如下:

        =====文件名:Send-TcpRequest.ps1=====
########################################
# Send-TcpRequest.ps1
## Send a TCP request to a remote computer, and return the response.
## If you do not supply input to this script (via either the pipeline, or the
## -InputObject parameter,) the script operates in interactive mode.
##
## Example:
##
## $http = @"
## GET / HTTP/1.1
## Host:cn.bing.com 
## `n`n
## "@
##
## $http | .\Send-TcpRequest cn.bing.com  80
########################################
param(
        [string] $remoteHost = "localhost",
        [int] $port = 80,
        [switch] $UseSSL,
        [string] $inputObject,
        [int] $commandDelay = 100
     )

 

[string] $output = ""

## Store the input into an array that we can scan over. If there was no input,
## then we will be in interactive mode.
$currentInput = $inputObject
if(-not $currentInput)
{
    $SCRIPT:currentInput = @($input)
}
$scriptedMode = [bool] $currentInput

function Main
{
    ## Open the socket, and connect to the computer on the specified port
    if(-not $scriptedMode)
    {
        write-host "Connecting to $remoteHost on port $port"
    }

    trap { Write-Error "Could not connect to remote computer: $_"; exit }
    $socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)

    if(-not $scriptedMode)
    {
        write-host "Connected. Press ^D followed by [ENTER] to exit.`n"
    }

    $stream = $socket.GetStream()

    if($UseSSL)
    {
        $sslStream = New-Object System.Net.Security.SslStream $stream,$false
        $sslStream.AuthenticateAsClient($remoteHost)
        $stream = $sslStream
    }

    $writer = new-object System.IO.StreamWriter $stream

    while($true)
    {
        ## Receive the output that has buffered so far
        $SCRIPT:output += GetOutput

        ## If we're in scripted mode, send the commands,
        ## receive the output, and exit.
        if($scriptedMode)
        {
            foreach($line in $currentInput)
            {
                $writer.WriteLine($line)
                $writer.Flush()
                Start-Sleep -m $commandDelay
                $SCRIPT:output += GetOutput
            }

            break
        }
        ## If we're in interactive mode, write the buffered
        ## output, and respond to input.
        else
        {
            if($output)
            {
                foreach($line in $output.Split("`n"))
                {
                    write-host $line
                }
                $SCRIPT:output = ""
            }

            ## Read the user's command, quitting if they hit ^D
            $command = read-host
            if($command -eq ([char] 4)) { break; }

            ## Otherwise, Write their command to the remote host
            $writer.WriteLine($command)
            $writer.Flush()
        }
    }

    ## Close the streams
    $writer.Close()
    $stream.Close()

    ## If we're in scripted mode, return the output
    if($scriptedMode)
    {
        $output
    }
}

## Read output from a remote host
function GetOutput
{
    ## Create a buffer to receive the response
    $buffer = new-object System.Byte[] 1024
    $encoding = new-object System.Text.AsciiEncoding

    $outputBuffer = ""
    $foundMore = $false

    ## Read all the data available from the stream, writing it to the
    ## output buffer when done.
    do
    {
        ## Allow data to buffer for a bit
        start-sleep -m 1000

        ## Read what data is available
        $foundmore = $false
        $stream.ReadTimeout = 1000

        do
        {
            try
            {
                $read = $stream.Read($buffer, 0, 1024)

                if($read -gt 0)
                {
                    $foundmore = $true
                    $outputBuffer += ($encoding.GetString($buffer, 0, $read))
                }
            } catch { $foundMore = $false; $read = 0 }
        } while($read -gt 0)
    } while($foundmore)

    $outputBuffer
}
. Main
該腳本使用方法如下:
$http = @"

GET / HTTP/1.1
Host:cn.bing.com
`n`n
"@
$http | .\Send-TcpRequest cn.bing.com 80

 

執行效果如圖所示:

PowerShell小技巧之發送TCP請求

需要說明的是,由于頁面返回的內容太長了,這里至少是將返回的內容緩存在一個變量里,并只輸出了變量的頭10行。
有了這個腳本,我們就可以向指定的web服務器發送特定的請求,來實現模擬登陸和操作的功能了。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一级中文字幕 | 日本在线视频一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 国产日韩一区 | 高清一区二区三区视频 | 日韩欧美综合 | 久久av网站| 久久久毛片 | 精品久久久中文字幕 | 成人在线网站 | 天天操一操 | 欧美人成在线视频 | 国产精品美女久久久久久久久久久 | 婷婷激情久久 | 日韩欧美在线免费观看 | 中文字幕一区二区三区在线视频 | 北条麻妃一区二区三区在线观看 | 精品久久久久久久久久久久 | 中日韩午夜理伦电影免费 | 亚洲综合日韩欧美 | 欧美成人a | 免费在线亚洲 | 欧美一区二区三区在线观看视频 | 久久久成人精品 | 日韩精品一区二区三区在线 | 91夜夜操 | 久久久久久久久久久国产 | 国产一区二 | 久久久久久久国产 | 日韩在线精品 | 亚洲国产区| 欧美成年黄网站色视频 | 中文字幕在线免费 | 欧美成人一级 | 色a在线 | 色av中文字幕 | 免费的黄色网 | 天天舔日日干 | 香蕉久久精品视频 | 国产视频一区二区视频 | 中文字幕在线三区 |