Skip to content

Commit

Permalink
Remove deprecated methods in preparation for major release.
Browse files Browse the repository at this point in the history
  • Loading branch information
utkonos committed Jan 1, 2020
1 parent 2908471 commit 350f56c
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 159 deletions.
48 changes: 0 additions & 48 deletions plyara/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,54 +274,6 @@ def parse_string(self, input_string):

return self.rules

@staticmethod
def is_valid_rule_name(entry):
"""Validate rule name: DEPRECATED."""
from plyara.utils import is_valid_rule_name
import warnings
warnings.warn('Static method is_valid_rule_name() is deprecated: use plyara.utils', DeprecationWarning)
return is_valid_rule_name(entry)

@staticmethod
def is_valid_rule_tag(entry):
"""Validate tag: DEPRECATED."""
from plyara.utils import is_valid_rule_tag
import warnings
warnings.warn('Static method is_valid_rule_tag() is deprecated: use plyara.utils', DeprecationWarning)
return is_valid_rule_tag(entry)

@staticmethod
def detect_imports(rule):
"""Detect imports: DEPRECATED."""
from plyara.utils import detect_imports
import warnings
warnings.warn('Static method detect_imports() is deprecated: use plyara.utils', DeprecationWarning)
return detect_imports(rule)

@staticmethod
def detect_dependencies(rule):
"""Detect dependencies: DEPRECATED."""
from plyara.utils import detect_dependencies
import warnings
warnings.warn('Static method detect_dependencies() is deprecated: use plyara.utils', DeprecationWarning)
return detect_dependencies(rule)

@staticmethod
def generate_logic_hash(rule):
"""Generate logic hash: DEPRECATED."""
from plyara.utils import generate_logic_hash
import warnings
warnings.warn('Static method generate_logic_hash() is deprecated: use plyara.utils', DeprecationWarning)
return generate_logic_hash(rule)

@staticmethod
def rebuild_yara_rule(rule):
"""Rebuild rule: DEPRECATED."""
from plyara.utils import rebuild_yara_rule
import warnings
warnings.warn('Static method rebuild_yara_rule() is deprecated: use plyara.utils', DeprecationWarning)
return rebuild_yara_rule(rule)


class Plyara(Parser):
"""Define the lexer and the parser rules."""
Expand Down
111 changes: 0 additions & 111 deletions tests/unit_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1015,116 +1015,5 @@ def test_anonymous_array_condition(self):
self.assertEqual(result[0].get('condition_terms')[8], '@')


class TestDeprecatedMethods(unittest.TestCase): # REMOVE SOON!!

def test_logic_hash_generator(self):
with data_dir.joinpath('logic_collision_ruleset.yar').open('r') as fh:
inputString = fh.read()

result = Plyara().parse_string(inputString)

rule_mapping = {}

for entry in result:
rulename = entry['rule_name']
setname, _ = rulename.split('_')
with self.assertWarns(DeprecationWarning):
rulehash = Plyara.generate_logic_hash(entry)

if setname not in rule_mapping:
rule_mapping[setname] = [rulehash]
else:
rule_mapping[setname].append(rulehash)

for setname, hashvalues in rule_mapping.items():

if not len(set(hashvalues)) == 1:
raise AssertionError('Collision detection failure for {}'.format(setname))

def test_is_valid_rule_name(self):
with self.assertWarns(DeprecationWarning):
self.assertTrue(Plyara.is_valid_rule_name('test'))
self.assertTrue(Plyara.is_valid_rule_name('test123'))
self.assertTrue(Plyara.is_valid_rule_name('test_test'))
self.assertTrue(Plyara.is_valid_rule_name('_test_'))
self.assertTrue(Plyara.is_valid_rule_name('include_test'))
self.assertFalse(Plyara.is_valid_rule_name('123test'))
self.assertFalse(Plyara.is_valid_rule_name('123 test'))
self.assertFalse(Plyara.is_valid_rule_name('test 123'))
self.assertFalse(Plyara.is_valid_rule_name('test test'))
self.assertFalse(Plyara.is_valid_rule_name('test-test'))
self.assertFalse(Plyara.is_valid_rule_name('include'))
self.assertFalse(Plyara.is_valid_rule_name('test!*@&*!&'))
self.assertFalse(Plyara.is_valid_rule_name(''))

def test_rebuild_yara_rule(self):
with data_dir.joinpath('rebuild_ruleset.yar').open('r', encoding='utf-8') as fh:
inputString = fh.read()

result = Plyara().parse_string(inputString)

rebuilt_rules = str()
with self.assertWarns(DeprecationWarning):
for rule in result:
rebuilt_rules += Plyara.rebuild_yara_rule(rule)

self.assertEqual(inputString, rebuilt_rules)

def test_rebuild_yara_rule_metadata(self):
test_rule = """
rule check_meta {
meta:
string_value = "TEST STRING"
string_value = "DIFFERENT TEST STRING"
string_value = ""
bool_value = true
bool_value = false
digit_value = 5
digit_value = 10
condition:
true
}
"""
parsed = Plyara().parse_string(test_rule)
for rule in parsed:
with self.assertWarns(DeprecationWarning):
unparsed = Plyara.rebuild_yara_rule(rule)
self.assertIn('string_value = "TEST STRING"', unparsed)
self.assertIn('string_value = "DIFFERENT TEST STRING"', unparsed)
self.assertIn('string_value = ""', unparsed)
self.assertIn('bool_value = true', unparsed)
self.assertIn('bool_value = false', unparsed)
self.assertIn('digit_value = 5', unparsed)
self.assertIn('digit_value = 10', unparsed)

def test_detect_dependencies(self):
with data_dir.joinpath('detect_dependencies_ruleset.yar').open('r') as fh:
inputString = fh.read()

result = Plyara().parse_string(inputString)

with self.assertWarns(DeprecationWarning):
self.assertEqual(Plyara.detect_dependencies(result[0]), list())
self.assertEqual(Plyara.detect_dependencies(result[1]), list())
self.assertEqual(Plyara.detect_dependencies(result[2]), list())
self.assertEqual(Plyara.detect_dependencies(result[3]), ['is__osx', 'priv01', 'priv02', 'priv03', 'priv04'])
self.assertEqual(Plyara.detect_dependencies(result[4]), ['is__elf', 'priv01', 'priv02', 'priv03', 'priv04'])
self.assertEqual(Plyara.detect_dependencies(result[5]), ['is__elf', 'is__osx', 'priv01', 'priv02'])
self.assertEqual(Plyara.detect_dependencies(result[6]), ['is__elf', 'is__osx', 'priv01'])
self.assertEqual(Plyara.detect_dependencies(result[7]), ['is__elf'])
self.assertEqual(Plyara.detect_dependencies(result[8]), ['is__osx', 'is__elf'])
self.assertEqual(Plyara.detect_dependencies(result[9]), ['is__osx'])
self.assertEqual(Plyara.detect_dependencies(result[10]), ['is__elf', 'is__osx'])

def test_detect_imports(self):
for imp in ('androguard', 'cuckoo', 'dotnet', 'elf', 'hash', 'magic', 'math', 'pe'):
with data_dir.joinpath('import_ruleset_{}.yar'.format(imp)).open('r') as fh:
inputString = fh.read()
results = Plyara().parse_string(inputString)
with self.assertWarns(DeprecationWarning):
for rule in results:
self.assertEqual(Plyara.detect_imports(rule), [imp])


if __name__ == '__main__':
unittest.main()

0 comments on commit 350f56c

Please sign in to comment.