myaso 0 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба Доброго времени. Как расшифровать пришедшее смс? текстовый вариант(не PDU). Получаю смс вида: 0412043004480020043D043E043C04350440002004420435043B04350444043E043D0430003A002B0037003900310036003200380032003900 (удалил несколько последних символов) Нашел только 1 сайт, который бы расшифровывал сообщение как нужно - http://crypt-online.ru/crypts/text2hex/ Искал декодеры из hex в текст, но они все криво отображают. В идеале мне нужен код на С#, который бы расшифровывал сообщение в читающийся вид. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladivolt 0 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба Ваш номер телефона:+7916282900 UniCode https://www.branah.com/unicode-converter Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 66 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба 10 минут назад, myaso сказал: Нашел только 1 сайт, который бы расшифровывал сообщение как нужно - http://crypt-online.ru/crypts/text2hex/ Сохранить эту страницу полностью на диск, там будет файл hex.js в котором весь код кодировки-декодировки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
myaso 0 3 февраля, 2020 Опубликовано 3 февраля, 2020 (изменено) · Жалоба 20 минут назад, Vladivolt сказал: Ваш номер телефона:+7916282900 UniCode https://www.branah.com/unicode-converter Т.е. получаем сообщения в кодировке UTF16 и он шифруется в юникод? А из юникода удаляются \u символы и получается текст. Хорошо бы найти такой код на C# :) Не владею языками программирования... 17 минут назад, HardEgor сказал: Сохранить эту страницу полностью на диск, там будет файл hex.js в котором весь код кодировки-декодировки. Благодарю, но языками програмирования не владею и читать даже не могу. Только понимаю что должно быть utf16. Т.е. из 8 функций в коде А какой именно фнкцией удаляется /u символ и utf16 - не знаю. Если я правильно понял в каком виде приходят смс... function trim_text(text) { var result = ""; var i = 0; if (text.length > 2 && text[0] == "0" && text[1] == "x") i = 2; for (; i < text.length; i++) { if (text != " " && text != "\n" && text != "\r" && text != "\t") result += text; } return result; } function text2hex_ascii(text) { var ch = 0; var result = ""; for (var i = 0; i < text.length; i++) { ch = text.charCodeAt(i); if (ch > 0xFF) ch -= 0x350; ch = ch.toString(16); while (ch.length < 2) ch = "0" + ch; result += ch; } return result; } function hex2text_ascii(hex) { var ch = 0; var result = ""; hex = trim_text(hex); for (var i = 2; i <= hex.length; i += 2) { ch = parseInt(hex.substring(i - 2, i), 16); if (ch >= 128) ch += 0x350; ch = String.fromCharCode("0x" + ch.toString(16)); result += ch; } return result; } function text2hex_utf8(text) { var ch = 0; var result = ""; for (var i = 0; i < text.length; i++) { ch = text.charCodeAt(i).toString(16); while (ch.length < 4) ch = "0" + ch; result += ch; } return result; } function hex2text_utf8(hex) { var ch = 0; var result = ""; hex = trim_text(hex); for (var i = 4; i <= hex.length; i += 4) { ch = parseInt(hex.substring(i - 4, i), 16); ch = String.fromCharCode("0x" + ch.toString(16)); result += ch; } return result; } function escapeToUtf16(str) { var escaped = '' for (var i = 0; i < str.length; ++i) { var hex = str.charCodeAt(i).toString(16).toUpperCase(); escaped += "\\u" + "0000".substr(hex.length) + hex; } return escaped; } function unescapeFromUtf16(str) { var utf16_codes = convertEscapedCodesToCodes(str, "\\u", 16, 16); return convertUtf16CodesToString(utf16_codes); } function convertEscapedCodesToCodes(str, prefix, base, num_bits) { var parts = str.split(prefix); parts.shift(); // Trim the first element. var codes = []; var max = Math.pow(2, num_bits); for (var i = 0; i < parts.length; ++i) { var code = parseInt(parts, base); if (code >= 0 && code < max) { codes.push(code); } else { // Malformed code ignored. } } return codes; } function convertUtf16CodesToString(utf16_codes) { var unescaped = ''; for (var i = 0; i < utf16_codes.length; ++i) { unescaped += String.fromCharCode(utf16_codes); } return unescaped; } function trim_text(text) { var result = ""; var i = 0; if (text.length > 2 && text[0] == "0" && text[1] == "x") i = 2; for (; i < text.length; i++) { if (text[i] != " " && text[i] != "\n" && text[i] != "\r" && text[i] != "\t") result += text[i]; } return result; } function text2hex_ascii(text) { var ch = 0; var result = ""; for (var i = 0; i < text.length; i++) { ch = text.charCodeAt(i); if (ch > 0xFF) ch -= 0x350; ch = ch.toString(16); while (ch.length < 2) ch = "0" + ch; result += ch; } return result; } function hex2text_ascii(hex) { var ch = 0; var result = ""; hex = trim_text(hex); for (var i = 2; i <= hex.length; i += 2) { ch = parseInt(hex.substring(i - 2, i), 16); if (ch >= 128) ch += 0x350; ch = String.fromCharCode("0x" + ch.toString(16)); result += ch; } return result; } function text2hex_utf8(text) { var ch = 0; var result = ""; for (var i = 0; i < text.length; i++) { ch = text.charCodeAt(i).toString(16); while (ch.length < 4) ch = "0" + ch; result += ch; } return result; } function hex2text_utf8(hex) { var ch = 0; var result = ""; hex = trim_text(hex); for (var i = 4; i <= hex.length; i += 4) { ch = parseInt(hex.substring(i - 4, i), 16); ch = String.fromCharCode("0x" + ch.toString(16)); result += ch; } return result; } function escapeToUtf16(str) { var escaped = '' for (var i = 0; i < str.length; ++i) { var hex = str.charCodeAt(i).toString(16).toUpperCase(); escaped += "\\u" + "0000".substr(hex.length) + hex; } return escaped; } function unescapeFromUtf16(str) { var utf16_codes = convertEscapedCodesToCodes(str, "\\u", 16, 16); return convertUtf16CodesToString(utf16_codes); } function convertEscapedCodesToCodes(str, prefix, base, num_bits) { var parts = str.split(prefix); parts.shift(); // Trim the first element. var codes = []; var max = Math.pow(2, num_bits); for (var i = 0; i < parts.length; ++i) { var code = parseInt(parts[i], base); if (code >= 0 && code < max) { codes.push(code); } else { // Malformed code ignored. } } return codes; } function convertUtf16CodesToString(utf16_codes) { var unescaped = ''; for (var i = 0; i < utf16_codes.length; ++i) { unescaped += String.fromCharCode(utf16_codes[i]); } return unescaped; } Изменено 3 февраля, 2020 пользователем myaso Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladivolt 0 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба 2 часа назад, myaso сказал: Получаю смс 1 час назад, myaso сказал: Не владею языками программирования... Куда получаем не владея языками, какие технические средства? Цели и задачи? Прошу меня понять правильно, но ответив одним словом "UniCode" на вопрос "В какой кодировке?" я посчитал свою миссию в этом топике исполненной. p.s. \u - это не обязательный элемент, одна из форм записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
myaso 0 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба 9 минут назад, Vladivolt сказал: Куда получаем не владея языками, какие технические средства? Цели и задачи? Прошу меня понять правильно, но ответив одним словом "UniCode" на вопрос "В какой кодировке?" я посчитал свою миссию в этом топике исполненной. p.s. \u - это не обязательный элемент, одна из форм записи. Цель простая - расшифровать текст. Смс получается посредством AT команды(мобильная связь). Вас понял, спасибо. Всё же в тексте присутствует \u как я понимаю и это нужно удалять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться