Skip to content

Commit 93c6c96

Browse files
authored
[REF] main: refactor the entry function to make it more readable
2 parents 53afa55 + c1fcde3 commit 93c6c96

File tree

3 files changed

+32
-43
lines changed

3 files changed

+32
-43
lines changed

arjun/__main__.py

+15-31
Original file line numberDiff line numberDiff line change
@@ -182,51 +182,35 @@ def initialize(request, wordlist, single_url=False):
182182

183183

184184
def main():
185-
request = prepare_requests(args)
185+
requests = prepare_requests(args)
186186

187187
final_result = {}
188+
is_single = False if args.import_file else True
188189

189190
try:
190-
if type(request) == dict:
191-
# in case of a single target
192-
mem.var['kill'] = False
191+
mem.var['kill'] = False
192+
count = 0
193+
for request in requests:
193194
url = request['url']
194-
these_params = initialize(request, wordlist, single_url=True)
195+
these_params = initialize(request, wordlist, single_url=is_single)
196+
count += 1
197+
mem.var['kill'] = False
198+
mem.var['bad_req_count'] = 0
199+
print('%s Scanning %d/%d: %s' % (run, count, len(requests), url))
195200
if these_params == 'skipped':
196201
print('%s Skipped %s due to errors' % (bad, url))
197202
elif these_params:
198203
final_result[url] = {}
199204
final_result[url]['params'] = these_params
200205
final_result[url]['method'] = request['method']
201206
final_result[url]['headers'] = request['headers']
202-
print('%s Parameters found: %s' % (good, ', '.join(final_result[url]['params'])))
203207
exporter(final_result)
208+
print('%s Parameters found: %s\n' % (good, ', '.join(final_result[url]['params'])))
209+
if not mem.var['json_file']:
210+
final_result = {}
211+
continue
204212
else:
205-
print('%s No parameters were discovered.' % info)
206-
elif type(request) == list:
207-
# in case of multiple targets
208-
count = 0
209-
for each in request:
210-
count += 1
211-
url = each['url']
212-
mem.var['kill'] = False
213-
mem.var['bad_req_count'] = 0
214-
print('%s Scanning %d/%d: %s' % (run, count, len(request), url))
215-
these_params = initialize(each, list(wordlist))
216-
if these_params == 'skipped':
217-
print('%s Skipped %s due to errors' % (bad, url))
218-
elif these_params:
219-
final_result[url] = {}
220-
final_result[url]['params'] = these_params
221-
final_result[url]['method'] = each['method']
222-
final_result[url]['headers'] = each['headers']
223-
exporter(final_result)
224-
print('%s Parameters found: %s\n' % (good, ', '.join(final_result[url]['params'])))
225-
if not mem.var['json_file']:
226-
final_result = {}
227-
continue
228-
else:
229-
print('%s No parameters were discovered.\n' % info)
213+
print('%s No parameters were discovered.\n' % info)
230214
except KeyboardInterrupt:
231215
exit()
232216

arjun/core/importer.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,11 @@ def urls_import(path, method, headers, include):
9595
def request_import(path):
9696
"""
9797
imports request from a raw request file
98-
returns dict
98+
returns list
9999
"""
100-
return parse_request(reader(path))
100+
result = []
101+
result.append(parse_request(reader(path)))
102+
return result
101103

102104

103105
def importer(path, method, headers, include):
@@ -112,4 +114,4 @@ def importer(path, method, headers, include):
112114
return urls_import(path, method, headers, include)
113115
elif line.startswith(('GET', 'POST')):
114116
return request_import(path)
115-
return 'unknown'
117+
return []

arjun/core/utils.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def fetch_params(host):
248248
def prepare_requests(args):
249249
"""
250250
creates a list of request objects used by Arjun from targets given by user
251-
returns list (of targs)
251+
returns list (of targets)
252252
"""
253253
headers = {
254254
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0',
@@ -258,6 +258,7 @@ def prepare_requests(args):
258258
'Connection': 'close',
259259
'Upgrade-Insecure-Requests': '1'
260260
}
261+
result = []
261262
if type(args.headers) == str:
262263
headers = extract_headers(args.headers)
263264
elif args.headers:
@@ -266,15 +267,17 @@ def prepare_requests(args):
266267
headers['Content-type'] = 'application/json'
267268
if args.url:
268269
params = get_params(args.include)
269-
return {
270-
'url': args.url,
271-
'method': mem.var['method'],
272-
'headers': headers,
273-
'include': params
274-
}
270+
result.append(
271+
{
272+
'url': args.url,
273+
'method': mem.var['method'],
274+
'headers': headers,
275+
'include': params
276+
}
277+
)
275278
elif args.import_file:
276-
return importer(args.import_file, mem.var['method'], headers, args.include)
277-
return []
279+
result = importer(args.import_file, mem.var['method'], headers, args.include)
280+
return result
278281

279282

280283
def nullify(*args, **kwargs):

0 commit comments

Comments
 (0)