w 3 a Scanプラグイン構造の構想問題
4887 ワード
W 3 A Scanを始める前に、プラグイン構造というものを考えたことがありません.後で機能を更新する様々な問題を思い出すまで、
プラグインの構造を考えるべきだと気づき、夜家に帰るときに親友に聞いた.彼は接触したことがないと言ったが、大体分かった...あっという間に結ばれた.しばらく言っても君にはわからなかった...
最后にやはり昨夜自分で関连する资料を探して、実は国内は确かにすでに実现した人がいて、しかもこの方法はとても成熟しています.
Pythonはダイナミック拡張に適しており、このプラグインの更新方法は皆さんに良い解決策を与えています.膨大な未知のプラットフォームまたはツールについて.
動的拡張は、プライマリ・プログラムを変更する必要がなく、プラグインを絶えず埋め込むだけで既存のテクノロジーのニーズを満たすことができます.
セキュリティのように、プラグイン開発はプラットフォーム開発よりも価値があります.主に技術革新に現れて、例えば今あるOdayが出て、このOdayの検出方式
現在のプラットフォーム設計のニーズに合わないと同時に、インタフェースも成功しません.リーダーはあなたがこの機能をしたいと思っています.どうすればいいですか.
この時プラグインが現れました..インタフェースに問題がなく、プライマリ・プログラム構造に影響を与えない限り、やりたい機能を作ることができます.
効率的に開発でき、ニーズを解決できます.どうして喜んでやらないのですか.
これに対してDemoは実際にシーンを適用した.自分で深く考えなければならない.(分かっても分からなくても、どうせわかったんだから)
全体構造:
メインプログラムコードmain.py:
テストモジュール1:
その後、これらのモジュールをw 3 a_に改善します.Scan_consoleの中..
私のプロジェクトに注目してforkして、もっと小さな星を歓迎します.https://github.com/smarttang/w3a_scan_console/
プラグインの構造を考えるべきだと気づき、夜家に帰るときに親友に聞いた.彼は接触したことがないと言ったが、大体分かった...あっという間に結ばれた.しばらく言っても君にはわからなかった...
最后にやはり昨夜自分で関连する资料を探して、実は国内は确かにすでに実现した人がいて、しかもこの方法はとても成熟しています.
Pythonはダイナミック拡張に適しており、このプラグインの更新方法は皆さんに良い解決策を与えています.膨大な未知のプラットフォームまたはツールについて.
動的拡張は、プライマリ・プログラムを変更する必要がなく、プラグインを絶えず埋め込むだけで既存のテクノロジーのニーズを満たすことができます.
セキュリティのように、プラグイン開発はプラットフォーム開発よりも価値があります.主に技術革新に現れて、例えば今あるOdayが出て、このOdayの検出方式
現在のプラットフォーム設計のニーズに合わないと同時に、インタフェースも成功しません.リーダーはあなたがこの機能をしたいと思っています.どうすればいいですか.
この時プラグインが現れました..インタフェースに問題がなく、プライマリ・プログラム構造に影響を与えない限り、やりたい機能を作ることができます.
効率的に開発でき、ニーズを解決できます.どうして喜んでやらないのですか.
これに対してDemoは実際にシーンを適用した.自分で深く考えなければならない.(分かっても分からなくても、どうせわかったんだから)
全体構造:
1 root@smart:~/tmp_poject/python_poject# tree
2 .
3 ├── main.py
4 └── plugin
5 ├── DirectioryScan.py
6 ├── __init__.py
7 └── SQLinjectScan.py
メインプログラムコードmain.py:
root@smart:~/tmp_poject/python_poject# cat main.py
#-*- encoding: utf-8 -*-
import os
import sys
class Scan_Main:
def __init__(self):
self.plugins=[]
self.__loadPlugins()
def __loadPlugins(self):
ScanFilepath=os.path.split(os.path.realpath(__file__))[0]
if os.path.exists(ScanFilepath+"/plugin"):
for filename in os.listdir(ScanFilepath+'/plugin'):
if not filename.endswith('.py') or filename.startswith('_'):
continue
self.__runPlugins(filename)
else:
print "[*] Plugins directory not in here!"
print "[*] Done."
def __runPlugins(self,filename):
plugins_name=os.path.splitext(filename)[0]
plugin=__import__("plugin."+plugins_name,fromlist=[plugins_name])
clazz=plugin.getPluginClass()
o=clazz()
o.setScan_Main(self)
o.start()
self.plugins.append(o)
# plugin.do(self)
def shutdown(self):
for o in self.plugins:
print o
o.stop()
o.setScan_Main(None)
self.plugins=[]
def print_load(self,item):
print "[*] load plugins: %s" % item
if __name__=="__main__":
scan_main=Scan_Main()
scan_main.shutdown()
テストモジュール1:
root@smart:~/tmp_poject/python_poject# cat plugin/DirectioryScan.py
#-*- encoding: utf-8 -*-
class Plugin1:
def setScan_Main(self, scan_main):
self.scan_main=scan_main
def start(self):
self.scan_main.print_load("plugin1")
def stop(self):
self.scan_main.sayGoodbye("plugin1")
def getPluginClass():
return Plugin1
その後、これらのモジュールをw 3 a_に改善します.Scan_consoleの中..
私のプロジェクトに注目してforkして、もっと小さな星を歓迎します.https://github.com/smarttang/w3a_scan_console/