Reworked Data Masking

This commit is contained in:
Merricx 2017-12-09 12:03:09 +07:00
parent 10c326174d
commit 1a3bbe2a7a
3 changed files with 72 additions and 78 deletions

View file

@ -81,7 +81,7 @@ ul {list-style: none;}
.header div#header-menu {
display: block;
min-width: 600px;
min-width: 630px;
overflow: auto;
}
@ -377,7 +377,7 @@ ul {list-style: none;}
height: 400px;
overflow: auto;
margin-right: 20px;
pointer-events: none;
/*pointer-events: none;*/
}
.overlay .box h3 {
@ -959,6 +959,7 @@ noscript div h4 {
.header div#header-menu {
display: none;
margin: 0;
min-width: 100px;
width: 150px;
position: fixed;
top: 60px;

View file

@ -134,7 +134,7 @@
<button id="btn-mask-show-pattern-area" class="toggle">Show</button>
<div class="clear"></div>
<div class="space"></div>
<center><button id="btn-tools-mask" class="toggle">Unmask Data</button></center>
<center><button id="btn-tools-mask" class="toggle">Mask Data</button></center>
</div>
<!-- END DATA UNMASKING TOOLBOX -->
</div>
@ -265,13 +265,17 @@
<h6>Try all possibilities of Format Info Pattern when decoding</h6>
</div>
<div id="tools-unmasking">
<h5>Data Unmasking</h5>
<h6>Analyze QR code with its modules unmasked</h6>
<h5>Data Masking</h5>
<h6>Simulate data masking (XOR) with Mask pattern</h6>
</div>
<div id="tools-pad-recovery">
<h5>Padding Bits Recovery</h5>
<h6>Recover missing bits by placing terminator and padding bits</h6>
</div>
<div id="tools-data-analysis">
<h5>Data Sequence Analysis</h5>
<h6>Analyze data sequence of QR code</h6>
</div>
</div>
<div class="space"></div>
<button onclick="$('#div-tools').hide();">Close</button>
@ -469,6 +473,39 @@
</div>
<!-- END REED-SOLOMON DECODER OVERLAY -->
<!-- START DATA MASKING OVERLAY -->
<div class="overlay hide" id="div-data-masking">
<center>
<div class="box">
<h3>Data Masking</h3>
<div class="space"></div>
<div class="row">
<div class="col">
<h5 class="left">Mask Pattern :</h5>
</div>
<div class="col">
<div class="slider" id="data-masking-slider">
<div data="0">0</div>
<div data="1">1</div>
<div data="2">2</div>
<div data="3">3</div>
<div data="4">4</div>
<div data="5">5</div>
<div data="6">6</div>
<div data="7">7</div>
</div>
</div>
</div>
<div class="clear"></div>
<div class="space"></div>
<button class="left" onclick="$('#div-data-masking').hide();">Close</button>
<button class="right" id="btn-data-masking-apply">Apply</button>
<div class="clear"></div>
</div>
</center>
</div>
<!-- END DATA MASKING OVERLAY -->
<!-- START PADDING BITS RECOVERY OVERLAY -->
<div class="overlay hide" id="div-padding-recovery">
<center>
@ -544,6 +581,7 @@
if(is_mobile) $(".warning").show();
//Detect unsupported HTML features using Modernizr
else if(!Modernizr.canvas || !Modernizr.fileinput || !Modernizr.filereader || !Modernizr.imgcrossorigin || !Modernizr.json || !Modernizr.localstorage)
$(".warning").show().find("h3").html("Please, upgrade your browser to use QRazyBox.<br>Unfortunately, your browser doesn't support some features that used by this tool.");

View file

@ -1,5 +1,5 @@
var VERSION = '0.1.20';
var VERSION = '0.1.24';
var qr_version = 1;
var qr_pixel_size = 15;
@ -174,6 +174,16 @@ function refreshTable(){
}
}
function updateQRArray(new_data){
for(var i=0; i < qr_array.length; i++){
for(var j=0; j < qr_array[i].length; j++){
if(is_data_module[i][j]){
qr_array[i][j] = new_data[i][j];
}
}
}
}
function getInfoBits(){
var result = {ecc:"",mask:-1};
$("#slider-mask div.active").removeClass("active");
@ -872,7 +882,7 @@ $(document).ready(function(){
if(Array.isArray(data)){
$("#div-new").hide();
generateTable(qr_version);
qr_array = Array.prototype.slice.call(data);
updateQRArray(data);
clearHistory();
updateHistory("Load from image");
refreshTable();
@ -1182,33 +1192,22 @@ $(document).ready(function(){
})
$("#tools-unmasking").click(function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
masking_mode = false;
unmask_status = false;
$("#box-tools-masking").hide();
$("#qr-mask-table").html("");
} else {
$(this).addClass("active");
masking_mode = true;
unmask_status = false;
//if($("#qr-result").css == "none" && $("#div-extract").css == "none")
$("#box-tools-masking").show();
$("#btn-tools-mask").removeClass("active");
var mask_pattern = getFormatInfo(qr_array).mask;
$("#mask-pattern").val("Pattern "+mask_pattern);
$("#btn-mask-show-pattern-area").removeClass("active");
}
var current_mask = getFormatInfo(qr_array).mask;
$("#data-masking-slider div[data="+current_mask+"]").addClass("active");
$("#div-data-masking").show();
$("#div-tools").hide();
})
$("#btn-mask-plus").click(function(){
var current_mask = getFormatInfo(qr_array).mask;
if(current_mask == 7)
return;
$("#data-masking-slider div").click(function(){
$("#data-masking-slider div.active").removeClass("active");
$(this).addClass("active");
})
if(unmask_status)
maskDataBits();
$("#btn-data-masking-apply").click(function(){
var mask = $("#data-masking-slider div.active").attr("data");
var ecc = getFormatInfo(qr_array).ecc;
if(ecc == 0)
@ -1219,45 +1218,12 @@ $(document).ready(function(){
ecc = 3;
else if(ecc == 3)
ecc = 2;
var next_mask = parseInt(current_mask) + 1;
qr_format_array = format_information_bits[ecc][next_mask].split("").reverse();
qr_format_array = format_information_bits[ecc][mask].split("").reverse();
saveInfoTable(qr_size);
$("#mask-pattern").val("Pattern "+next_mask);
if($("#btn-mask-show-pattern-area").hasClass("active")){
showMaskPatternArea();
}
if(unmask_status)
maskDataBits();
updateHistory("Data masking");
})
$("#btn-mask-min").click(function(){
var current_mask = getFormatInfo(qr_array).mask;
if(current_mask == 0)
return;
if(unmask_status)
maskDataBits();
var ecc = getFormatInfo(qr_array).ecc;
if(ecc == 0)
ecc = 1;
else if(ecc == 1)
ecc = 0;
else if(ecc == 2)
ecc = 3;
else if(ecc == 3)
ecc = 2;
var prev_mask = parseInt(current_mask) - 1;
qr_format_array = format_information_bits[ecc][prev_mask].split("").reverse();
saveInfoTable(qr_size);
$("#mask-pattern").val("Pattern "+prev_mask);
if($("#btn-mask-show-pattern-area").hasClass("active")){
showMaskPatternArea();
}
if(unmask_status)
maskDataBits();
updateHistory("Data masking");
maskDataBits();
$("#div-data-masking").hide();
})
$("#btn-mask-show-pattern-area").click(function(){
@ -1271,17 +1237,6 @@ $(document).ready(function(){
}
})
$("#btn-tools-mask").click(function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
unmask_status = false;
} else {
$(this).addClass("active");
unmask_status = true;
}
maskDataBits();
})
$("#tools-pad-recovery").click(function(){
recoverPadding();
$("#div-padding-recovery").show();