forked from smicallef/spiderfoot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sfp_creditcard.py
72 lines (55 loc) · 2.24 KB
/
sfp_creditcard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# -*- coding: utf-8 -*-
# -------------------------------------------------------------------------------
# Name: sfp_creditcard
# Purpose: SpiderFoot plug-in for scanning retrieved content by other
# modules (such as sfp_spider) and identifying credit card numbers.
#
# Author: Krishnasis Mandal <krishnasis@hotmail.com>
#
# Created: 21/04/2020
# Copyright: (c) Steve Micallef
# Licence: MIT
# -------------------------------------------------------------------------------
from spiderfoot import SpiderFootEvent, SpiderFootHelpers, SpiderFootPlugin
class sfp_creditcard(SpiderFootPlugin):
meta = {
'name': "Credit Card Number Extractor",
'summary': "Identify Credit Card Numbers in any data",
'flags': ["errorprone"],
'useCases': ["Footprint", "Investigate", "Passive"],
'categories': ["Content Analysis"]
}
opts = {
}
optdescs = {
}
results = None
def setup(self, sfc, userOpts=dict()):
self.sf = sfc
self.results = self.tempStorage()
# Override datasource for sfp_creditcard module
self.__dataSource__ = "Target Website"
for opt in list(userOpts.keys()):
self.opts[opt] = userOpts[opt]
# What events is this module interested in for input
def watchedEvents(self):
return ["DARKNET_MENTION_CONTENT", "LEAKSITE_CONTENT"]
# What events this module produces
def producedEvents(self):
return ["CREDIT_CARD_NUMBER"]
# Handle events sent to this module
def handleEvent(self, event):
eventName = event.eventType
srcModuleName = event.module
eventData = event.data
self.debug(f"Received event, {eventName}, from {srcModuleName}")
creditCards = SpiderFootHelpers.extractCreditCardsFromText(eventData)
for creditCard in set(creditCards):
self.info(f"Found credit card number: {creditCard}")
evt = SpiderFootEvent("CREDIT_CARD_NUMBER", creditCard, self.__name__, event)
if event.moduleDataSource:
evt.moduleDataSource = event.moduleDataSource
else:
evt.moduleDataSource = "Unknown"
self.notifyListeners(evt)
# End of sfp_creditcard class