Skip to content

Commit

Permalink
Merge 67bda70 into 0555d02
Browse files Browse the repository at this point in the history
  • Loading branch information
YellowFoxH4XOR committed Oct 3, 2019
2 parents 0555d02 + 67bda70 commit 2c4d8f3
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
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from .urlanalyzer import URLAnalyzer
from .wordanalyzer import WordAnalyzer
from .ibananalyzer import IBANAnalyzer
from .dbconnstringanalyzer import DBConnAnalyzer
from .privatekeyanalyzer import PrivateKeyAnalyzer

__all__ = (
Expand All @@ -28,5 +29,6 @@
'URLAnalyzer',
'WordAnalyzer',
'IBANAnalyzer',
'DBConnAnalyzer'
'PrivateKeyAnalyzer'
)
12 changes: 12 additions & 0 deletions pastepwn/analyzers/dbconnstringanalyzer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from .regexanalyzer import RegexAnalyzer


class DBConnAnalyzer(RegexAnalyzer):
"""Analyzer to match on email addresses via regex"""
name = "DBConnAnalyzer"

def __init__(self, actions):
# https:// should be ignored
regex = r"(\b(?!http(s)?\b)\w+[a-zA-Z]+://[a-zA-z0-9.:,]+)"
super().__init__(actions, regex)
35 changes: 35 additions & 0 deletions pastepwn/analyzers/tests/dbconnstringanalyzer_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
import unittest
from unittest import mock

from pastepwn.analyzers.dbconnstringanalyzer import DBConnAnalyzer


class TestDBConnAnalyzer(unittest.TestCase):
def setUp(self):
self.analyzer = DBConnAnalyzer(None)
self.paste = mock.Mock()

def test_match_positive(self):
"""Test if positives are recognized"""
self.paste.body = "cassandra://194.3.5.2"
self.assertTrue(self.analyzer.match(self.paste))
self.paste.body = "postgresql://user:secret@localhost"
self.assertTrue(self.analyzer.match(self.paste))
self.paste.body = "mongodb://router1.example.com:27017"
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 = "https://www.google.com"
self.assertFalse(self.analyzer.match(self.paste))
self.paste.body = "http://www.google.com"
self.assertFalse(self.analyzer.match(self.paste))


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

0 comments on commit 2c4d8f3

Please sign in to comment.