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

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

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 Jun-Ryo */

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
Bạn, Nguyễn Văn Nghĩa và người khác

Thông báo
Blog mình đang trong quá trình chỉnh sửa và hoàn thiện template mới nên còn một số chức năng click vào nhưng chưa dùng được. Lưu ý những blog nào đã liên kết với bên mình vui lòng đọc bài này để cập nhật logo blog nhé.
ĐÃ HIỂU