Chơi game hacker theo cách của hacker/developer

Chơi game hacker theo cách của hacker/developer

mr-robot

Who is Mr.Robot?

Đây là một trò chơi về chủ đề hacker dựa theo bộ phim truyền hình đang hot gần đây là Mr.Robot

URL: http://www.whoismrrobot.com/fsociety/

Dù không quá khó và số màn chơi cũng không nhiều nhưng mỗi màn đều khá thú vị. Bài viết này chỉ là đăng một video về màn chơi mà tôi cho rằng nó là hay nhất.

Đó là màn chơi thứ 3, trong màn này lại chia ra 2 level. Cả 2 level này đều cung cấp cho chúng ta một bàn phím ảo với các phím đã bị thay đổi vị trí (obfuscated keys) so với bàn phím thật ở máy tính của chúng ta.

who-is-mr-robot-obfuscated-keyboard

Mục tiêu của cả 2 level này là chúng ta phải gõ một từ được cung cấp sẵn với các phím được bố trí trên bàn phím ảo.

Sự khác biệt duy nhất giữa 2 level này đó là ở level 2 sẽ nâng cao hơn một chút để tăng tính thử thách, mỗi khi ta nhấn một chữ thì bàn phím sẽ đổi vị trí các phím một lần (thay vì giữ nguyên như level 1).

Chơi theo cách của hacker

Tất nhiên là các bạn có thể chơi theo cách thông thường như một game thủ. Đó là ngồi nhìn từng phím trên bàn phím ảo để tìm xem cái chữ cần gõ tiếp theo nằm ở vị trí nào và lặp đi lặp lại cái thao tác nhàm chán ấy cho đến khi qua được level.

Tuy nhiên, đã là một game về chủ đề hacker thì chơi theo cách thông thường thật không thú vị. Hãy tự thử thách bản thân hơn xem sao? Chúng ta hãy sử dụng code để chơi giống như viết exploit (mã khai thác) vậy.

Mời các bạn cùng theo dõi video dưới đây để xem tôi đã vượt qua level này như thế nào!



Mã khai thác

Đây là đoạn mã tôi viết trong video để tự động tìm các phím cần nhấn trong bàn phím thật, chia sẻ cho bạn nào muốn tham khảo.

/* Coded by Juno_okyo */

function getRealKey(char) {
 var keyMap = keys = '',
  index = 0,
  el = document.getElementsByClassName('key char');

 keyMap = 'qwertyuiop';
 keyMap += 'asdfghjkl';
 keyMap += 'zxcvbnm';

 for (i = 0; i < el.length; i++) {
  keys += el[i].textContent;
 }

 index = keys.indexOf(char);

 return keyMap.toUpperCase()[index];
}

function payload() {
 var txt = 'CORRUPTION'.split(''),
  result = '';

 for (i in txt) {
  result += getRealKey(txt[i]) + ' ';
 }

 return result;
}


Xem trên GitHub: https://gist.github.com/J2TeaM/a97feee378c4257a417c