0

私は、US CERT の python で書かれたソフトウェアを使用して、いくつかのファジングを行っています。このソフトウェアには、どのバイト変異がクラッシュを引き起こしているかを正確に判断するために、クラッシュを引き起こす特定のテスト ケースに対して実行するように設計された Minimizer.py ツールが含まれています。

ただし、ツールを実行しようとすると、エラーが発生します。ツールとエラーの両方をGoogleで検索すると、空白が表示されます。限られた Python の経験で自分でトラブルシューティングを試みても、役に立ちません。エラーの原因についてのアイデアはありますか?エラーを修正してツールを機能させることができますか?

使用されているコマンド ライン オプションは次のとおりです。

エラー出力は次のとおりです。

Traceback (most recent call last):
File "C:\FOE2\tools\minimize.py", line 234, in <module>
main()
File "C:\FOE2\tools\minimize.py", line 183, in main
config = Config(cfg_file).config
File "C:\FOE2\certfuzz\campaign\config\__init__.py", line 76, in __init__
self._set_derived_options()
File "C:\FOE2\certfuzz\campaign\config\foe_config.py", line 93, in _set_derived_options
t = Template(self.config['target']['cmdline_template'])
TypeError: 'NoneType' object has no attribute '__getitem__'

エラーの最後の 2 行にある両方のファイルのコード セグメントは次のとおりです。

__init__.py:

 def __init__(self, config_file):
    self.file = config_file
    self.config = None

    self.load()
    self._set_derived_options()

    self.validations = []
    self._add_validations()
    self.validate()

def _set_derived_options(self):
    pass

そして、からfoe_config_.py(関連する場合に備えて、前のコード行を追加しました。):

class Config(ConfigBase):
  def _add_validations(self):
    self.validations.append(self._validate_debugger_timeout_exceeds_runner)

  def _set_derived_options(self):
    # interpolate program name
    # add quotes around $SEEDFILE
    t = Template(self.config['target']['cmdline_template'])
    #self.config['target']['cmdline_template'] = t.safe_substitute(PROGRAM=self.config['target']['program'])
    self.config['target']['cmdline_template'] = t.safe_substitute(PROGRAM=quoted(self.config['target']['program']), SEEDFILE=quoted('$SEEDFILE'))
4

1 に答える 1

4

__init__投稿したコードからはわかりにくいですが、 に設定self.configされているように見えますNone。次に、ここ_set_derived_optionsで使用するものを呼び出します。self.config

t = Template(self.config['target']['cmdline_template'])

でも昔self.configから変わらないNoneNone['target'](例外以外の) 何も提供することは期待できませんが、基本的にはそれがここで行っていることだと思います。

于 2013-02-18T19:09:08.413 に答える