def handleEvent(self, event): eventName = event.eventType srcModuleName = event.module eventData = event.data self.debug(f"Received event, {eventName}, from {srcModuleName}") ibans = SpiderFootHelpers.extractIbansFromText(eventData) for ibanNumber in set(ibans): self.info(f"Found IBAN number: {ibanNumber}") evt = SpiderFootEvent("IBAN_NUMBER", ibanNumber, self.__name__, event) if event.moduleDataSource: evt.moduleDataSource = event.moduleDataSource else: evt.moduleDataSource = "Unknown" self.notifyListeners(evt)
def test_extractIbansFromText_should_return_a_list(self): invalid_types = [None, "", list(), dict()] for invalid_type in invalid_types: with self.subTest(invalid_type=invalid_type): ibans = SpiderFootHelpers.extractIbansFromText(invalid_type) self.assertIsInstance(ibans, list) # Example IBANS from https://www.iban.com/structure ibans = [ "AL35202111090000000001234567", "AD1400080001001234567890", "AT483200000012345864", "AZ96AZEJ00000000001234567890", "BH02CITI00001077181611", "BY86AKBB10100000002966000000", "BE71096123456769", "BA393385804800211234", "BR1500000000000010932840814P2", "BG18RZBB91550123456789", "CR23015108410026012345", "HR1723600001101234565", "CY21002001950000357001234567", "CZ5508000000001234567899", "DK9520000123456789", "DO22ACAU00000000000123456789", "EG800002000156789012345180002", "SV43ACAT00000000000000123123", "EE471000001020145685", "FO9264600123456789", "FI1410093000123458", "FR7630006000011234567890189", "GE60NB0000000123456789", "DE75512108001245126199", "GI04BARC000001234567890", "GR9608100010000001234567890", "GL8964710123456789", "GT20AGRO00000000001234567890", "VA59001123000012345678", "HU93116000060000000012345676", "IS750001121234563108962099", "IQ20CBIQ861800101010500", "IE64IRCE92050112345678", "IL170108000000012612345", "IT60X0542811101000000123456", "JO71CBJO0000000000001234567890", "KZ563190000012344567", "XK051212012345678906", "KW81CBKU0000000000001234560101", "LV97HABA0012345678910", "LB92000700000000123123456123", "LI7408806123456789012", "LT601010012345678901", "LU120010001234567891", "MT31MALT01100000000000000000123", "MR1300020001010000123456753", "MU43BOMM0101123456789101000MUR", "MD21EX000000000001234567", "MC5810096180790123456789085", "ME25505000012345678951", "NL02ABNA0123456789", "MK07200002785123453", "NO8330001234567", "PK36SCBL0000001123456702", "PS92PALS000000000400123456702", "PL10105000997603123456789123", "PT50002700000001234567833", "QA54QNBA000000000000693123456", "RO09BCYP0000001234567890", "LC14BOSL123456789012345678901234", "SM76P0854009812123456789123", "ST23000200000289355710148", "SA4420000001234567891234", "RS35105008123123123173", "SC52BAHL01031234567890123456USD", "SK8975000000000012345671", "SI56192001234567892", "ES7921000813610123456789", "SE7280000810340009783242", "CH5604835012345678009", "TL380010012345678910106", "TN5904018104004942712345", "TR320010009999901234567890", "UA903052992990004149123456789", "AE460090000000123456789", "GB33BUKB20201555555555", "VG21PACG0000000123456789" ] for iban in ibans: with self.subTest(iban=iban): extract_ibans = SpiderFootHelpers.extractIbansFromText(iban) self.assertIsInstance(extract_ibans, list) self.assertIn(iban, extract_ibans) # Invalid IBANs ibans = [ # Invalid country code "ZZ21PACG0000000123456789", # Invalid length for country code "VG123456789012345", # Invalid mod 97 remainder "VG21PACG0000000123456111" ] for iban in ibans: with self.subTest(iban=iban): extract_ibans = SpiderFootHelpers.extractIbansFromText(iban) self.assertIsInstance(extract_ibans, list) self.assertNotIn(iban, extract_ibans)