Skip to content

Commit

Permalink
Merge 1952cb4 into 8b78c98
Browse files Browse the repository at this point in the history
  • Loading branch information
grimmjow8 committed Oct 19, 2019
2 parents 8b78c98 + 1952cb4 commit 2fd2d29
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
2 changes: 2 additions & 0 deletions pastepwn/analyzers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from .awsaccesskeyanalyzer import AWSAccessKeyAnalyzer
from .awssecretkeyanalyzer import AWSSecretKeyAnalyzer
from .awssessiontokenanalyzer import AWSSessionTokenAnalyzer
from .azuresubscriptionkeyanalyzer import AzureSubscriptionKeyAnalyzer
from .base64analyzer import Base64Analyzer
from .basicanalyzer import BasicAnalyzer
from .battlenetkeyanalyzer import BattleNetKeyAnalyzer
Expand Down Expand Up @@ -45,6 +46,7 @@
'AWSSecretKeyAnalyzer',
'AWSAccessKeyAnalyzer',
'AWSSessionTokenAnalyzer',
'AzureSubscriptionKeyAnalyzer',
'Base64Analyzer',
'BasicAnalyzer',
'BattleNetKeyAnalyzer',
Expand Down
16 changes: 16 additions & 0 deletions pastepwn/analyzers/azuresubscriptionkeyanalyzer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from .regexanalyzer import RegexAnalyzer


class AzureSubscriptionKeyAnalyzer(RegexAnalyzer):
"""
Analyzer to match Azure subscription key via regex
Keys are 32 character alphanumeric (lower case)
"""
name = "AzureSubscriptionKeyAnalyzer"

def __init__(self, actions):
# https://docs.microsoft.com/en-us/azure/api-management/api-management-subscriptions
regex = r"\b[a-f0-9]{32}\b"
super().__init__(actions, regex)
61 changes: 61 additions & 0 deletions pastepwn/analyzers/tests/azuresubscriptionkeyanalyzer_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*-
import unittest
from unittest import mock

from pastepwn.analyzers.azuresubscriptionkeyanalyzer import AzureSubscriptionKeyAnalyzer


class TestAzureSubscriptionKeyAnalyzer(unittest.TestCase):

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

def test_match_positive(self):
"""Test if positives are recognized"""
# google key dump
self.paste.body = "74796abfc83c49bba7458746266abd28"
self.assertTrue(self.analyzer.match(self.paste))

# google key dump
self.paste.body = "00000000000000000000000000000000"
self.assertTrue(self.analyzer.match(self.paste))

# google key dump
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
self.assertTrue(self.analyzer.match(self.paste))

# google key dump
self.paste.body = "a32324343543bcdea32324343543bcde"
self.assertTrue(self.analyzer.match(self.paste))

# key appearing in the middle of a string
self.paste.body = "my azure key is: a32324343543bcdea32324343543bcde, aaaa"
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))

# Invalid characters
self.paste.body = "aaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaa"
self.assertFalse(self.analyzer.match(self.paste))

# Invalid casing
self.paste.body = "AAAAAAAABBBB11111111111111111111"
self.assertFalse(self.analyzer.match(self.paste))

# Invalid length
self.paste.body = "AAAAAAAAAA"
self.assertFalse(self.analyzer.match(self.paste))

# Invalid length
self.paste.body = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
self.assertFalse(self.analyzer.match(self.paste))

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

0 comments on commit 2fd2d29

Please sign in to comment.