Python スクリプトで利用できるアプリケーション プログラミング インターフェース (API)
GFI LanGuard には、Python のほとんどのデフォルト実装 (CPython とも呼ばれます。http://go.gfi.com/?pageid=pythorg から利用可能) が組み込まれています。 現在のところ、Python バージョン 2.5 を使用しているため、既存のほとんどの Python スクリプトは、若干変更すれば、GFI LanGuard で動作します。 最も重要な変更点は、1 または 0 を戻す main() 関数がスクリプトに必要であることです。
セキュリティ スキャナー モジュール (脆弱性チェックおよびセキュリティ アプリケーション情報) によって使用されるすべての Python スクリプトは、次のグローバル変数にアクセスできます。
例
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 グローバル関数は、GlobalFunctions オブジェクトのメソッドとして、Python スクリプトで利用できます。 例:
# グローバル関数の使用
def main():
"""Return values:
* 0 - false, failed
* 1 - true, success"""
result = 0
# テキストを表示
GlobalFunctions.echo("Hello!")
# 特定のテキストをログ ファイルに追加する。
GlobalFunctions.writetolog("Python script started.")
# 特定のテキストをステータス バーに追加する。
GlobalFunctions.statusbar("Hello StatusBar!")
# 2 番目のパラメーターで指定されたサブノードを現在の脆弱性に追加する。
GlobalFunctions.addlistitem("", "Vulnerability description.")
# 現在の脆弱性の説明を変更する。
GlobalFunctions.setdescription("List of modems installed")
GlobalFunctions.writetolog("Python script finished.")
result = 1
return(result)
GFI LanGuard は、pywin32 の形式で Python スクリプト用の COM クライアント API も提供します。
注意
すべての GFI LanGuard COM スクリプト ライブラリーは、win32com.client を通じて Python スクリプトで利用できます。 詳細は、スクリプト オブジェクト を参照してください。
例
# LanGuard COM オブジェクト GlbObj.Socket を使用した DNSホスト名の IP 番号への変換を可能にして他のドメイン関連の情報を提供する TCP/IP ネットワークによって使用されるデータベース。 ルックアップ
def main():
"""Return values:
* 0 - false, failed
* 1 - true, success"""
result = 0
import win32com.client
socket = win32com.client.Dispatch("GlbObj.Socket.1")
print(socket.DnsLookup('gfi.com'))
result = 1
return(result)
Pywin32
# pywin32 用の Hello world
def main():
"""Return values:
* 0 - false, failed
* 1 - true, success"""
result = 0
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_PhysicalMemory")
for objItem in colItems:
print("Capacity: %s\n" % objItem.Capacity)
result = 1
return(result)
注意
追加の Pywin32 ドキュメントについては、下記を参照してください。