MCPcopy Create free account
hub / github.com/AutoRecon/AutoRecon / AutoRecon

Class AutoRecon

autorecon/plugins.py:223–377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

221 super().__init__()
222
223class AutoRecon(object):
224
225 def __init__(self):
226 self.pending_targets = []
227 self.scanning_targets = []
228 self.completed_targets = []
229 self.plugins = {}
230 self.__slug_regex = re.compile('^[a-z0-9\-]+$')
231 self.plugin_types = {'port':[], 'service':[], 'report':[]}
232 self.port_scan_semaphore = None
233 self.service_scan_semaphore = None
234 self.argparse = None
235 self.argparse_group = None
236 self.args = None
237 self.missing_services = []
238 self.taglist = []
239 self.tags = []
240 self.excluded_tags = []
241 self.patterns = []
242 self.errors = False
243 self.lock = asyncio.Lock()
244 self.load_slug = None
245 self.load_module = None
246
247 def add_argument(self, plugin, name, **kwargs):
248 # TODO: make sure name is simple.
249 name = '--' + plugin.slug + '.' + slugify(name)
250
251 if self.argparse_group is None:
252 self.argparse_group = self.argparse.add_argument_group('plugin arguments', description='These are optional arguments for certain plugins.')
253 self.argparse_group.add_argument(name, **kwargs)
254
255 def extract_service(self, line, regex):
256 if regex is None:
257 regex = '^(?P<port>\d+)\/(?P<protocol>(tcp|udp))(.*)open(\s*)(?P<service>[\w\-\/]+)(\s*)(.*)$'
258 match = re.search(regex, line)
259 if match:
260 protocol = match.group('protocol').lower()
261 port = int(match.group('port'))
262 service = match.group('service')
263 secure = True if 'ssl' in service or 'tls' in service else False
264
265 if service.startswith('ssl/') or service.startswith('tls/'):
266 service = service[4:]
267
268 return Service(protocol, port, service, secure)
269 else:
270 return None
271
272 async def extract_services(self, stream, regex):
273 if not isinstance(stream, CommandStreamReader):
274 print('Error: extract_services must be passed an instance of a CommandStreamReader.')
275 sys.exit(1)
276
277 services = []
278 while True:
279 line = await stream.readline()
280 if line is not None:

Callers 1

main.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected