Hello

Sorry for the missing information.

Here is the debdiff

Sophie

diff -Nru pocsuite3-2.0.3/debian/changelog pocsuite3-2.0.3/debian/changelog
--- pocsuite3-2.0.3/debian/changelog    2025-02-13 18:30:48.000000000 +0100
+++ pocsuite3-2.0.3/debian/changelog    2025-05-28 09:39:45.000000000 +0200
@@ -1,3 +1,17 @@
+pocsuite3 (2.0.3-3) unstable; urgency=medium
+
+  * Fix NameError: name 'split_first' is not defined
+  * Add missing dependency python3-six
+
+ -- Sophie Brun <sop...@offensive-security.com>  Wed, 28 May 2025 09:39:45 
+0200
+
+pocsuite3 (2.0.3-2) unstable; urgency=medium
+
+  * Team Upload
+  * Add a patch to remove requirement of mmh3
+
+ -- Sophie Brun <sop...@offensive-security.com>  Thu, 22 May 2025 14:57:08 
+0200
+
 pocsuite3 (2.0.3-1) unstable; urgency=medium
 
   * New upstream version 2.0.3
diff -Nru pocsuite3-2.0.3/debian/control pocsuite3-2.0.3/debian/control
--- pocsuite3-2.0.3/debian/control      2024-11-26 23:28:56.000000000 +0100
+++ pocsuite3-2.0.3/debian/control      2025-05-28 09:39:45.000000000 +0200
@@ -22,6 +22,7 @@
 Depends: binutils,
          nasm,
          python3-openssl,
+        python3-six,
          python3-zombie-telnetlib,
          ${misc:Depends},
          ${python3:Depends}
diff -Nru 
pocsuite3-2.0.3/debian/patches/Fix-a-NameError-in-hook_urllib3_parse_url.py.patch
 
pocsuite3-2.0.3/debian/patches/Fix-a-NameError-in-hook_urllib3_parse_url.py.patch
--- 
pocsuite3-2.0.3/debian/patches/Fix-a-NameError-in-hook_urllib3_parse_url.py.patch
   1970-01-01 01:00:00.000000000 +0100
+++ 
pocsuite3-2.0.3/debian/patches/Fix-a-NameError-in-hook_urllib3_parse_url.py.patch
   2025-05-28 09:39:45.000000000 +0200
@@ -0,0 +1,111 @@
+From: Sophie Brun <sop...@offensive-security.com>
+Date: Wed, 28 May 2025 08:57:29 +0200
+Subject: Fix a NameError in hook_urllib3_parse_url.py
+
+File "/usr/lib/python3/dist-packages/requests/sessions.py", line 484, in 
prepare_request
+    p.prepare(
+    ~~~~~~~~~^
+        method=request.method.upper(),
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    ...<10 lines>...
+        hooks=merge_hooks(request.hooks, self.hooks),
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    )
+    ^
+  File "/usr/lib/python3/dist-packages/requests/models.py", line 367, in 
prepare
+    self.prepare_url(url, params)
+    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/requests/models.py", line 433, in 
prepare_url
+    scheme, auth, host, port, path, query, fragment = parse_url(url)
+                                                      ~~~~~~~~~^^^^^
+  File 
"/usr/lib/python3/dist-packages/pocsuite3/lib/request/patch/hook_urllib3_parse_url.py",
 line 191, in patched_parse_url
+    url, path_, delim = split_first(url, ['/', '?', '#'])
+                        ^^^^^^^^^^^
+NameError: name 'split_first' is not defined
+---
+ .../lib/request/patch/hook_urllib3_parse_url.py    | 65 +++++++++++-----------
+ 1 file changed, 32 insertions(+), 33 deletions(-)
+
+diff --git a/pocsuite3/lib/request/patch/hook_urllib3_parse_url.py 
b/pocsuite3/lib/request/patch/hook_urllib3_parse_url.py
+index ad35c71..53e3458 100644
+--- a/pocsuite3/lib/request/patch/hook_urllib3_parse_url.py
++++ b/pocsuite3/lib/request/patch/hook_urllib3_parse_url.py
+@@ -115,39 +115,6 @@ class Url(namedtuple('Url', url_attrs)):
+         return self.url
+ 
+ 
+-def split_first(s, delims):
+-    """
+-    Given a string and an iterable of delimiters, split on the first found
+-    delimiter. Return two split parts and the matched delimiter.
+-
+-    If not found, then the first part is the full input string.
+-
+-    Example::
+-
+-        >>> split_first('foo/bar?baz', '?/=')
+-        ('foo', 'bar?baz', '/')
+-        >>> split_first('foo/bar?baz', '123')
+-        ('foo/bar?baz', '', None)
+-
+-    Scales linearly with number of delims. Not ideal for large number of 
delims.
+-    """
+-    min_idx = None
+-    min_delim = None
+-    for d in delims:
+-        idx = s.find(d)
+-        if idx < 0:
+-            continue
+-
+-        if min_idx is None or idx < min_idx:
+-            min_idx = idx
+-            min_delim = d
+-
+-    if min_idx is None or min_idx < 0:
+-        return s, '', None
+-
+-    return s[:min_idx], s[min_idx + 1:], min_delim
+-
+-
+ def patched_parse_url(url):
+     """
+     Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is
+@@ -165,6 +132,38 @@ def patched_parse_url(url):
+         Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...)
+     """
+ 
++    def split_first(s, delims):
++        """
++        Given a string and an iterable of delimiters, split on the first found
++        delimiter. Return two split parts and the matched delimiter.
++
++        If not found, then the first part is the full input string.
++
++        Example::
++
++            >>> split_first('foo/bar?baz', '?/=')
++            ('foo', 'bar?baz', '/')
++            >>> split_first('foo/bar?baz', '123')
++            ('foo/bar?baz', '', None)
++
++        Scales linearly with number of delims. Not ideal for large number of 
delims.
++        """
++        min_idx = None
++        min_delim = None
++        for d in delims:
++            idx = s.find(d)
++            if idx < 0:
++                continue
++
++            if min_idx is None or idx < min_idx:
++                min_idx = idx
++                min_delim = d
++
++        if min_idx is None or min_idx < 0:
++            return s, '', None
++
++        return s[:min_idx], s[min_idx + 1:], min_delim
++
+     # While this code has overlap with stdlib's urlparse, it is much
+     # simplified for our needs and less annoying.
+     # Additionally, this implementations does silly things to be optimal
diff -Nru pocsuite3-2.0.3/debian/patches/Remove-mmh3-requirements.patch 
pocsuite3-2.0.3/debian/patches/Remove-mmh3-requirements.patch
--- pocsuite3-2.0.3/debian/patches/Remove-mmh3-requirements.patch       
1970-01-01 01:00:00.000000000 +0100
+++ pocsuite3-2.0.3/debian/patches/Remove-mmh3-requirements.patch       
2025-05-28 09:39:45.000000000 +0200
@@ -0,0 +1,93 @@
+From: Sophie Brun <sop...@offensive-security.com>
+Date: Mon, 3 Mar 2025 14:09:54 +0100
+Subject: Remove mmh3 requirements
+
+---
+ .../nuclei/protocols/common/expressions/__init__.py | 21 ++++++++++-----------
+ requirements.txt                                    |  1 -
+ setup.py                                            |  3 +--
+ tests/test_nuclei_helper_functions.py               |  2 +-
+ 4 files changed, 12 insertions(+), 15 deletions(-)
+
+diff --git 
a/pocsuite3/lib/yaml/nuclei/protocols/common/expressions/__init__.py 
b/pocsuite3/lib/yaml/nuclei/protocols/common/expressions/__init__.py
+index 27df717..46a76f9 100644
+--- a/pocsuite3/lib/yaml/nuclei/protocols/common/expressions/__init__.py
++++ b/pocsuite3/lib/yaml/nuclei/protocols/common/expressions/__init__.py
+@@ -13,7 +13,7 @@ import urllib.parse
+ import zlib as py_built_in_zlib
+ from typing import Union
+ 
+-import mmh3 as py_mmh3
++#import mmh3 as py_mmh3
+ from pkg_resources import parse_version
+ 
+ from pocsuite3.lib.core.log import LOGGER as logger
+@@ -314,15 +314,15 @@ def md5(inp: Union[str, bytes]) -> str:
+     return m.hexdigest()
+ 
+ 
+-def mmh3(inp: Union[str, bytes]) -> int:
+-    """
+-    Calculates the MMH3 (MurmurHash3) hash of an input
+-
+-    Example:
+-        Input: mmh3("Hello")
+-        Output: 316307400
+-    """
+-    return py_mmh3.hash(inp)
++#def mmh3(inp: Union[str, bytes]) -> int:
++#    """
++#    Calculates the MMH3 (MurmurHash3) hash of an input
++#
++#    Example:
++#        Input: mmh3("Hello")
++#        Output: 316307400
++#    """
++#    return py_mmh3.hash(inp)
+ 
+ 
+ def print_debug(*args) -> None:
+@@ -776,7 +776,6 @@ def evaluate(inp: str, dynamic_values: dict = None) -> str:
+         'html_escape': html_escape,
+         'html_unescape': html_unescape,
+         'md5': md5,
+-        'mmh3': mmh3,
+         'print_debug': print_debug,
+         'rand_base': rand_base,
+         'rand_char': rand_char,
+diff --git a/requirements.txt b/requirements.txt
+index 679d11c..d8562b3 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -14,4 +14,3 @@ pycryptodomex >= 3.9.0
+ dacite >= 1.6.0
+ PyYAML >= 6.0
+ lxml >= 4.6.0
+-mmh3 >= 3.0.0
+diff --git a/setup.py b/setup.py
+index 1b52e48..2eea5c0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -56,8 +56,7 @@ setup(
+         "pycryptodomex",
+         "dacite",
+         "PyYAML",
+-        "lxml",
+-        "mmh3"
++        "lxml"
+     ],
+     extras_require={
+         'complete': [
+diff --git a/tests/test_nuclei_helper_functions.py 
b/tests/test_nuclei_helper_functions.py
+index 00cd54a..2169da6 100644
+--- a/tests/test_nuclei_helper_functions.py
++++ b/tests/test_nuclei_helper_functions.py
+@@ -73,7 +73,7 @@ class TestCase(unittest.TestCase):
+     def test_md5(self):
+         self.assertEqual(md5("Hello"), "8b1a9953c4611296a827abf8c47804d7")
+ 
+-    def test_mmh3(self):
++    def Xtest_mmh3(self):
+         self.assertEqual(mmh3("Hello"), 316307400)
+ 
+     def test_rand_base(self):
diff -Nru pocsuite3-2.0.3/debian/patches/series 
pocsuite3-2.0.3/debian/patches/series
--- pocsuite3-2.0.3/debian/patches/series       1970-01-01 01:00:00.000000000 
+0100
+++ pocsuite3-2.0.3/debian/patches/series       2025-05-28 09:39:45.000000000 
+0200
@@ -0,0 +1,2 @@
+Remove-mmh3-requirements.patch
+Fix-a-NameError-in-hook_urllib3_parse_url.py.patch

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to