<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    GFI LanGuard 使用腳本

    Visual Basic 腳本 (VBScript)

    本主題介紹有關 VBScript以及如何使用 GFI LanGuard 腳本調試程序創建腳本的信息。 要獲取 GFI LanGuard 使用的 Visual Basic 編程語言的完整語言參考,請訪問以下地址:http://go.gfi.com/?pageid=lan_vbs

    VBScript 重要注意事項

    • 在創建的每個腳本中,必須存在名稱為Main函數。GFI LanGuard 在執行任何腳本時都將查找此函數,并從此函數開始。
    • 針對腳本引擎的 Main 函數的返回值是布爾型(true 或 false)。 返回值通過將結果值分配給與函數同名的變量進行指定(例如,如果函數名為 MyFunction,則返回值將指定為 MyFunction = true)。 此返回值通常在函數末尾進行指定。

    示例

    函數 Main
    
    '顯示掃描器活動窗口的一些文本
    
    echo "已成功運行腳本"
    
    '返回結果
    
    Main = true
    
    End 函數

    GFI LanGuard 支持的 VBScript 函數

    GFI LanGuard 支持的所有 VBScript 函數和腳本處理方法。 有關更多信息,請參考以下 VBScript 資源:

    常見錯誤和缺陷

    在 VBScript 中,存在兩種類型的變量:

    變量類型 描述
    簡單 變量是整型、布爾型和字符串等實際類型。
    對象 是由自動化對象接口公開其功能的復雜項目。

    為其分配值之前,必須將自動化對象類型聲明為對象。

    重要
    強烈建議您將值分配給所有聲明的變量和/或對象。

    示例

    函數 Main
    
    '聲明要使用的對象
    
    Dim nameStr As String
    
    '將值分配給變量
    
    nameStr = "This is a test assignment of text"
    
    '在掃描程序活動窗口中顯示分配的結果
    
    echo nameStr
    
    '返回結果
    
    Main = true
    
    End 函數

    以下是更高級的腳本示例,它將列出目標計算機上安裝了哪些服務 (localhost = 127.0.0.1)。 在腳本調試程序中復制粘貼以下文本并運行 (F5)。 在調試窗口中,您將看到本地計算機上已安裝服務的列表。

    函數 main
    
    '聲明我們將需要使用的對象
    
    Dim wmi As Object
    
    Dim objswbemobject As Object
    
    '聲明我們需要的其他變量
    
    Dim strComputer As String
    
    Dim cr As String
    
    strComputer = "127.0.0.1"
    
    '回車符
    
    cr = Chr(13) + Chr(10)
    
    '與 wmi 對象相連
    
    Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    '檢查連接是否成功
    
    If wmi is Nothing Then echo ("error1")
    
    '返回 wmi 的服務實例
    
    Set wmiinst=wmi.instancesof("Win32_Service")
    
    '檢查實例是否可用
    
    If wmiinst is Nothing Then echo ("error2")
    
    '對每個實例進行 true 循環
    
    For Each objswbemobject In wmiinst
    
    echo("Service Name= ")
    
    '顯示服務
    
    echo(objswbemobject.DisplayName+cr)
    
    下一步
    
    End 函數

    如果您嘗試使用自動化對象而未聲明,該腳本將在編譯時失敗。 例如同一條代碼,但缺少>對象變量 wmi 的完全聲明。 嘗試運行該腳本時將顯示錯誤消息,同時還將給出發生錯誤
    的腳本行的清除指示:

    函數 main
    Dim wmi 'WARNING : missing “as object”
    Dim objswbemobject As Object
    …
    …
    …
    End 函數

    提示和技巧

    要在掃描程序活動窗口中(掃描程序工具的底部窗口或腳本調試程序的左下角窗口)顯示過程信息,請使用 echo 命令。

    示例
    函數 Main
    
    '顯示掃描器活動窗口的一些文本
    
    echo "已成功運行腳本"
    
    '返回結果
    
    Main = true
    
    End 函數

    在 GFI LanGuard 腳本調試程序中開發腳本

    本節包含有關使用 GFI LanGuard 腳本調試程序創建 VBScript 的信息。 有關更多信息,請參閱:

    創建腳本

    在本節中將創建腳本。 該腳本將檢查本地計算機上是否運行有信使服務。 該腳本使用腳本調試程序開發,演示了部分功能。

    示例

    函數 main
    
    '聲明我們將需要使用的對象
    
    Dim wmi As Object
    
    Dim objswbemobject As Object
    
    '聲明我們需要的其他變量
    
    Dim strComputer As String
    
    Dim cr As String
    
    strComputer = "127.0.0.1"
    
    '回車符
    
    cr = Chr(13) + Chr(10)
    
    '與 wmi 對象相連
    
    Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    '檢查連接是否成功
    
    If wmi is Nothing Then echo ("error1")
    
    '返回 wmi 的服務實例
    
    Set wmiinst=wmi.instancesof("Win32_Service")
    
    '檢查實例是否可用
    
    If wmiinst is Nothing Then echo ("error2")
    
    '對每個實例進行 true 循環
    
    For Each objswbemobject In wmiinst
    
    If objswbemobject.DisplayName = "Messenger" Then
    
    echo("Service Name= ")
    
    '顯示服務
    
    echo(objswbemobject.DisplayName+cr)
    
    echo("Service Status= ")
    
    '顯示狀態
    
    echo(objswbemobject.State+cr)
    
    If objswbemobject.State = "Running" Then main = true
    
    If objswbemobject.State = "Running" Then main = true
    
    結束條件
    
    下一步
    
    End 函數

    運行腳本

    要運行腳本,請按 F5 或單擊“調試”>“運行”

    調試斷點- 步入功能

    腳本調試程序可暫停腳本中特定位置處的執行。 例如,如果變量包含服務的顯示名稱為“信使”,則可設置執行斷點。

    要在示例腳本中執行此操作,應轉至第 17 行 (“echo("Service Name= ")”),并將斷點置于“if”語句下(按 F9)。 在執行期間使用 F10 鍵(步入)逐行執行剩余代碼。

    監控變量中的值

    要監視變量中包含的值,您需要添加對該變量的監視。 如果想要監視變量的內容,應執行以下操作:

    1. 展開底部狀態部分。

    2. 右鍵單擊變量下的頂部自由行。

    3. 選擇添加監視,并鍵入想要監視的變量的名稱。 重復該步驟,對更多變量添加監視。

    4. 要刪除監視,請右鍵單擊該監視,并選擇刪除監視

    根據其他用戶會話進行調試

    要測試替代憑據下的腳本:

    1. 啟動GFI LanGuard 腳本調試程序。

    2. 在使用下拉列表中,選擇替代憑據

    3. 在提供的文本框中鍵入用戶名和密碼。

    發送參數到腳本

    GFI LanGuard 掃描程序工具將參數傳遞給執行中的腳本。 例如,掃描漏洞的目標計算機的計算機名稱和計算機 IP。 為能夠調試腳本,您可能想要測試各種類型的參數值。 您可以從“選項”>“參數”中指定這些參數的替代值。

    為訪問腳本中的這些參數,您需要使用名稱為 GetParameter 的特殊 GFI LanGuard 函數,并將所需的參數的名稱傳遞給它,例如:

    函數 main
    
    '聲明我們將需要使用的對象
    
    Dim wmi As Object
    
    Dim objswbemobject As Object
    
    '聲明我們需要的其他變量
    
    Dim strComputer As String
    
    Dim cr As String
    
    strComputer = "127.0.0.1"
    
    '回車符
    
    cr = Chr(13) + Chr(10)
    
    '與 wmi 對象相連
    
    Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    '檢查連接是否成功
    
    If wmi is Nothing Then echo ("error1")
    
    '返回 wmi 的服務實例
    
    Set wmiinst=wmi.instancesof("Win32_Service")
    
    '檢查實例是否可用
    
    If wmiinst is Nothing Then echo ("error2")
    
    '對每個實例進行 true 循環
    
    For Each objswbemobject In wmiinst
    
    echo("Service Name= ")
    
    '顯示服務
    
    echo(objswbemobject.DisplayName+cr)
    
    下一步
    
    End 函數

    添加新的基于腳本的漏洞檢查到掃描程序

    以下示例介紹如何創建新漏洞檢查,并將運行腳本檢查新漏洞。 該腳本在“掃描程序活動”窗口中顯示腳本運行成功,將指示 GFI LanGuard 已檢測到漏洞,應報告給管理員。

    要達到此目的,必須:

    步驟 1: 創建檢查漏洞的腳本

    1. 從開始 > 程序 > **GFI LanGuard > GFI LanGuard 腳本調試程序**,啟動 GFI LanGuard 腳本調試程序。

    2. 單擊文件 > 新建

    3. 將以下文本粘貼到調試程序中:

    函數 Main

    echo “已成功運行腳本”

    Main = true

    End 函數

    4. 將文件保存到您選擇的目錄中,例如:c:\myscript.vbs

    步驟 2: 新建運行腳本的漏洞

    1. 從*開始 > 程序 > GFI LanGuard > GFI LanGuard *啟動 GFI LanGuard。

    2. 單擊主選項按鈕,然后選擇“配置”>“掃描配置文件編輯器”。 或者按 CTRL + P 打開掃描配置文件編輯器。

    3. 單擊常規任務中的新建掃描配置文件… 或選擇要編輯的現有掃描配置文件。

    4. 鍵入配置文件名稱,也可鍵入說明。

    5.(可選)選擇從現有配置文件復制所有設置,然后從配置文件下拉菜單中選擇要復制的現有掃描配置文件。

    6. 單擊確定


    新掃描配置文件將被添加到左側窗格的配置文件部分下。

    7. 從右側窗格中選擇新掃描配置文件,單擊添加…,這將打開“添加”漏洞對話框。

    8. 在常規選項卡中,鍵入常規詳細信息,例如漏洞的名稱、類型等。

    9. 單擊“條件”選項卡 >“添加”

    10. 將檢查類型設置為“獨立檢查”>“VB 腳本測試”。 單擊下一步

    11. 指定腳本的位置,例如: <ProductDataDir>\Scripts\newvulnerability.vbs。 單擊下一步

    12. 選擇想對其設置條件的屬性、對應的運算符和腳本執行的值。


    每個腳本為您提供描述部分支持的值。

    13. 單擊完成

    將添加漏洞檢查,并會將其包含到針對下一次計算機掃描所檢查的漏洞列表中。

    要進行測試,只需掃描您的本地主機 (127.0.0.1),在掃描結果的漏洞節點雜項部分下,應可以看到漏洞警告。

    Python 腳本處理

    本主題提供了創建和運行 Python 腳本所需的信息。 從 9.0 版開始,GFI LanGuard 支持基于 Python 的漏洞檢查。 獨立檢查類型下提供了該類型的檢查。

    什么是 Python 腳本語言?

    Python 是由 Guido van Rossum 于 1990 年創建的解釋性編程語言,Python 整體上是動態類型的,使用自動化的內存管理。 需要記住的重要事項是,Python 源代碼使用自身的縮進來指示數據塊的運行,而不是使用標點符號或關鍵字。 Python 中階乘函數的示例:

    def factorial(x):
    
    if x == 0:
    
    return 1
    
    else:
    
    return x * factorial(x-1)

    使用 Python 腳本測試創建新的漏洞檢查

    步驟 1: 創建腳本

    要創建 Python 腳本測試,必須:
    1. 從開始 > 程序 > **GFI LanGuard > GFI LanGuard 腳本調試程序**,啟動 GFI LanGuard 腳本調試程序。

    2. 單擊文件 > 新建

    3. 在腳本調試程序中復制和粘貼以下腳本:

    #PythonSuccessfullCheck.py
    
    """
    
    有關詳細信息,請參閱文件 <ProductDataDir>\Scripts\lpy.py。
    
    """
    
    def main():
    
    """返回值:
    
    * 0 - 假,出錯
    
    * 1 - 真,成功"""
    
    result = 0
    
    #您的代碼位于此處...
    
    result = 1
    
    return(result)

    4. 將腳本保存到您選擇的位置。

    步驟 2: 創建新的漏洞檢查

    1. 從*開始 > 程序 > GFI LanGuard > GFI LanGuard *啟動 GFI LanGuard。

    2. 單擊主選項按鈕,然后選擇“配置”>“掃描配置文件編輯器”。 或者按 CTRL + P 打開掃描配置文件編輯器。

    3. 單擊常規任務中的新建掃描配置文件… 或選擇要編輯的現有掃描配置文件。

    4. 從“掃描配置文件編輯器”中單擊“漏洞評估選項”>“漏洞”

    5. 在漏洞列表中,展開漏洞,然后選擇雜項。 單擊添加。 添加打開“添加”漏洞對話框。

    6. 在常規選項卡中鍵入常規信息,例如新漏洞的名稱、類型和說明。

    7. 單擊“條件”選項卡 >“添加”

    8. 選擇 “獨立檢查”>“獨立 Python 腳本測試”。 單擊下一步

    9. 指定腳本的位置(示例: <ProductDataDir>\Scripts\newvulnerability.vbs)。 (加載在 步驟 1 中創建的腳本: 創建檢查漏洞的腳本中創建的腳本)。

    10. 從下拉菜單選擇必須匹配的對象數,以設定返回 TRUE 的條件。單擊下一步

    11. 在編輯框中,指定發現漏洞時 Python 腳本返回的值。


    每個腳本為您提供描述部分支持的值。

    12. 單擊完成

    Python 腳本提供應用程序編程接口 (API)

    GFI LanGuard 嵌入了大部分默認 Python 實施(又稱 CPython,其地址為:http://go.gfi.com/?pageid=pythorg)。 目前我們使用 Python 2.5 版。因此,大多數現有 Python 腳本使用的 GFI LanGuard 中都有微小改動。 大多數重要的修改是腳本必須具有 main() 函數,該函數返回 10

    安全掃描程序模塊(漏洞檢查和安全應用程序信息)使用的所有 Python 腳本都可訪問以下全局變量:

    • ComputerIP
    • ComputerName
    • LNSSDir
    • localProgramFilesPath
    • localWindowsPath
    • localSystem32Path
    • 用戶
    • 密碼

    示例

    ComputerIP = '127.0.0.1'
    
    ComputerName = 'WXPSandbox"
    
    LNSSDir = 'C:\\Program Files\\GFI\\LanGuard\\'
    
    localProgramFilesPath = 'C:\\Program Files'
    
    localWindowsPath = 'C:\\WINDOWS'
    
    localSystem32Path = 'C:\\WINDOWS\\system32'
    
    User = ''
    
    Password = ''

    使用這些全局變量,以訪問掃描計算機的名稱或 IP 地址、需要連接掃描計算機的憑據。

    GFI LanGuard 全局函數可用于 Python 腳本,并可作為 GlobalFunctions 對象的方法。 即:

    
    # 使用全局函數。
    
    def main():
    
    """返回值:
    
    * 0 - 假,出錯
    
    * 1 - 真,成功"""
    
    result = 0
    
    # 顯示文本。
    
    GlobalFunctions.echo("Hello!")
    
    # 將指定文本添加到日志文件。
    
    GlobalFunctions.writetolog("已啟動 Python 腳本。")
    
    # 將指定文本添加到狀態欄。
    
    GlobalFunctions.statusbar("Hello StatusBar!")
    
    # 將名稱類似于第二個參數的子節點添加到當前漏洞。
    
    GlobalFunctions.addlistitem("", "漏洞描述。")
    
    # 更改當前漏洞的說明。
    
    GlobalFunctions.setdescription("已安裝的調制解調器列表")
    
    GlobalFunctions.writetolog("已完成 Python 腳本。")
    
    result = 1
    
    return(result)
    

    GFI LanGuard 也提供了 Python 腳本的 COM 客戶端 API,形式為 pywin32。


    Python 腳本可通過win32com.client使用GFI LanGuard COM 腳本庫。 有關更多信息,請參閱 腳本處理對象。

    示例

    # 使用 LanGuard COM 對象GlbObj.Socket 執行 DNS 查詢。
    
    def main():
    
    """返回值:
    
    * 0 - 假,出錯
    
    * 1 - 真,成功"""
    
    result = 0
    
    導入 win32com.client
    
    socket = win32com.client.Dispatch("GlbObj.Socket.1")
    
    print(socket.DnsLookup('gfi.com'))
    
    result = 1
    
    return(result)

    Pywin32

    # Hello world for pywin32.
    
    def main():
    
    """返回值:
    
    * 0 - 假,出錯
    
    * 1 - 真,成功"""
    
    result = 0
    
    導入 win32com.client
    
    strComputer = "."
    
    objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
    
    objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
    
    colItems = objSWbemServices.ExecQuery("Select * from Win32_PhysicalMemory")
    
    colItem 中的 objItem:
    
    print("Capacity: %s\n" % objItem.Capacity)
    
    result = 1
    
    return(result)

    調試 Python 腳本

    GFI LanGuard 腳本調試程序不支持 Python 腳本的調試。

    任何 Python IDE、調試程序或針對 Windows 使用當前受支持的 Python 2.5 和 pywin32 分布運行 Python 腳本的命令行解釋程序都有助于編寫正確的 GFI LanGuard Python 腳本。

    一些可用于編輯和調試 Python 腳本的 Python IDE 或解釋程序如下所示:

    • PythonWin
    • Winpdb
    • SPE IDE - Python 編輯器
    • 默認情況下,Python 分布隨附有 IDLE 和 Python 解釋程序。

    通過使用 GFI LanGuard 腳本文件夾中提供的 lpy.py 文件運行腳本,Python 腳本可在類似于 GFI LanGuard 的環境中運行和調試: C:\ProgramData\GFI\LanGuard11\Scripts

    示例

    <Python25Folder>\python.exe "<ProductDataDir>\Scripts\lpy.py" <NameOfPythonScriptFileToTest>

    Python 庫和代碼的可重用性

    Python 使您可以創建常用于腳本函數的庫。 這些庫包含了常見的函數,可被很多腳本多次使用。 本章節包括:

    創建庫

    創建定義 Python 函數或對象的 Python 腳本文件。 將文件復制到 < LanGuard main directory>\Library,例如: C:\Program Files\GFI\LanGuard 11 Agent

    庫文件示例

    """
    
    Hello World Python library.
    
    將文件復制到 <LanGuard InstallDir>\Library。
    
    """
    
    def EchoString(text):
    
    """打印指定的文本。"""
    
    GlobalFunctions.echo(text)
    
    print(text)

    使用庫

    若要使用以前創建的 Python 庫,請使用標準 Python 導入機制導入該庫。

    使用以上的庫的示例

    """
    
    LibraryTester.py
    
    文件 EchoLibrary.py 必須位于 <LanGuard InstallDir>\Library。
    
    """
    
    def main():
    
    """返回值:
    
    * 0 - 假,出錯
    
    * 1 - 真,成功"""
    
    結果 = 0
    
    從 EchoLibrary 導入 EchoString
    
    EchoString("已成功運行漏洞檢查。")
    
    結果 = 1
    
    返回(結果)

    腳本處理對象

    本主題介紹關于 GFI LanGuard 腳本調試程序支持的不同函數和對象的信息,這可通過您的腳本找到。

    套接字對象

    套接字對象用于支持 TCP 服務器和 UDP 套接字之間的通信。 它支持可配置超時、DNS 查詢以及反向 DNS 查詢等各種功能。 套接字對象也可以處理發送和接收操作的不同數據類型。 它可以處理字符串和原始二進制數據。 使用常規字符串變量可處理字符串,使用字節數組可處理二進制數據。 接收函數(稱為 recv)也接受指示向其返回的數據類型的參數。 這使用戶能夠指定是否需要將其數據作為字符串或二進制接收。

    本節包含以下套接字對象的相關信息:

    OpenTcp

    OpenTcp 用于使用 TCP 建立與遠程服務器的連接。

    語法

    OpenTcp(ip, port)

    返回結果
    Socket 對象。
    示例
    此腳本顯示本地運行的 ftp 服務器的橫幅。 通過更改變量“ip”的值可使用任何 ftp 服務器:

    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim strResponse As String
    Ip = "127.0.0.1"
    Port = "21"
    Socket.SetTimeout 5000,5000
    Set SocketObject = Socket.OpenTcp(Ip,Port)
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    strResponse = SocketObject.Recv(1024)
    echo(strResponse)
    SocketObject.Close
    結束條件
    End 函數
    OpenUdp

    OpenUdp 用于使用 UDP 建立與遠程服務器的連接。

    語法

    OpenUdp()

    返回結果
    Socket 對象。
    示例
    該腳本與 IP 變量指定的 DNS 服務器相連接,并對 www.gfi.com 運行查詢,然后顯示結果:

    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim rawdata As Variant
    Dim Response As Variant
    Ip = "172.16.130.40"
    Port = "53"
    strRequest="www.gfi.com"
    rawdata = Array(0,3,1,0,0,1,0,0,0,0,0,0,3,&H77, &H77, &H77, &H03, &H67, &H66, &H69, &H03, &H63, &H6F,&H6D, 0,0,1,0,1)
    '^^^^^^^^^^
    '該部分是請求的套接字標頭,包括標志等信息
    '^^^^^^^^^^
    '這是請求本身 www.gfi.com,注意,“.”顯示為 &H03 而不是 &H2E
    '^^^^^^^^^^
    '這是數據包的結束標頭
    Set SocketObject = Socket.OpenUdp()
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    SocketObject.SendTo IP,port,rawdata
    Response = SocketObject.Recv(1024)
    For a = UBound(response)-3 To UBound(response)
    echo(Response(a))
    If a <> UBound(response) Then
    echo(".")
    End If
    下一個
    SocketObject.Close
    End If
    End 函數
    Close

    Close 用于釋放之前分配的套接字對象。

    語法

    Close

    返回結果
    不返回數據。
    示例
    此腳本顯示本地運行的 ftp 服務器的橫幅。 通過更改變量“ip”的值可使用任何 ftp 服務器:

    函數 Main
    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim strResponse As String
    Ip = "127.0.0.1"
    Port = "21"
    Socket.SetTimeout 5000,5000
    Set SocketObject = Socket.OpenTcp(Ip,Port)
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    strResponse = SocketObject.Recv(1024)
    echo(strResponse)
    SocketObject.Close
    結束條件
    End 函數
    Recv

    Recv 用于檢索套接字的數據(用于 TCP 和 UDP 傳輸)。

    語法

    Recv(SizeInBytes, [DataType])

    更多信息
    SizeInBytes 參數用于指定將返回多少緩沖區。 可選參數“DataType”可用于指定應返回何種格式的緩沖區。 如果未指定內容且已分析緩沖區,將相應地設置合適的 DataType。
    可能用于 DataType 參數的選項如下所示:
    0 – 將緩沖區作為字節數組返回(適用于原始數據)
    1 – 將緩沖區作為字符串返回(如果您知道緩沖區包含原始文本較為理想)
    2 – 將緩沖區作為字符串返回,將不可打印字符轉換為“.”。如果緩沖區是純文本和特殊字符之間的混合,而您僅需要純文本部分,則這將是您的理想選擇。
    返回結果
    字符串或字節數組。
    示例
    此腳本顯示本地運行的 ftp 服務器的橫幅。 通過更改變量“ip”的值可使用任何 ftp 服務器:

    函數 Main
    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim strResponse As String
    Ip = "127.0.0.1"
    Port = "21"
    Socket.SetTimeout 5000,5000
    Set SocketObject = Socket.OpenTcp(Ip,Port)
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    strResponse = SocketObject.Recv(1024)
    echo(strResponse)
    SocketObject.Close
    結束條件
    End 函數
    Send

    Send 用于將數據通過 TCP 連接發送到當前的開放套接字。

    語法

    Send (data, [SizeInBytes])

    返回結果
    發送字節的實際數量。
    更多信息
    Send 函數只能用于在 TCP 連接上打開的開放套接字對象。 要通過 UDP 連接發送數據,請參閱文檔中的 SendTo 函數。
    Send 函數接受可選參數 (SizeInBytes),該參數指定了發送的傳遞給數據字段的緩沖區的實際數量。 如果忽略此可選參數,則自動計算大小。
    示例
    該腳本顯示在本地運行的 Web 服務器的原始 html 中的默認頁面。 通過簡單地更改變量“ip”的值,該腳本可用于任何 Web 服務器:

    函數 Main
    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim req As String
    Dim strResponse As String
    Ip = "172.16.130.112"
    Port = "80"
    req = "GET / HTTP/1.0"
    '回車符和換行
    cr = Chr(13) + Chr(10)
    req = CStr(req +cr +cr)
    Socket.SetTimeout 5000,5000
    Set SocketObject = Socket.OpenTcp(Ip,Port)
    '檢查以確保對象成功返回
    If Not SocketObject is Nothing Then
    SocketObject.Send(CStr(req))
    strResponse = SocketObject.Recv(1024)
    While Len(CStr(strResponse)) <> 0
    echo(strResponse)
    StrResponse = SocketObject.Recv(1024)
    Wend
    echo(strResponse)
    End If
    End 函數
    SendTo

    SendTo 用于將數據通過 UDP 連接發送到當前的開放套接字。

    語法

    SendTo (ip, port, data, [SizeInBytes])

    返回結果
    發送的字節的實際數量。
    更多信息
    SendTo 函數只能與在 UDP 連接中打開的開放套接字對象配合使用,為能夠通過 TCP 連接發送數據,請檢查文檔中的 Send 函數。
    SendTo 函數接受可選參數 (SizeInBytes),該參數指定了發送的傳遞給數據字段的緩沖區的實際數量。 如果忽略此可選參數,則自動計算大小。
    示例
    該腳本與 IP 變量指定的 DNS 服務器相連接,并對 www.gfi.com 運行查詢,然后顯示結果:

    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim rawdata As Variant
    Dim Response As Variant
    Ip = "172.16.130.40"
    Port = "53"
    strRequest="www.gfi.com"
    rawdata = Array(0,3,1,0,0,1,0,0,0,0,0,0,3, &H77, &H77, &H77, &H03, &H67, &H66, &H69, &H03, &H63, &H6F,&H6D, 0,0,1,0,1)
    Set SocketObject = Socket.OpenUdp()
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    SocketObject.SendTo IP,port,rawdata
    Response = SocketObject.Recv(1024)
    For a = UBound(response)-3 To UBound(response)
    echo(Response(a))
    If a <> UBound(response) Then
    echo(".")
    End If
    下一個
    SocketObject.Close
    End If
    End 函數
    SetTimeout

    發送/接收數據的默認超時值為 2 秒。 SetTimeout 用于設置發送和接收數據的不同超時值。

    語法

    SetTimeout(SendTimeout, RecieveTimeout)

    返回結果
    不返回數據。
    更多信息
    SetTimeout 需要在設置將用于發送和接收的對象之前進行設置。 傳遞的超時參數以毫秒為單位。 如果傳遞 -1 作為其中一個值,將使用當前設置的值。
    示例
    此腳本顯示本地運行的 ftp 服務器的橫幅。 通過更改變量“ip”的值可使用任何 ftp 服務器:

    Dim SocketObject As Object
    Dim ip As String
    Dim port As String
    Dim strResponse As String
    Ip = "127.0.0.1"
    Port = "21"
    Socket.SetTimeout 5000,5000
    Set SocketObject = Socket.OpenTcp(Ip,Port)
    If Not SocketObject is Nothing Then
    '檢查以確保對象成功返回
    strResponse = SocketObject.Recv(1024)
    echo(strResponse)
    SocketObject.Close
    結束條件
    End 函數
    DnsLookup

    DnsLookup 用于將主機名解析為 IP 地址。 該功能主要用于在連接服務器時在不知道其 IP 的情況下使用。

    語法

    DnsLookup(hostname)

    返回結果
    字符串(IP 地址)。
    示例
    非常簡單的 dns 查找和反向查找:

    Dim SocketObject As Object
    Dim ServerName As String
    Dim IP As String
    Dim ResolvedName As String
    '回車符和換行
    cr = Chr(13) + Chr(10)
    ServerName = "whois.networksolutions.com"
    echo("Resolving"+cr)
    Socket.SetTimeout 5000,5000
    ip = socket.DnsLookup(ServerName)
    echo(ServerName + " resolves to the IP Address:"+cr )
    echo(ip +cr)
    ResolvedName = Socket.ReverseDnsLookup(ip)
    echo(cr)
    echo("IP Address "+ip+ " resolves to "+cr)
    echo(ResolvedName+cr)
    End 函數
    ReverseDnsLookup

    ReverseDnsLookup 用于將 IP 地址解析為主機名。

    語法

    ReverseDnsLookup(IP)

    返回結果
    包含返回的主機名的字符串。
    更多信息
    示例
    非常簡單的 dns 查找和反向查找:

    Dim SocketObject As Object
    Dim ServerName As String
    Dim IP As String
    Dim ResolvedName As String
    '回車符和換行
    cr = Chr(13) + Chr(10)
    ServerName = "whois.networksolutions.com"
    echo("Resolving"+cr)
    Socket.SetTimeout 5000,5000
    ip = socket.DnsLookup(ServerName)
    echo(ServerName + " resolves to the IP Address:"+cr )
    echo(ip +cr)
    ResolvedName = Socket.ReverseDnsLookup(ip)
    echo(cr)
    echo("IP Address "+ip+ " resolves to "+cr)
    echo(ResolvedName+cr)
    End 函數

    SNMP 對象

    SNMP 對象允許用戶連接到用于查詢和設置值的 SNMP。 該對象還允許枚舉對象標識符 (OID)。 SNMP 通常用于檢索服務或設備上的系統信息。 各種設備也具有 SNMP 服務器功能,因此使用該對象,您可以查詢這些設備的各種屬性,并減少這些設備的安全問題/弱點/不正確配置。

    本節包含有關以下 SNMP 對象的信息:

    Connect

    Connect 用于建立與遠程服務器的連接,并向其返回 SNMP 對象。

    語法

    Connect(ip, community_string)

    返回結果
    SNMP 對象。
    更多信息
    示例
    從安裝有 SNMP 服務器的計算機檢索 SysName 的簡單 SNMP 客戶端:

    Dim snmp1 As Object
    '回車符和換行
    cr = Chr(13) + Chr(10)
    Set snmp1 = SNMP.Connect("127.0.0.1", "public")
    'sysName 的 OID
    Val1 = "1.3.6.1.2.1.1.5.0"
    '系統對象的 OID
    root = "1.3.6.1.2.1.1."
    snmp1.Get Val1
    echo "Oid: '"+Val1 + "'"+cr
    echo "Value: '"+snmp1.Get(Val1)+"'"+cr
    snmp1.Close
    End 函數
    Get

    Get 用于檢索指定 OID 的對應字符串。

    語法

    Get (oid)

    返回結果
    字符串
    示例
    從安裝有 SNMP 服務器的計算機檢索 SysName 的簡單 SNMP 客戶端:

    Dim snmp1 As Object
    '回車符和換行
    cr = Chr(13) + Chr(10)
    Set snmp1 = SNMP.Connect("127.0.0.1", "public")
    'sysName 的 OID
    Val1 = "1.3.6.1.2.1.1.5.0"
    '系統對象的 OID
    root = "1.3.6.1.2.1.1."snmp1.Get Val1
    echo "Oid: '"+Val1 + "'"+cr
    echo "Value: '"+snmp1.Get(Val1)+"'"+cr
    snmp1.Close
    End 函數
    GetNext

    GetNext 用于檢索指定 OID 的下一個對應字符串。

    語法

    GetNext (oid)

    返回結果
    字符串
    示例
    從安裝有 SNMP 服務器的計算機檢索與系統對象相關的所有字符串的簡單 SNMP 客戶端。 原始信息,例如正常運行時間 OID 1.3.5.1.2.1.1.3.0 將顯示為數百秒:

    Dim snmp1 As Object
    '回車符和換行
    cr = Chr(13) + Chr(10)
    Set snmp1 = SNMP.Connect("127.0.0.1", "public")
    'sysName 的 OID
    Val1 = "1.3.6.1.2.1.1.1.0"
    '系統對象的 OID
    root = "1.3.6.1.2.1.1."
    'snmp1.Get Val1
    While Val1 <> ""'
    echo "Oid: '"+Val1 + "'"+cr
    echo "Value: '"+snmp1.Get(Val1)+"'"+cr
    Val1 = snmp1.GetNext(Val1)
    If InStr(Val1, root) <> 1 Then Val1 =""
    Wend
    snmp1.Close
    End 函數
    Set

    Set 用于設置指定 OID 的值。

    語法

    Set (oid, String)

    返回結果
    如果成功,則返回 true,否則返回 false。
    示例
    將安裝了 SNMP簡易網路管理通訊協定的英文首字母縮寫,一種用於監視網路裝置(例如路由器、集線器和交換機)的技術。 服務器的計算機的 sysLocation 設置為“Malta”的簡單 SNMP 客戶端。 注意:默認情況下,該腳本總是失敗,因為一般情況下,公共社區將設置為只讀:

    Dim snmp1 As Object
    '回車符和換行
    cr = Chr(13) + Chr(10)
    Set snmp1 = SNMP.Connect("127.0.0.1", "public")
    'sysName 的 OID
    Val1 = "1.3.6.1.2.1.1.6.0"
    root = "1.3.6.1.2.1.1."'OID of the systems Object
    If snmp1.Set(Val1, "Malta") = true Then
    echo("成功設置值")
    Else
    echo("未能設置值")
    End If
    snmp1.Close
    End 函數
    Close

    Close 用于關閉打開的 SNMP 會話。

    語法

    Close

    返回結果
    不返回數據。
    示例
    從安裝有 SNMP 服務器的計算機檢索 SysName 的簡單 SNMP 客戶端:

    Dim snmp1 As Object
    '回車符和換行
    cr = Chr(13) + Chr(10)
    Set snmp1 = SNMP.Connect("127.0.0.1", "public")
    'sysName 的 OID
    Val1 = "1.3.6.1.2.1.1.5.0"
    '系統對象的 OID
    root = "1.3.6.1.2.1.1."
    snmp1.Get Val1
    echo "Oid: '"+Val1 + "'"+cr
    echo "Value: '"+snmp1.Get(Val1)+"'"+cr
    snmp1.Close
    End 函數

    文件對象

    文件對象使用戶能夠打開本地文件或遠程文件,并對其執行讀寫操作。 可在各種模式中打開文件,包括創建新文件、打開現有文件、打開文件并刪除其內容。 還可打開文件進行讀取、寫入,也可僅使用其查詢模式(在該模式中,只能檢查文件大小和屬性,不能寫入或讀取文件)。 除寫入和讀取操作外,文件對象還支持常規文件操作,例如檢查文件大小、尋找和屬性。

    本節包含以下文件對象的相關信息:

    • Connect
    • Open
    • Close
    • Read
    • Write
    • WriteLine
    • Seekc
    • Delete
    • Size
    • FileVersion
    • ProductVersion
    • Attributes

    Registry objects

    • Connect
    • Read
    • Write
    • GetFirstValue
    • GetNextValue
    • GetFirstKey
    • GetNextKey
    • DeleteValue
    • DeleteKey

    HTTP 對象

    該對象包含有助于簡化用戶執行 web 請求的多種功能。 該對象支持多種方案,包括身份驗證、代理、代理身份驗證和標頭操作。 支持 get 和 post 檢索方法。

    該對象還支持設置自定義標頭和謂詞。 每個請求不僅返回該特定請求的標題和正文,還返回操作的結果代碼。 這意味著如果腳本旨在驗證某頁面是否存在,用戶將無需分析回復,只需檢查返回的代碼,例如,如果返回的代碼是 404,則表明請求的頁面不存在。

    本節包含有關以下 HTTP 對象的信息:

    • Connect
    • GetURL
    • PostURL
    • SendRequest
    • AddHeader
    • Verb
    • HTTPVersion
    • IP
    • 端口
    • RawResponseHeaders
    • Body
    • 身份驗證
    • ProxyUser
    • ProxyPassword
    • HttpUser
    • HttpPassword
    • ResponseHeaders

    HTTPHeaders 對象

    • HeaderValue
    • HeaderName
    • Count

    FTP 對象

    Ftp 對象是可簡化 ftp 上傳/下載的函數集。 該對象可以連接到遠程 ftp 服務器、放置和檢索文件、重命名或刪除文件。 還可根據需要枚舉遠程服務器上的所有文件。 該對象的另一個功能是檢索與服務器上的文件相關的信息(屬性/大小)。 除此之外,ftp 對象還可在遠程服務器上創建/刪除文件夾以及更改目錄。

    本節包含有關以下 FTP 對象的信息:

    • Connect
    • GetCurrentDirectory
    • SetCurrentDirectory
    • CreateDirectory
    • RemoveDirectory
    • DeletFile
    • GetFile
    • PutFile
    • RenameFile
    • FindFirstFile
    • FindNextFile
    • FindFileClose
    • GetFindFileName
    • GetFindFileSize
    • GetFindFileAttributes
    • LastError

    解碼對象

    編碼對象使用戶能夠編碼或解碼 base 64 字符串。 這可在各種應用程序中使用。 Base64 編碼最常用于電子郵件以及各種身份驗證方案(包括 http)。

    本節包含以下編碼對象的相關信息:

    Base64Encode
    Base64Decode

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类