Skip to content

Commit

Permalink
πŸ—“ Jul 19, 2022 6:09:09 PM
Browse files Browse the repository at this point in the history
✨ show_recipe method
πŸ› handle errors in language.py when decoding
πŸ” types updated for some utils functions
πŸ” tests added
  • Loading branch information
securisec committed Jul 19, 2022
1 parent 9124d24 commit 321b535
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 37 deletions.
1 change: 1 addition & 0 deletions TODO
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Fix:

Code:
☐ add more examples in docstrings
☐ Luhn validator https://guptaavi352.medium.com/ctflearn-writeups-9f247c2fe94c

New ideas:
☐ rubber ducky encode/decode
Expand Down
9 changes: 9 additions & 0 deletions chepy/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -966,6 +966,15 @@ def save_recipe(self, path: str):
self._info_logger("Saved recipe to {}".format(str(path)))
return self

def show_recipe(self):
"""
Show the current recipe
Returns:
dict: The current recipe
"""
return self._stack

def load_recipe(self, path: str):
"""Load and run a recipe
Expand Down
68 changes: 34 additions & 34 deletions chepy/modules/language.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def decode_utf_16_le(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("utf_16_le")
self.state = self._convert_to_bytes().decode("utf_16_le", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -84,7 +84,7 @@ def decode_utf_16_be(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("utf_16_be")
self.state = self._convert_to_bytes().decode("utf_16_be", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -104,7 +104,7 @@ def decode_utf_7(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("utf_7")
self.state = self._convert_to_bytes().decode("utf_7", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -126,7 +126,7 @@ def decode_cp500(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp500")
self.state = self._convert_to_bytes().decode("cp500", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -146,7 +146,7 @@ def decode_cp037(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp037")
self.state = self._convert_to_bytes().decode("cp037", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -166,7 +166,7 @@ def decode_cp874(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp874")
self.state = self._convert_to_bytes().decode("cp874", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -186,7 +186,7 @@ def decode_cp932(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp932")
self.state = self._convert_to_bytes().decode("cp932", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -206,7 +206,7 @@ def decode_gbk(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("gbk")
self.state = self._convert_to_bytes().decode("gbk", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -228,7 +228,7 @@ def decode_gb2312(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("gb2312")
self.state = self._convert_to_bytes().decode("gb2312", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -248,7 +248,7 @@ def decode_cp949(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp949")
self.state = self._convert_to_bytes().decode("cp949", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -268,7 +268,7 @@ def decode_cp950(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp950")
self.state = self._convert_to_bytes().decode("cp950", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -288,7 +288,7 @@ def decode_cp1250(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1250")
self.state = self._convert_to_bytes().decode("cp1250", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -308,7 +308,7 @@ def decode_cp1251(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1251")
self.state = self._convert_to_bytes().decode("cp1251", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -328,7 +328,7 @@ def decode_cp1252(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1252")
self.state = self._convert_to_bytes().decode("cp1252", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -348,7 +348,7 @@ def decode_cp1253(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1253")
self.state = self._convert_to_bytes().decode("cp1253", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -368,7 +368,7 @@ def decode_cp1254(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1254")
self.state = self._convert_to_bytes().decode("cp1254", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -388,7 +388,7 @@ def decode_cp1255(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1255")
self.state = self._convert_to_bytes().decode("cp1255", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -408,7 +408,7 @@ def decode_cp1256(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1256")
self.state = self._convert_to_bytes().decode("cp1256", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -428,7 +428,7 @@ def decode_cp1257(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1257")
self.state = self._convert_to_bytes().decode("cp1257", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -448,7 +448,7 @@ def decode_cp1258(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("cp1258")
self.state = self._convert_to_bytes().decode("cp1258", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -470,7 +470,7 @@ def decode_iso8859_2(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_2")
self.state = self._convert_to_bytes().decode("iso8859_2", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -492,7 +492,7 @@ def decode_iso8859_3(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_3")
self.state = self._convert_to_bytes().decode("iso8859_3", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -514,7 +514,7 @@ def decode_iso8859_4(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_4")
self.state = self._convert_to_bytes().decode("iso8859_4", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -536,7 +536,7 @@ def decode_iso8859_5(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_5")
self.state = self._convert_to_bytes().decode("iso8859_5", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -558,7 +558,7 @@ def decode_iso8859_6(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_6")
self.state = self._convert_to_bytes().decode("iso8859_6", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -580,7 +580,7 @@ def decode_iso8859_7(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_7")
self.state = self._convert_to_bytes().decode("iso8859_7", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -602,7 +602,7 @@ def decode_iso8859_8(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_8")
self.state = self._convert_to_bytes().decode("iso8859_8", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -624,7 +624,7 @@ def decode_iso8859_9(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_9")
self.state = self._convert_to_bytes().decode("iso8859_9", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -646,7 +646,7 @@ def decode_iso8859_10(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_10")
self.state = self._convert_to_bytes().decode("iso8859_10", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -668,7 +668,7 @@ def decode_iso8859_11(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_11")
self.state = self._convert_to_bytes().decode("iso8859_11", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -690,7 +690,7 @@ def decode_iso8859_13(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_13")
self.state = self._convert_to_bytes().decode("iso8859_13", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -712,7 +712,7 @@ def decode_iso8859_14(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_14")
self.state = self._convert_to_bytes().decode("iso8859_14", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -734,7 +734,7 @@ def decode_iso8859_15(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("iso8859_15")
self.state = self._convert_to_bytes().decode("iso8859_15", errors='backslashreplace')
return self

@ChepyDecorators.call_stack
Expand All @@ -756,5 +756,5 @@ def unicode_to_str(self) -> LanguageT:
Returns:
Chepy: The Chepy object.
"""
self.state = self._convert_to_bytes().decode("unicode-escape")
self.state = self._convert_to_bytes().decode("unicode-escape", errors='backslashreplace')
return self
2 changes: 1 addition & 1 deletion chepy/modules/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ def regex_search(
dotall: bool = False,
unicode: bool = False,
extended: bool = False,
):
) -> UtilsT:
"""Regex search on current data
Args:
Expand Down
4 changes: 2 additions & 2 deletions chepy/modules/utils.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ class Utils(ChepyCore):
state: Any = ...
def reverse(self: UtilsT, count: int=...) -> UtilsT: ...
def count_occurances(self: UtilsT, regex: str, case_sensitive: bool=...) -> UtilsT: ...
def remove_whitespace(self: UtilsT, spaces: bool=..., carriage_return: bool=..., line_feeds: bool=..., tabs: bool=..., form_feeds: bool=...) -> Any: ...
def remove_whitespace(self: UtilsT, spaces: bool=..., carriage_return: bool=..., line_feeds: bool=..., tabs: bool=..., form_feeds: bool=...) -> UtilsT: ...
def remove_nullbytes(self: UtilsT) -> UtilsT: ...
def regex_search(self: UtilsT, pattern: str, ignore_case: bool=..., multiline: bool=..., dotall: bool=..., unicode: bool=..., extended: bool=...) -> Any: ...
def regex_search(self: UtilsT, pattern: str, ignore_case: bool=..., multiline: bool=..., dotall: bool=..., unicode: bool=..., extended: bool=...) -> UtilsT: ...
def split_by_char(self: UtilsT, delimiter: str=...) -> UtilsT: ...
def split_by_regex(self: UtilsT, pattern: str=..., trim: Any=...) -> UtilsT: ...
def split_by_n(self: UtilsT, n: int) -> UtilsT: ...
Expand Down
4 changes: 4 additions & 0 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,10 @@ def test_load_file_binary():
assert type(Chepy("tests/files/pkcs12").load_file(True).o) == bytearray


def test_show_recipe():
assert Chepy("4142").from_hex()._stack == [{"function": "from_hex", "args": {}}]


def test_run_recipe():
assert (
Chepy("bG9sCg==")
Expand Down

0 comments on commit 321b535

Please sign in to comment.