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 資源:
- http://go.gfi.com/?pageid=vbs_r1
- http://go.gfi.com/?pageid=vbs_r2
- http://go.gfi.com/?pageid=vbs_r3
- http://go.gfi.com/?pageid=vbs_r4
常見錯誤和缺陷
在 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() 函數,該函數返回 1 或 0。
安全掃描程序模塊(漏洞檢查和安全應用程序信息)使用的所有 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
GFI LanGuard中文使用教程
推薦文章: