Skip to content

Commit

Permalink
Implemented MailChimp API Key Analyzer (#142)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ideneal authored and d-Rickyy-b committed Oct 9, 2019
1 parent c884cb6 commit 2e5302d
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions pastepwn/analyzers/__init__.py
Expand Up @@ -28,6 +28,7 @@
from .adobekeyanalyzer import AdobeKeyAnalyzer
from .facebookaccesstokenanalyzer import FacebookAccessTokenAnalyzer
from .base64analyzer import Base64Analyzer
from .mailchimpapikeyanalyzer import MailChimpApiKeyAnalyzer
from .stripeapikeyanalyzer import StripeApiKeyAnalyzer
from .awssecretkeyanalyzer import AWSSecretKeyAnalyzer
from .awsaccesskeyanalyzer import AWSAccessKeyAnalyzer
Expand Down Expand Up @@ -65,6 +66,7 @@
'EmailPasswordPairAnalyzer',
'FacebookAccessTokenAnalyzer',
'Base64Analyzer',
'MailChimpApiKeyAnalyzer',
'SlackWebhookAnalyzer',
'MegaLinkAnalyzer',
'AWSSecretKeyAnalyzer',
Expand Down
8 changes: 8 additions & 0 deletions pastepwn/analyzers/mailchimpapikeyanalyzer.py
@@ -0,0 +1,8 @@
from .regexanalyzer import RegexAnalyzer


class MailChimpApiKeyAnalyzer(RegexAnalyzer):

def __init__(self, actions):
regex = r"[0-9a-f]{32}-us[0-9]{12}"
super().__init__(actions, regex)
39 changes: 39 additions & 0 deletions pastepwn/analyzers/tests/mailchimpapikeyanalyzer_test.py
@@ -0,0 +1,39 @@
import unittest
from unittest import mock

from pastepwn.analyzers.mailchimpapikeyanalyzer import MailChimpApiKeyAnalyzer


class TestMailChimpApiKeyAnalyzer(unittest.TestCase):

def setUp(self):
self.analyzer = MailChimpApiKeyAnalyzer(None)
self.paste = mock.Mock()

def test_match_positive(self):
"""Test if positives are recognized"""
self.paste.body = "87b6ac876aca87c687a6c87a6ca876c8-us000000000000"
self.assertTrue(self.analyzer.match(self.paste))
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-us000000000000"
self.assertTrue(self.analyzer.match(self.paste))
self.paste.body = "12312312312312312312312312312312-us000000000000"
self.assertTrue(self.analyzer.match(self.paste))
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-us345646456456"
self.assertTrue(self.analyzer.match(self.paste))

def test_match_negative(self):
"""Test if negatives are not recognized"""
self.paste.body = ""
self.assertFalse(self.analyzer.match(self.paste))
self.paste.body = None
self.assertFalse(self.analyzer.match(self.paste))
self.paste.body = "asdasdasdasdasdasdasdasdasdasdas-us000000000000"
self.assertFalse(self.analyzer.match(self.paste))
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-it000000000000"
self.assertFalse(self.analyzer.match(self.paste))
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-usasdasdasdasd"
self.assertFalse(self.analyzer.match(self.paste))


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

0 comments on commit 2e5302d

Please sign in to comment.