如何从 jython zap 访问 EncodeDecodeResult

How to access EncodeDecodeResult from jython zap

有没有办法从 python 脚本访问 EncodeDecodeResult?我无法导入它。当我创建一个 Encode/Decode 脚本和 return 一个简单的字符串时,出现以下错误。

java.lang.ClassCastException: class java.lang.String cannot be cast to class org.zaproxy.addon.encoder.processors.EncodeDecodeResult (java.lang.String is in module java.base of loader 'bootstrap'; org.zaproxy.addon.encoder.processors.EncodeDecodeResult is in unnamed module of loader org.zaproxy.zap.control.AddOnClassLoader @440b6dca)

当我尝试像这样导入模块时

import org.zaproxy.addon.encoder.processors.EncodeDecodeResult

我明白了

Traceback (most recent call last):
  File "<script>", line 483, in process
ImportError: No module named addon

第一个错误似乎暗示说 org.zaproxy.addon.encoder.processors.EncodeDecodeResult is in unnamed module of loader org.zaproxy.zap.control.AddOnClassLoader,但我不知道如何使用它。

我发现的一个丑陋的 hack 是使用结果字符串引发异常,该异常将在 encoder/decoder 视图中显示结果。如果在那之后没有禁用该模块,那在某种程度上是可以接受的。

这是 Zap Encode/Decode/Hash 功能的 Python (Jython) 脚本的基本示例。此示例只是将字符串 TEST 附加到输入内容的末尾。

from org.zaproxy.addon.encoder.processors import EncodeDecodeResult

def process(value):
    return EncodeDecodeResult(value+"TEST");

我会努力将模板添加到各种脚本插件中。

进一步参考(以防万一): https://www.jython.org/jython-old-sites/archive/21/docs/usejava.html