Skip to content

Instantly share code, notes, and snippets.

@Ajnasz
Created December 24, 2011 22:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Ajnasz/1518443 to your computer and use it in GitHub Desktop.
Save Ajnasz/1518443 to your computer and use it in GitHub Desktop.
Hackthissite Programming missions Analyze the picture and find the ascii code
var morse = (function () {
var charCodes = {
a: ".-",
b: "-...",
c: "-.-.",
d: "-..",
e: ".",
f: "..-.",
g: "--.",
h: "....",
i: "..",
j: ".---",
k: "-.-",
l: ".-..",
m: "--",
n: "-.",
o: "---",
p: ".--.",
q: "--.-",
r: ".-.",
s: "...",
t: "-",
u: "..-",
v: "...-",
w: ".--",
x: "-..-",
y: "-.--",
z: "--..",
1: ".----",
2: "..---",
3: "...--",
4: "....-",
5: ".....",
6: "-....",
7: "--...",
8: "---..",
9: "----.",
0: "-----"
},
morseCodes = {};
Object.keys(charCodes).forEach(function (key) {
morseCodes[charCodes[key]] = key;
});
return {
toMorse: function (str) {
var output = '';
for (var i = 0, sl = str.length; i < sl; i++) {
if (charCodes[str[i]]) {
output += charCodes[str[i]];
} else {
output += ' ';
}
}
return output;
},
toStr: function (morse) {
var output = [];
var morseArr = morse.split(' ');
console.log(morseArr)
for (var i = 0, sl = morseArr.length; i < sl; i++) {
console.log(morseCodes[morseArr[i]])
output.push(morseCodes[morseArr[i]]);
}
return output.join('');
}
}
}());
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var ctx = canvas.getContext('2d');
var img = document.querySelector('html body div table.siteheader tbody tr td table tbody tr td.sitebuffer table tbody tr td img');
var w = img.width, h = img.height;
ctx.drawImage(img, 0, 0, w, h);
/*
var myData = ctx.createImageData(1, 1);
myData.data[0] = 255;
myData.data[0 + 1] = 255;
myData.data[0 + 2] = 255;
myData.data[0 + 3] = 255;
ctx.putImageData(myData, w - 1, h - 1);
ctx.putImageData(myData, w, h);
ctx.putImageData(myData, w - 1, h);
ctx.putImageData(myData, w, h - 1);
*/
var data = ctx.getImageData(0, 0, w, h);
var dd = data.data;
var coords = {};
var chars = '';
var lastchar = 0;
for (var x = 0, dw = data.height; x < dw; x += 1) {
for (var y = 0; y < data.width; y++) {
if (dd[((x*(data.width*4)) + (y*4)) + 2]) {
if (!coords[x]) {
coords[x] = {};
}
var char = x * 100 + y;
chars += String.fromCharCode(char - lastchar);
lastchar = char;
/*
coords[x][y] = {
red: dd[((x*(data.width*4)) + (y*4)) + 0],
green: dd[((x*(data.width*4)) + (y*4)) + 1],
blue: dd[((x*(data.width*4)) + (y*4)) + 2]
}
*/
}
}
}
document.querySelector('html body div table.siteheader tbody tr td table tbody tr td.sitebuffer table tbody tr td form input').value = morse.toStr(chars.trim());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment