Перейти к содержанию
    

В какой кодировке\шифре приходят смс сообщения (AT)

Доброго времени. Как расшифровать пришедшее смс? текстовый вариант(не PDU). Получаю смс вида: 0412043004480020043D043E043C04350440002004420435043B04350444043E043D0430003A002B0037003900310036003200380032003900 (удалил несколько последних символов)

Нашел только 1 сайт, который бы расшифровывал сообщение как нужно - http://crypt-online.ru/crypts/text2hex/

Искал декодеры из hex в текст, но они все криво отображают. В идеале мне нужен код на С#, который бы расшифровывал сообщение в читающийся вид.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, myaso сказал:

Нашел только 1 сайт, который бы расшифровывал сообщение как нужно - http://crypt-online.ru/crypts/text2hex/

Сохранить эту страницу полностью на диск, там будет файл hex.js в котором весь код кодировки-декодировки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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;
}

 

Изменено пользователем myaso

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, myaso сказал:

Получаю смс

 

1 час назад, myaso сказал:

Не владею языками программирования...

Куда получаем не владея языками, какие технические средства? Цели и задачи?

Прошу меня понять правильно, но ответив одним словом "UniCode" на вопрос "В какой кодировке?" я посчитал свою миссию в этом топике исполненной.

p.s. \u - это не обязательный элемент, одна из форм записи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, Vladivolt сказал:

 

Куда получаем не владея языками, какие технические средства? Цели и задачи?

Прошу меня понять правильно, но ответив одним словом "UniCode" на вопрос "В какой кодировке?" я посчитал свою миссию в этом топике исполненной.

p.s. \u - это не обязательный элемент, одна из форм записи.

Цель простая - расшифровать текст. Смс получается посредством AT команды(мобильная связь). Вас понял, спасибо. Всё же в тексте присутствует \u как я понимаю и это нужно удалять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...