- ID scansione:
- 20f71eb4-a927-4478-85ec-6087d75a7ccfFatto
- URL inviato:
- https://snote.io/
- Report terminato:
Link · 0 trovati
I link in uscita identificati dalla pagina
Variabili JavaScript · 21 trovate
Le variabili JavaScript globali caricate sull'oggetto finestra di una pagina sono variabili dichiarate all'esterno delle funzioni e accessibili da qualsiasi punto del codice nell'ambito corrente
Nome | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
sjcl | object |
t | function |
u | function |
A | function |
C | function |
y | function |
z | function |
Messaggi di log della console · 1 trovati
Messaggi registrati nella console Web
Tipo | Categoria | Log |
---|---|---|
verbose | dom |
|
HTML
Il corpo HTML non elaborato della pagina
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta name="description" content="Securely share private information by creating an encrypted text note with a one-time link that will self-destruct after being read by the recipient. No registration required, ad-free service.">
<!-- <link rel="icon" href="../../favicon.ico"> -->
<meta name="yandex-verification" content="1885ae432146caac">
<title>End-to-End Encrypted Self-Destructing Note</title>
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/css/bootstrap-switch.min.css" rel="stylesheet">
<!-- <link href="/static/css/sweetalert.css" rel="stylesheet"> -->
<!-- <link href="/static/css/style.css" rel="stylesheet"> -->
<style>
body
{
padding-top: 20px;
padding-bottom: 20px;
}
.navbar
{
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/"><strong>S</strong>Note</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="/">Create Note</a></li>
<li><a href="/faq">FAQ</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container-fluid -->
</nav>
<noscript>
<div class="alert alert-danger" role="alert">
<strong>JavaScript</strong> is required for using the services of this website.
</div>
</noscript>
<div id="alert_place"></div>
<div id="note_form">
<div class="form-group">
<textarea id="note" class="form-control" rows="15" placeholder="Enter or paste the text you want to share and press the button below. It will be securely end-to-end encrypted and stored on our servers. You will get a sharable one-time link, that can be visited one time only, after that it will be instantly erased from our servers. This tool is handy for sharing credentials over insecure channels (i.e., chat or email)."></textarea>
</div>
<div class="panel panel-default" id="options_block" style="display:none">
<div class="panel-heading">
<h3 class="panel-title">Advanced Options</h3>
</div>
<div class="panel-body">
<div class="form-group">
<label for="note_password">Custom Encryption Password</label>
<input type="password" class="form-control" id="custom_password" placeholder="Password" style="width:auto" autocomplete="off">
<span class="help-block">Choose a strong password that will be used for note encryption. The receiver must know this password to read the note.</span>
</div>
<!-- <div class="form-group">
<label for="view_count_limit">Note View Count Limit</label>
<input type="number" class="form-control" id="view_count_limit" value="1" min="1" max="100" style="width:auto">
<span class="help-block">Choose when your note will be deleted (max. 100 views limit). By default the note will be deleted after the first read.</span>
</div> -->
<div class="form-group">
<label for="note_expiration">Note Expiration Time</label>
<select id="note_expiration" class="form-control" style="width:auto">
<option selected="">Disabled</option>
<option value="60">1 minute</option>
<option value="300">5 minutes</option>
<option value="1800">30 minutes</option>
<option value="3600">1 hour</option>
<option value="21600">6 hours</option>
<option value="86400">1 day</option>
<option value="604800">1 week</option>
<option value="2592000">1 month</option>
</select>
<span class="help-block">Note will be deleted if not read within the specific time frame. Note will be deleted after the first read anyways.</span>
</div>
<div class="form-group">
<div class="bootstrap-switch bootstrap-switch-wrapper bootstrap-switch-off bootstrap-switch-mini bootstrap-switch-id-paranoid_mode_switch"><div class="bootstrap-switch-container"><span class="bootstrap-switch-handle-on bootstrap-switch-primary">ON</span><span class="bootstrap-switch-label"> </span><span class="bootstrap-switch-handle-off bootstrap-switch-default">OFF</span><input type="checkbox" id="paranoid_mode_switch" class="switchbox" data-size="mini"></div></div>
<label for="paranoid_mode_switch">Paranoid Encryption Mode</label>
<span class="help-block">Extend AES encryption key to 256 bit, number of PBKDF2 iterations to 1024, length of password to 32 symbols, length of note ID to 12 symbols. Such mode is not necessary, because even without it, note is encrypted secure enough (AES 128 bit).</span>
</div>
<div class="form-group">
<div class="bootstrap-switch bootstrap-switch-wrapper bootstrap-switch-off bootstrap-switch-mini bootstrap-switch-id-readable_id_switch"><div class="bootstrap-switch-container"><span class="bootstrap-switch-handle-on bootstrap-switch-primary">ON</span><span class="bootstrap-switch-label"> </span><span class="bootstrap-switch-handle-off bootstrap-switch-default">OFF</span><input type="checkbox" id="readable_id_switch" class="switchbox" data-size="mini"></div></div>
<label for="readable_id_switch">Human Readable Link</label>
<span class="help-block">Generate human-read note URL. This is comfortable to voice or reproduce over devices. Such option is useful if complied with Custom Encryption Password.</span>
</div>
<div class="form-group">
<div class="bootstrap-switch bootstrap-switch-wrapper bootstrap-switch-on bootstrap-switch-mini bootstrap-switch-id-compression_switch"><div class="bootstrap-switch-container"><span class="bootstrap-switch-handle-on bootstrap-switch-primary">ON</span><span class="bootstrap-switch-label"> </span><span class="bootstrap-switch-handle-off bootstrap-switch-default">OFF</span><input type="checkbox" id="compression_switch" checked="" class="switchbox" data-size="mini"></div></div>
<label for="compression_switch">Note Compression</label>
<span class="help-block">Compress the note before encryption. This can greatly increase note loading speed with big text size and slow-speed internet.</span>
</div>
<div class="form-group">
<div class="bootstrap-switch bootstrap-switch-wrapper bootstrap-switch-off bootstrap-switch-mini bootstrap-switch-id-prevent_copy_switch"><div class="bootstrap-switch-container"><span class="bootstrap-switch-handle-on bootstrap-switch-primary">ON</span><span class="bootstrap-switch-label"> </span><span class="bootstrap-switch-handle-off bootstrap-switch-default">OFF</span><input type="checkbox" id="prevent_copy_switch" class="switchbox" data-size="mini"></div></div>
<label for="prevent_copy_switch">Copy Protection</label>
<span class="help-block">Protect note content from copying to clipboard or saving to file by recipient.</span>
</div>
</div>
</div>
<div class="form-group text-center visible-md-block visible-lg-block visible-sm-block">
<button id="save_btn" type="button" class="btn btn-primary btn-lg" data-loading-text="Processing..."><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Encrypt and Save</button>
<button id="options_btn" type="button" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-collapse-down" aria-hidden="true"></span> Advanced Options</button>
</div>
<div class="form-group text-center visible-xs-block">
<button id="save_btn_m" type="button" class="btn btn-primary btn-lg btn-block" data-loading-text="Processing..."><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Encrypt and Save</button>
<button id="options_btn_m" type="button" class="btn btn-default btn-lg btn-block"><span class="glyphicon glyphicon-collapse-down" aria-hidden="true"></span> Advanced Options</button>
</div>
</div>
<div id="url_div" class="input-group" style="display:none">
<input id="note_url" type="text" class="form-control input-lg" readonly="readonly">
<span class="input-group-btn">
<button class="btn btn-default btn-lg" type="button" data-clipboard-target="#note_url"><span class="glyphicon glyphicon-copy" aria-hidden="true"></span> Copy</button>
</span>
</div>
</div> <!-- /container -->
<!-- <script src="/static/js/jquery-3.1.1.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/sjcl.min.js"></script>
<script src="/static/js/lz-string.min.js"></script>
<script src="/static/js/clipboard.min.js"></script>
<script src="/static/js/bootstrap-switch.min.js"></script> -->
<script src="/static/js/libs.min.js"></script>
<script>
function show_alert(text, type, flush, dismissable)
{
if(typeof flush === 'undefined')
flush = false;
if(typeof dismissable === 'undefined')
dismissable = true;
var html = '<div class="alert alert-' + type + (dismissable ? ' alert-dismissible' : '') + '" role="alert">' + (dismissable ? '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>' : '') + text + '</div>';
if(flush)
$('#alert_place').html(html);
else
$('#alert_place').append(html);
$('html, body').animate(
{
scrollTop: $('#alert_place').offset().top
}, 'fast');
}
$(document).ready(function()
{
'use strict';
sjcl.random.startCollectors();
$('.switchbox').bootstrapSwitch();
// Some shit for IE
if(navigator.userAgent.indexOf('MSIE 10.0') > 0 || navigator.userAgent.match(/Trident.*rv\:11\./))
$('.switchbox').bootstrapSwitch('destroy');
var clipboard = new Clipboard('.btn');
clipboard.on('success', function(el)
{
var copy_btn_old_label = $(el.trigger).html();
$(el.trigger).html('Copied!');
setTimeout(function()
{
$(el.trigger).html(copy_btn_old_label);
}, 2000);
// el.clearSelection();
});
clipboard.on('error', function(e)
{
var copy_btn_old_label = $(el.trigger).html();
$(el.trigger).html('Failed!');
setTimeout(function()
{
$(el.trigger).html(copy_btn_old_label);
}, 2000);
});
$('#options_btn, #options_btn_m').click(function()
{
$('#options_block').slideToggle('fast', function()
{
$('html, body').animate(
{
scrollTop: $('#options_block').offset().top
}, 'fast');
});
});
$('#save_btn, #save_btn_m').click(function()
{
// TODO: Check for note max size.
var note = $('#note').val();
if(note.length == 0)
{
show_alert('<strong>Validation Error.</strong> Please enter or paste something into the note field...', 'danger', true);
return;
}
var is_paranoid_mode_enabled = $('#paranoid_mode_switch').is(':checked');
var is_readable_id_enabled = $('#readable_id_switch').is(':checked');
var is_compression_enabled = $('#compression_switch').is(':checked');
var is_prevent_copy_enabled = $('#prevent_copy_switch').is(':checked');
var custom_password = $('#custom_password').val();
var generated_password = null;
var generated_password_length = is_paranoid_mode_enabled ? 32 : 16;
var aes_key_size = is_paranoid_mode_enabled ? 256 : 128;
var pbkdf2_iterations = is_paranoid_mode_enabled ? 1024 : 512;
// var view_limit = $('#view_count_limit').val();
// if(view_limit < 1 || view_limit > 100)
// {
// show_alert('<strong>Validation Error.</strong> Please choose a valid note view limit count <strong>from 1 till 100.</strong>).', 'danger', true);
// return;
// }
if(custom_password.length > 0)
{
if(custom_password.length < 8)
{
show_alert('<strong>Validation Error.</strong> Please use a stronger password. Minimal password length is <strong>8</strong> symbols.', 'danger', true);
return;
}
}
else
{
var generated_password = sjcl.codec.base64.fromBits(sjcl.random.randomWords(16, 0));
generated_password = generated_password.replace(/\+|\/|=/g, '');
generated_password = generated_password.slice(0, generated_password_length);
}
var $btn = $('#save_btn, #save_btn_m').button('loading');
$('#note').attr('disabled', 'disabled');
if(is_compression_enabled)
note = LZString.compressToUTF16(note);
try
{
var cipher_data = sjcl.encrypt(generated_password || custom_password, note, {iter: pbkdf2_iterations, ks: aes_key_size, mode: 'ccm'});
}
catch(e)
{
show_alert('<strong>Encryption Error.</strong> Please try again. If this error persists, please contact the site administrator.');
$('#note').removeAttr('disabled');
$btn.button('reset');
return;
}
$('.alert').remove();
$.ajax(
{
method: 'POST',
url: 'save_note',
dataType: 'json',
async: true,
cache: false,
// contentType: 'application/json',
data: {note: cipher_data, compression: is_compression_enabled, prevent_copy: is_prevent_copy_enabled, paranoid_mode: is_paranoid_mode_enabled, readable_id: is_readable_id_enabled, expiration_time: $('#note_expiration').val()},
success: function(data)
{
if(data.status == 'success')
{
var note_url = window.location.protocol + '//' + window.location.host + '/' + data.uid;
if(generated_password)
note_url += '#' + generated_password;
var expiration_text = '';
if(data.expiration_date)
expiration_text = ' Also the note will be expired and removed if not read on ' + data.expiration_date + '. ';
show_alert('<strong>Success.</strong> The note has been successfuly encrypted and saved. Copy the following URL and send to your recipient. The note will be removed from our servers instantly after the first read.' + expiration_text + ' <a href="' + note_url + '" class="alert-link">Or you can read and remove it right now.</a>', 'success', true, false);
$('#note_form').slideUp('fast');
$('#note_url').val(note_url);
// $('#note_url').select();
$('#url_div').show();
$('#note_url').focus();
}
else
{
show_alert('<strong>Error.</strong> ' + data.reason, 'danger', true);
}
},
complete: function()
{
$('#note').removeAttr('disabled');
$btn.button('reset');
},
error: function(jqXHR, textStatus, errorThrown)
{
if(jqXHR.status === 0 || textStatus == 'timeout')
show_alert('<strong>Network Error.</strong> Please check your Internet connection and try again.', 'danger', true);
else if(jqXHR.status == 413)
show_alert('<strong>Request Too Large.</strong> Please reduce size of the Note and/or enable Comperssion in Advanced Settings.', 'danger', true);
else
show_alert('<strong>Something went wrong...</strong> :( Please try again later. If this error persists, please contact the site administrator.', 'danger', true);
// var error_text = 'Status Code: ' + jqXHR.status + ' ; Status Text: ' + jqXHR.responseText + ' ; Error: ' + errorThrown;
}
});
});
});
</script>
</body></html>