Python スクリプトで利用できるアプリケーション プログラミング インターフェース (API)

GFI LanGuard には、Python のほとんどのデフォルト実装 (CPython とも呼ばれます。http://go.gfi.com/?pageid=pythorg から利用可能) が組み込まれています。 現在のところ、Python バージョン 2.5 を使用しているため、既存のほとんどの Python スクリプトは、若干変更すれば、GFI LanGuard で動作します。 最も重要な変更点は、1 または 0 を戻す main() 関数がスクリプトに必要であることです。

セキュリティ スキャナー モジュール (脆弱性チェックおよびセキュリティ アプリケーション情報) によって使用されるすべての Python スクリプトは、次のグローバル変数にアクセスできます。

  • ComputerIP
  • ComputerName
  • LNSSDir
  • localProgramFilesPath
  • localWindowsPath
  • localSystem32Path
  • User
  • パスワード

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 ドキュメントについては、下記を参照してください。