Я могу записать или изменить данные по тегу RFID? [закрытый]

Это более чистый способ, и он будет легче поддерживать методы кодирования и декодирования. Мы храним символы в массиве, где позиция это код. Позволяет использовать для отображения в обоих направлениях.

// Simple array of chars where their index is the 'code'
let lexicon = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "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", "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", "~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", ">", "<", "-", "_", "+", "=", "{", "", "[", "]", "|", ",", ".", "?", "/", "'", '"', "", ";", " "];

// Function to take a string and encode it using a simple map.
const encodeData = (data, lex) => data.split('').map(c => lex.indexOf(c) + 1);
// Decode does the reverse
const decodeData = (data, lex) => data.map(d => lex[d]);

var encryption = [];
var cvalue = 0;
var code = prompt("Type In Encryption Password [Beta Encryptor]");

alert(encodeData(code, lexicon));

function runner() {
  var abc = document.getElementById('input').value;
  encryption = encodeData(abc,lexicon);
  if (encryption.length % 2 === 1) {
    encryption.push(93);
    alert("The Key was Edited Because The Key needs to be even");
  }   
  document.getElementById('runEncryption').innerHTML = encryption.join();
  alert(encryption); //If this was in the loop, it won't work   
}
<html>
<input type="text" id="input">
<button onclick="runner();">Add Text to Encrypt</button>
<br>
<div id="runEncryption"></div>

</html>

Здесь используется оператор переключения (лучше подходит для этого типа теста.)

[ 116]

var encryption = [];
var cvalue = 0;

var code = prompt("Type In Encryption Password [Beta Encryptor]");
var codeLength = code.length * 100;

for (var j = 0; j < code.length; j++) {
  switch (code[j]) {
    case "0":
      value = 0;
      break;
    case "1":
      value = 1;
      break;
    case "2":
      value = 2;
      break;
    case "3":
      value = 3;
      break;
    case "4":
      value = 4;
      break;
    case "5":
      value = 5;
      break;
    case "6":
      value = 6;
      break;
    case "7":
      value = 7;
      break;
    case "8":
      value = 8;
      break;
    case "9":
      value = 9;
      break;
    case "A":
      value = 10;
      break;
    case "B":
      value = 11;
      break;
    case "C":
      value = 12;
      break;
    case "D":
      value = 13;
      break;
    case "E":
      value = 14;
      break;
    case "F":
      value = 15;
      break;
    case "G":
      value = 16;
      break;
    case "H":
      value = 17;
      break;
    case "I":
      value = 18;
      break;
    case "J":
      value = 19;
      break;
    case "K":
      value = 20;
      break;
    case "L":
      value = 21;
      break;
    case "M":
      value = 22;
      break;
    case "N":
      value = 23;
      break;
    case "O":
      value = 24;
      break;
    case "P":
      value = 25;
      break;
    case "Q":
      value = 26;
      break;
    case "R":
      value = 27;
      break;
    case "S":
      value = 28;
      break;
    case "T":
      value = 29;
      break;
    case "U":
      value = 30;
      break;
    case "V":
      value = 31;
      break;
    case "W":
      value = 32;
      break;
    case "X":
      value = 33;
      break;
    case "Y":
      value = 34;
      break;
    case "Z":
      value = 35;
      break;
    case "a":
      value = 36;
      break;
    case "b":
      value = 37;
      break;
    case "c":
      value = 38;
      break;
    case "d":
      value = 39;
      break;
    case "e":
      value = 40;
      break;
    case "f":
      value = 41;
      break;
    case "g":
      value = 42;
      break;
    case "h":
      value = 43;
      break;
    case "i":
      value = 44;
      break;
    case "j":
      value = 45;
      break;
    case "k":
      value = 46;
      break;
    case "l":
      value = 47;
      break;
    case "m":
      value = 48;
      break;
    case "n":
      value = 49;
      break;
    case "o":
      value = 50;
      break;
    case "p":
      value = 51;
      break;
    case "q":
      value = 52;
      break;
    case "r":
      value = 53;
      break;
    case "s":
      value = 54;
      break;
    case "t":
      value = 55;
      break;
    case "u":
      value = 56;
      break;
    case "v":
      value = 57;
      break;
    case "w":
      value = 58;
      break;
    case "x":
      value = 59;
      break;
    case "y":
      value = 60;
      break;
    case "z":
      value = 61;

      break;
    case "~":
      value = 62;
      break;
    case "`":
      value = 63;
      break;
    case "!":
      value = 64;
      break;
    case "@":
      value = 65;
      break;
    case "#":
      value = 66;
      break;
    case "$":
      value = 67;
      break;
    case "%":
      value = 68;
      break;
    case "^":
      value = 69;
      break;
    case "&":
      value = 70;
      break;
    case "*":
      value = 71;
      break;
    case "(":
      value = 72;
      break;
    case ")":
      value = 73;
      break;
    case ">":
      value = 74;
      break;
    case "<":
      value = 75;
      break;
    case "-":
      value = 76;
      break;
    case "_":
      value = 77;
      break;
    case "+":
      value = 78;
      break;
    case "=":
      value = 79;
      break;
    case "{":
      value = 80;
      break;
    case "":
      value = 81;
      break;
    case "[":
      value = 82;
      break;
    case "]":
      value = 83;
      break;
    case "|":
      value = 84;
      break;
    case ",":
      value = 85;
      break;
    case ".":
      value = 86;
      break;
    case "?":
      value = 87;
      break;
    case "/":
      value = 88;
      break;
    case "'":
      value = 89;
      break;
    case '"':
      value = 90;
      break;
    case ":":
      value = 91;
      break;
    case ";":
      value = 92;
      break;
    case " ":
      value = 93;
      break;
      value = 93;
  }

  encryption.push(value);

}



if (encryption.length % 2 === 1) {
encryption.push(93);
alert("The Key was Edited Because The Key needs to be even");
}    

document.write(encryption);




function runner () {
var entext = [];
var p = 0;
var abc = document.getElementById('input');
var ab = abc.length;
    while (p <= ab) {
        entext.push(document.getElementById('input').value[p]);
        document.getElementById('runEncryption').innerHTML = entext[p];
        p++;
    }
alert(ab); //If this was in the loop, it won't work   
}
<html>
<input type="text" id="input">
<button onclick="runner();">Add Text to Encrypt</button>
<br>
<div id="runEncryption"></div>
</html>

28
задан Michael Roland 21 April 2015 в 07:25
поделиться

4 ответа

Стандарты RFID:


  • 125 Khz ( низкочастотный ) теги являются write-once/read-many, и обычно только содержите маленькое ( постоянный ) уникальный идентификационный номер.

  • 13,56 Mhz ( высокочастотный ) теги обычно являются чтением-записью, они могут обычно хранить приблизительно 1 - 2 kilbytes данных в дополнение к их предварительной установке ( постоянный ) число уникального идентификатора.

  • 860-960 Mhz ( ультравысокая частота ) теги обычно являются чтением-записью и могут иметь намного большую мощность хранения информации (я думаю, что 64 КБ являются самым высоким в настоящее время доступным для пассивных тегов) в дополнение к их предварительной установке ( постоянный ) число уникального идентификатора.

[еще 1119] информация


Большинство тегов чтения-записи может быть заблокировано для предотвращения далее записи в определенные блоки данных во внутренней памяти тега при оставлении других блоков разблокированными. Различные производители тега делают свои теги по-другому, все же.

В зависимости от Вашего применения по назначению, Вам, возможно, придется программировать Ваш собственный микроконтроллер для взаимодействия через интерфейс со встроенным модулем чтения-записи RFID с помощью определенного для производителя протокола. Это, конечно, намного более дешево, чем покупка полной единицы чтения-записи RFID, поскольку они могут стоить несколько тысяч долларов. С настраиваемым решением можно создать Вас собственная единица, которая делает конкретно, что Вы хотите всего за 200$.

Ссылки


Игрушки RFID Журнала

RFID (Книга) Веб-сайт

SkyTek - компания-производитель RFID-считывателя (можно купить их продукты через сторонних ритейлеров & оптовые торговцы как Мышелов )

Робототехника Trossen - можно купить теги RFID и читателей (125 Khz & 13.56 Mhz) отсюда, среди прочего

50
ответ дан Kyle Lowry 28 November 2019 в 03:08
поделиться

Я сделал некоторую разработку с Классиком Mifare (ISO 14443A) карты приблизительно 7-8 лет назад. Можно читать и записать во все секторы карты, IIRC, единственные данные, которые Вы не можете изменить, являются порядковым номером. Тогда мы пользовались собственной библиотекой от Philips Semiconductors. Интерфейс команды к карте был довольно подобен ISO 7816-4 (используемый со стандартными Смарт-картами).

я повторно прокомментировал бы, что Вы смотрите платформа OpenPCD , если Вы в разработку.

Это также из интереса относительно криптографических функций в приблизительно карты RFID.

4
ответ дан Jonas Gulle 28 November 2019 в 03:08
поделиться

Некоторые RFID-чипы являются чтением-записью, большинство только для чтения. Можно узнать, только ли микросхема для чтения путем проверки таблицы данных.

2
ответ дан Cody Brocious 28 November 2019 в 03:08
поделиться

Это зависит от типа используемой вами микросхемы, но в наши дни большинство чипов вы можете написать. Это также зависит от того, сколько энергии вы даете вашему RFID-устройству. Чтобы читать, вам не нужно много силы и очень мало прямой видимости. Для того, чтобы вы правы, вам нужны полная проницательность и более глубокая проницательность

0
ответ дан 28 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: