def register():
hostname = request.args.get('hostname')
master = request.args.get('master')
if not master:
campaign = get_best_campaign()
if not campaign:
return 'No active campaigns', 404
instance = models.FuzzerInstance.create(hostname=hostname)
instance.start_time = time.time()
campaign.fuzzers.append(instance)
campaign.commit()
else:
campaign = models.Campaign.get(id=master)
if not campaign:
return 'Could not find specified campaign', 404
if campaign.fuzzers.filter_by(master=True).first():
return 'Campaign already has a master', 400
instance = models.FuzzerInstance.create(hostname=hostname, master=True)
instance.start_time = time.time()
campaign.fuzzers.append(instance)
campaign.commit()
# avoid all hosts uploading at the same time from reporting at the same time
deviation = random.randint(15, 30)
return jsonify(
id=instance.id,
name=secure_filename(instance.name),
program=campaign.executable_name,
program_args=campaign.executable_args.split(' ') if campaign.executable_args else [], # TODO: add support for spaces
args=campaign.afl_args.split(' ') if campaign.afl_args else [],
campaign_id=campaign.id,
campaign_name=secure_filename(campaign.name),
download=request.host_url[:-1] + url_for('fuzzers.download', campaign_id=campaign.id),
submit=request.host_url[:-1] + url_for('fuzzers.submit', instance_id=instance.id),
submit_crash=request.host_url[:-1] + url_for('fuzzers.submit_crash', instance_id=instance.id),
upload=request.host_url[:-1] + url_for('fuzzers.upload', instance_id=instance.id),
upload_in=current_app.config['UPLOAD_FREQUENCY'] + deviation
)
评论列表
文章目录