139 lines
6.9 KiB
Python
139 lines
6.9 KiB
Python
import unittest
|
|
|
|
from collectionparser.parser import parseline as p
|
|
from collectionparser.splitter import get_output_file
|
|
from collectionparser.utils import PasswordType
|
|
|
|
|
|
class ParserTest(unittest.TestCase):
|
|
def test_parse_1(self):
|
|
self.assertIsNotNone(p("[email protected]:123"))
|
|
self.assertIsNotNone(p("hello@@gmail.com:123"))
|
|
self.assertIsNotNone(p("hello @ gmail.com:123"))
|
|
self.assertIsNotNone(p("hello @@ gmail.com:123"))
|
|
self.assertIsNotNone(p("hello @@ gmail.com:123:"))
|
|
self.assertIsNone(p("[email protected]:"))
|
|
self.assertIsNotNone(p("[email protected] 2296"))
|
|
self.assertIsNotNone(p("hello @@ gmail.com,123"))
|
|
self.assertIsNotNone(p("123,hello @@ gmail.com"))
|
|
self.assertIsNone(p("[email protected]"))
|
|
self.assertIsNone(p("[email protected]:?????? ??? ?????"))
|
|
self.assertIsNone(
|
|
p("[email protected]:85.242.201.81,felix")
|
|
)
|
|
self.assertIsNone(
|
|
p("[email protected]:125.26.106.158,nopparat")
|
|
)
|
|
self.assertIsNone(
|
|
p(
|
|
"[email protected]:INSERT INTO `users"
|
|
"`(`id`, `verify`, `username`, `email`, `password"
|
|
)
|
|
)
|
|
self.assertIsNotNone(p("[email protected]:Login"))
|
|
self.assertIsNotNone(p("[email protected] ilovebois3"))
|
|
self.assertIsNotNone(p("[email protected] atohiyamamot"))
|
|
self.assertIsNotNone(p("[email protected]@hotmail.com:8765432f"))
|
|
self.assertIsNotNone(p("neanta,[email protected],jp:123"))
|
|
self.assertIsNotNone(p("iemongozalu@gmail@com mizo1210"))
|
|
self.assertIsNotNone(p("[email protected]@hotmail.com:sayonara"))
|
|
self.assertIsNone(p("iemongozalu@gmail@com:"))
|
|
self.assertIsNone(p("iemongozalu@gmail@com,"))
|
|
self.assertIsNotNone(p("[email protected] chi chi 123"))
|
|
self.assertIsNotNone(p("[email protected]@34589@@@@@@:19820429"))
|
|
self.assertIsNotNone(p("[email protected]@33584@@@@@@ 03260702"))
|
|
|
|
self.assertIsNotNone(p("<[email protected]:sedagirl"))
|
|
self.assertIsNotNone(p("<[email protected]>:<phoenix>"))
|
|
self.assertIsNotNone(p("[email protected]< gorillague"))
|
|
self.assertIsNone(p("</td>@bk.ru:peng7788525"))
|
|
self.assertIsNone(p("<admin/>@mail.ru:andrew123"))
|
|
self.assertIsNone(p("<i>test</i>@bk.ru:lippens"))
|
|
self.assertIsNone(p("ESSENTIALWAY"))
|
|
self.assertIsNone(p("ESTARRON-ESPINOSA"))
|
|
self.assertIsNone(p("ERLONMIRANDA:sha98ne"))
|
|
# No '@' and no '%40' -> cannot yield a pair, must stay None.
|
|
self.assertIsNone(p("no at sign at all"))
|
|
self.assertIsNone(p("plain text line:with:colons"))
|
|
self.assertIsNotNone(p("user%40domain.com:password")) # %40 still becomes '@'
|
|
self.assertIsNotNone(
|
|
p("[email protected]:[email protected]:victory")
|
|
)
|
|
self.assertIsNotNone(p("[email protected];;shanmuga6"))
|
|
self.assertIsNotNone(p("[email protected]::shanmuga6"))
|
|
self.assertIsNotNone(p("[email protected]::hell@"))
|
|
self.assertIsNotNone(p("[email protected]::hell@:"))
|
|
self.assertIsNotNone(p("Aliulfat [email protected]:4849040"))
|
|
self.assertIsNotNone(p("harry gill@ yaho.com:7087096771"))
|
|
self.assertIsNotNone(p("shaheen .jafri @gmail.com:destinyuntold"))
|
|
self.assertIsNotNone(p("mail@ottino snc.it:04921540011"))
|
|
self.assertIsNone(p("sssssssandhya@gmail.:puleyar1"))
|
|
|
|
self.assertIsNotNone(p("cjywzy%40eyou.com:Aebdd797"))
|
|
self.assertIsNotNone(p("finanza.rapido2013%40yahoo.it:123456"))
|
|
self.assertIsNotNone(p("habitacasa3%40yahoo.it:cesira89"))
|
|
self.assertIsNotNone(p("harry gill@ yaho.com:7087096771"))
|
|
self.assertIsNone(p("uwe kopka <[email protected]>:biochemie"))
|
|
|
|
# multi-line.
|
|
self.assertIsNotNone(p("INLOVE12:::1920-05-02:[email protected]:INLOVE12"))
|
|
self.assertIsNotNone(
|
|
p("Nicesweetboobs:1983-10-05:[email protected]:ilovekiss")
|
|
)
|
|
self.assertIsNotNone(
|
|
p("[email protected]:[email protected];97tata1")
|
|
)
|
|
|
|
multi_lines = [
|
|
"[email protected];[email protected]:CAROLINAPIANTA",
|
|
"Nicesweetboobs:1983-10-05:[email protected]:ilovekiss",
|
|
"190.40.252.191,XabelciberX,[email protected],gatita9685567",
|
|
"201.245.164.50,andres vergara,[email protected],barcelona10",
|
|
"65.94.11.229,stephane,[email protected],ste264",
|
|
"INLOVE12:::1920-05-02:[email protected]:INLOVE12",
|
|
"agaliha84:::1969-07-02:[email protected]:agaliha84",
|
|
"happy8360:::1963-09-12:[email protected]:jdj407",
|
|
"tinkertailor99:1947-10-12:[email protected]:77880577",
|
|
"Cash5178:1970-11-06:[email protected]:hulk1234",
|
|
"Creecher0275:1972-04-22:[email protected]:complete",
|
|
"[email protected]:[email protected];97tata1",
|
|
"[email protected]:[email protected];zwezda",
|
|
"SavvySummer:1973-03-17:[email protected]:sunshine0699",
|
|
"RaWRrr:1990-12-02:[email protected]:nitsua",
|
|
"[email protected];[email protected]:CAROLINAPIANTA",
|
|
"[email protected];[email protected]:RRAHOTEL",
|
|
"silent4463:1980-10-14:[email protected]:salinas",
|
|
]
|
|
|
|
for multi_line in multi_lines:
|
|
self.assertIsNotNone(p(multi_line))
|
|
|
|
self.assertIsNone(
|
|
p(
|
|
"300396 matelymaly [email protected] 222.155.173.78 "
|
|
"3d2c5414a041f518b03b750e62e4ebc3:Nhc"
|
|
)
|
|
)
|
|
# 32-char hex is a hash, not junk: kept (typed) so `crack` can attack it.
|
|
hashed = p(
|
|
"05-02-2012;5721869;[email protected]:f02368945726d5fc2a14eb576f7276c0"
|
|
)
|
|
self.assertIsNotNone(hashed)
|
|
self.assertEqual(PasswordType.MD5, hashed[2])
|
|
self.assertIsNotNone(p("[email protected]::g1u3ck"))
|
|
self.assertIsNotNone(p("[email protected]:[email protected]:2904198"))
|
|
self.assertIsNotNone(p("sanda [email protected]:vasafultv"))
|
|
self.assertIsNone(p("jsjjd.@Com.:love melon"))
|
|
|
|
def test_parse_2(self):
|
|
self.assertEqual("j/o/s", get_output_file("[email protected]"))
|
|
self.assertEqual("c/e/o", get_output_file("[email protected]"))
|
|
self.assertEqual("x/symbols", get_output_file("[email protected]"))
|
|
self.assertEqual("x/a/symbols", get_output_file("[email protected]"))
|
|
self.assertEqual("x/symbols", get_output_file("[email protected]"))
|
|
self.assertEqual("k/e/v", get_output_file("[email protected]"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|