Skip to content

Commit

Permalink
[#82] Add email and password pair analyzer (#87)
Browse files Browse the repository at this point in the history
Fixes #82
  • Loading branch information
bajubullet authored and d-Rickyy-b committed Oct 7, 2019
1 parent 320b6a9 commit f0af9cb
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 10 deletions.
28 changes: 18 additions & 10 deletions pastepwn/analyzers/__init__.py
@@ -1,26 +1,31 @@
# -*- coding: utf-8 -*-
from .alwaystrueanalyzer import AlwaysTrueAnalyzer
from .basicanalyzer import BasicAnalyzer
from .battlenetkeyanalyzer import BattleNetKeyAnalyzer
from .bcrypthashanalyzer import BcryptHashAnalyzer
from .md5hashanalyzer import MD5HashAnalyzer
from .shahashanalyzer import SHAHashAnalyzer
from .creditcardanalyzer import CreditCardAnalyzer
from .databasedumpanalyzer import DatabaseDumpAnalyzer
from .dbconnstringanalyzer import DBConnAnalyzer
from .emailpasswordpairanalyzer import EmailPasswordPairAnalyzer
from .genericanalyzer import GenericAnalyzer
from .ibananalyzer import IBANAnalyzer
from .mailanalyzer import MailAnalyzer
from .md5hashanalyzer import MD5HashAnalyzer
from .microsoftkeyanalyzer import MicrosoftKeyAnalyzer
from .originkeyanalyzer import OriginKeyAnalyzer
from .pastebinurlanalyzer import PastebinURLAnalyzer
from .phonenumberanalyzer import PhoneNumberAnalyzer
from .privatekeyanalyzer import PrivateKeyAnalyzer
from .regexanalyzer import RegexAnalyzer
from .shahashanalyzer import SHAHashAnalyzer
from .steamkeyanalyzer import SteamKeyAnalyzer
from .uplaykeyanalyzer import UplayKeyAnalyzer
from .urlanalyzer import URLAnalyzer
from .wordanalyzer import WordAnalyzer
from .ibananalyzer import IBANAnalyzer
from .databasedumpanalyzer import DatabaseDumpAnalyzer
from .dbconnstringanalyzer import DBConnAnalyzer
from .privatekeyanalyzer import PrivateKeyAnalyzer
from .phonenumberanalyzer import PhoneNumberAnalyzer
from .originkeyanalyzer import OriginKeyAnalyzer
from .steamkeyanalyzer import SteamKeyAnalyzer
from .uplaykeyanalyzer import UplayKeyAnalyzer
from .battlenetkeyanalyzer import BattleNetKeyAnalyzer
from .microsoftkeyanalyzer import MicrosoftKeyAnalyzer
from .emailpasswordpairanalyzer import EmailPasswordPairAnalyzer

__all__ = (
'AlwaysTrueAnalyzer',
Expand All @@ -44,5 +49,8 @@
'SteamKeyAnalyzer',
'UplayKeyAnalyzer',
'BattleNetKeyAnalyzer',
'MicrosoftKeyAnalyzer'
'MicrosoftKeyAnalyzer',
'DBConnAnalyzer',
'PrivateKeyAnalyzer',
'EmailPasswordPairAnalyzer',
)
12 changes: 12 additions & 0 deletions pastepwn/analyzers/emailpasswordpairanalyzer.py
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from .regexanalyzer import RegexAnalyzer

_EMAIL_PASSWORD_REGEX = r'[\w\.\+_-]+@[\w\._-]+\.[a-zA-Z]*\:[\w\.\+\!\$\#\^&\*\(\)\{\}\[\]\_\-\@\%\=\§\\\/\'\`\´\?\<\>\;\"\:\|\,\~]+$'


class EmailPasswordPairAnalyzer(RegexAnalyzer):
"""Analyzer to match username:password pairs"""
name = "EmailPasswordPairAnalyzer"

def __init__(self, actions):
super().__init__(actions, _EMAIL_PASSWORD_REGEX)
55 changes: 55 additions & 0 deletions pastepwn/analyzers/tests/emailpasswordpairanalyzer_test.py
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
import unittest
from unittest import mock

from pastepwn.analyzers.emailpasswordpairanalyzer import EmailPasswordPairAnalyzer


class TestWordAnalyzer(unittest.TestCase):
def setUp(self):
self.obj = mock.Mock()

def test_match(self):
analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "This is a Test"
self.assertFalse(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "{a: 'b'}"
self.assertFalse(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = ""
self.assertFalse(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "\t\n"
self.assertFalse(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "\n\n"
self.assertFalse(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "estocanam2@gmail.com:Firebird1@"
self.assertTrue(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "test+test@gmail.com:abcd"
self.assertTrue(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "estocanam2@gmail.com:aq12ws"
self.assertTrue(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "estocanam2@apple.com:Fireb§"
self.assertTrue(analyzer.match(self.obj))

analyzer = EmailPasswordPairAnalyzer(None)
self.obj.body = "g@bb.com:Firebird1@"
self.assertTrue(analyzer.match(self.obj))


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

0 comments on commit f0af9cb

Please sign in to comment.