Конвертация скрипта Bash в код С# для отправки СМС через usb модем HUAWEI E3372 / Хабр

sravnenie modema huawei eh  ot huawei e Прошивки

Huawei e3372h-320 обзор и настройка 4g модема

С середины 2021 года, компания Huawei Technologies Co. Ltd. ввела на российский рынок, новую модификацию 320, популярного модема, Huawei e3372h.

Напомним, предыдущая модификация данной модели была e3372h-153, новая визуально практически не отличается e3372h-320.

В модели e3372h-320 по-прежнему есть 2-а разъема CRC-9 (TS-5), что позволит подключить внешнюю антенну для усиления 3G / 4G сигнала (МИМО).

Устройство работает в 4-ой категории LTE (cat.4). Протокол передачи данных — LTE, HSPA , GSM, GPRS, EDGE, 3G (UMTS).

Касаемо Web-интерфейса, его обновили, войти в него можно, как и на предыдущей версии устройства, по адресу 192.168.8.1

Модем будет готов к работе, сразу из коробки, все настройки он произведет автоматически.

При первом входе в web-интерфейс модема, вам будет предложено, выбрать способ обновления устройства. (Производитель следит за тем что бы устройство работало стабильно, для этого периодически выпускает обновления, где устраняет ошибки и недочеты). Рекомендуется Включить обновление.

Интерфейс 4G модема, доступен на Русском и Английском языках.

Дизайн интерфейса, хоть и изменился, но так и остался достаточно информативным и понятным.

Настройка точки доступа (APN):

Выбор режима сети. Данная функция полезна в том случае, если используется тариф с безлимитом только в сети 4G, или в месте плавающего сигнала, обычно модем переключается автоматически на более мощный сигнал (ни как не ориентируясь на скорость приема передачи), при переходе с одного режима на другой могут быть обрывы, как и скорость в сетях 3G может быть в разы меньше, чем в LTE.

В интерфейсе LTE модема, 320 модификации, вы можете как принять SMS сообщение, так и отправить его. Благодаря этому легко контролировать, остаток средств, трафика, всякого рода подписки на номере.

Актуальность обновления и версии прошивки, можно проверить в дополнительном меню «Обновления»

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

Безопасность универсального модема Huawei e3372-320. Настройки DMZ / SIP ALG / UPnP.

Диагностика. Эхо-тестирование и трассировка предназначена для быстрой проверки статуса сетевого соединения.

Актуальность устройства. его стоимость

Хоть данная группа коммуникационных устройств и была выпущена в 2022 году, но она все еще продолжает быть актуальной. Она поддерживает самые передовые технологии и имеет достаточно высокую скорость передачи. В дополнение к этому к рассматриваемому решению может быть подключена внешняя антенна.

В новом состоянии МТС 827F сейчас можно приобрести за 2800 рублей. При этом стартовый пакет нужно приобретать уже отдельно. В подержанном же виде такое решение можно приобрести за 1000-1500 рублей.

Веб интерфейс.


   Huawei 3372 сам определяет настройки оператора, поэтому заходить на веб интерфейс модема не обязательно, однако, если вы хотите изменить какие либо настройки, то это довольно легко можно сделать.

   Для того что бы попасть на веб интерфейс Хуавей 3372, подключите модем в компьютер/ ноутбук или Wi-Fi роутер, через 1-2 минуты, после того как устройство “увидит” модем, откройте любой браузер и в адресной строке введите 192.168.8.1.

   После этого можете увидеть интерфейс модема.


   Меню “Главная” показывает основную информацию – основное меню, оператора, уровень сигнала (в делениях) и т.д.

В меню “Статистика” вы увидите объем скаченной и выгруженной информации. Здесь же можно установить лимит на объем скачиваемых данных.

В меню “СМС”, получите возможность принимать и отправлять СМС сообщения.

Индикация модема.


На Huawei 3372 имеется индикатор состояния, по которому можно понять какую сеть использует модем:

 – индикация горит или мигает зеленым цветов, модем использует сеть 2G

 – горит или мигает синим цветом, Хуавей использует сеть 3G/ 3G

 – горит или мигает голубым, устройство использует сеть 4G/ LTE.

Использование 3g/ 4g модема huawei e3372-153.


   Первым делом вставьте сим карту в устройство как на фото. Если смотреть на модем сверху, то обрезанный угол сим карты будет вверху, с левой стороны, логотипом оператора к вам.

  Так же под крышкой можно увидеть слот для карт MicroSD. Использовать карту памяти не обязательно, только если вы хотите, что бы модем выступал в роли USB флешки.

При первом подключении в компьютер или ноутбук, появится окно предлагающее установить драйвера, нажмите “Ок”. После установки драйверов модемом Huawei e3372 можно пользоваться.

Комплектация устройства. его назначение

Как и китайский аналог от компании Huawei, МТС 827F поставляется в следующем виде:

    Собственно сам модем. Талон со сроком гарантийных обязательств компании-производителя 12 месяцев. Расширенное руководство по эксплуатации.

В некоторых случаях этот список дополняется стартовым пакетом, и именно в таком виде такое устройство наиболее оптимально приобретать. А вот диск с управляющим софтом и утилитами в перечень поставки не включен по той причине, что все это программное обеспечение находится внутри модема. Также на этой интегрированной микросхеме памяти можно найти и документацию.

Номинально данная модель модема предназначена для установки в нее СИМ-карточки оператора МТС. Затем с его помощью можно как отправлять, так и получать информацию из интернета с помощью сотовой сети одноименной компании. Но при необходимости существуют специальные программные средства, с помощью которых такую “привязку” модема к оборудованию МТС можно устранить.

Конвертация скрипта bash в код с# для отправки смс через usb модем huawei e3372

Несколько моих проектов отправляют СМС и в последнее время после обновлений сервера, а может и ряда других причин, отправка СМС стала почти невозможной.

Старенький USB модем HUAWEI (марку не буду разглашать) перестал стабильно висеть на одном COM порту и временами переподключался на другие порты, совсем отключался и терял антенну.

Да и ситуация с библиотекой GSMComm была непонятной и болезненной.

GSMComm — это пакет для телефонов GSM, в основном для выполнения задач, связанных с SMS.
www.nuget.org/packages/GSMComm последня версия 1.21.1 от 10.10.2022 года.

Поиск по интерент показал, что есть возможность использовать встроенный функционал WEB API новых модемов HUAWEI, более эффективно, чем старый подход с AT командами реализованный в GSMComm.

Выяснилось, что есть прекрасный usb модем HUAWEI E3372, который почти хакерским способом способен отправлять СМС как из скрипта (Curl Bash), так и из кода (Python, Perl), и, как я предположил, из C#.

Самое печальное, что компания HUAWEI не предоставляет никакой документации как это сделать и все найденные методы имели экспериментальный харктер и зависели от семейства устройств.

В общем, опираясь на найденный материал, не гарантирующий работу кода с момедом, был приобретен HUAWEI E3372.

Не углублясь в эксперименты с Python или Perl я решил попробовать разобраться с вариантами Bash Curl.

В общем, после нескольких экспериментов был найден работающий код под MS Windows 10 Git Bash for MS Windows.

Скрипт

curl -b session.txt -c session.txt http://192.168.8.1/html/index.html > /dev/null 2>&1

#TOKEN=$(curl -s -b session.txt -c session.txt http://192.168.8.1/html/smsinbox.html)
TOKEN=$(echo $TOKEN | cut -d'"' -f 10)
echo $TOKEN > token.txt

NUMBER=$1
MESSAGE=$2

LENGTH=${#MESSAGE}
TIME=$(date  "%Y-%m-%d %T")
TOKEN=$(<token.txt)

SMS="<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$NUMBER</Phone></Phones><Sca/><Content>$MESSAGE</Content><Length>$LENGTH</Length><Reserved>1</Reserved><Date>$TIME</Date></request>"

echo $SMS

curl -v -b session.txt -c session.txt -H "X-Requested-With: XMLHttpRequest" --data "$SMS" http://192.168.8.1/api/sms/send-sms --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml" --header "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" --header "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"

Скрипт удивительным образом работал. И это было уже счастье, так как деньги были потрачены на модем не зря!

Осталось только понять КАК же он работает. Почитав документацию по Curl и Bash (ну по bash я не читал так догадался) прояснилась работа скрипта. Привожу этот же скрипт с моими комментариями.

Скрипт с комментариями

# https://stackoverflow.com/questions/28070500/grab-current-sessions-cookie-with-curl/28070870
# Содержимое файла session.txt определяется опцией -b
# Сделать GET запрос и получить куки в первый раз и записать их в файл
curl -b session.txt -c session.txt http://192.168.8.1/html/index.html > /dev/null 2>&1

# Сделать GET запрос и получить куки во второй раз и записать в файл и сохранить содержимое страницы HTML в переменную TOKEN как строку
TOKEN=$(curl -b session.txt -c session.txt http://192.168.8.1/html/smsinbox.html)

# Извлчеь из переменной значение метатега из <meta name="csrf_token" content="b/XNeODpHCthQXEOEjBNkICn2n7e9v4e"/> и перезаписать в ту же переменную TOKEN
TOKEN=$(echo $TOKEN | cut -d'"' -f 10)

# Отобразить на экране
echo "$TOKEN"

# сохранить подстроку в файле
echo $TOKEN > token.txt

# Получить два параметра командной строки: (1) номер телефона и (2) текст СМС
NUMBER=$1
MESSAGE=$2

# Получить количество символов в тексте
LENGTH=${#MESSAGE}

# Получить текущее время и отформатировать его
TIME=$(date  "%Y-%m-%d %T")

# Загрузить содержимое файла в переменную
TOKEN=$(<token.txt)

# Сфоромировать текст для отправки СМС как XML 
SMS="<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$NUMBER</Phone></Phones><Sca/><Content>$MESSAGE</Content><Length>$LENGTH</Length><Reserved>1</Reserved><Date>$TIME</Date></request>"

# Отобразить переменную с текстом СМС на экране 
echo $SMS

# Сделать POST для отправки СМС
curl -v -b session.txt -c session.txt -H "X-Requested-With: XMLHttpRequest" --data "$SMS" http://192.168.8.1/api/sms/send-sms --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml"

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

Понимание работы скрипта принесло свою пользу и приблизило к написанию кода на C#.

Было понятно, что в нем должно быть также 3 запроса и должны они делать то же самое что и благословенный Curl. Поэтому в коде приведен Curl, а ниже, аналогичный ему C# код.

Код С# для WinForms

private void button1_Click(object sender, EventArgs e)
{
   var ip = "192.168.8.1"; // IP адрес который выдает модем в браузере после установки
   var phone = " 70000000000"; // Номер телефона
   var msg = "Привет!!! СМС работает!!!";

   var result = SendSMS(ip, phone, msg);
   if (result)
   {
       //TODO  Сохранить в БД, например
   }
   else
   {
       //TODO  Сохранить в БД, например
   }
}

private bool SendSMS(string ip, string phone, string msg)
{
    try
    {
        /* curl -b session.txt -c session.txt http://192.168.8.1/html/index.html > /dev/null 2>&1 */

        Cookie firstCookie = null;
        Cookie secondCookie = null;
        string token = string.Empty;

        //В первый раз получить куки
        var cookieContainer = new CookieContainer();
        var uri = new Uri($"http://{ip}/html/index.html");
        using (var httpClientHandler = new HttpClientHandler { CookieContainer = cookieContainer })
        {
            using (var httpClient = new HttpClient(httpClientHandler))
            {
                httpClient.GetAsync(uri).Wait();
                var all = cookieContainer.GetCookies(uri);
                firstCookie = all[0];
            }
        }

        /*
        TOKEN=$(curl -s -b session.txt -c session.txt http://192.168.8.1/html/smsinbox.html)
        TOKEN=$(echo $TOKEN | cut -d'"' -f 10)
        echo $TOKEN > token.txt
         */

	    // И спользуя куки из первого запроса получить страницу и извлечь из нее токен
        if (firstCookie != null)
        {
            var cookieContainer2 = new CookieContainer();
            cookieContainer2.Add(firstCookie); // Поместить в конейнер куки из первого запроса к сайту
            var uri2 = new Uri($"http://{ip}/html/smsinbox.html");
            using (var httpClientHandler = new HttpClientHandler
            {
                CookieContainer = cookieContainer2
            })
            {
                using (var httpClient = new HttpClient(httpClientHandler))
                {
                    var html = httpClient.GetStringAsync(uri2).Result; // Получить страницу HTML

                    var all = cookieContainer2.GetCookies(uri2);
                    secondCookie = all[0];

                    var doc = new HtmlAgilityPack.HtmlDocument(); // Используем HtmlAgilityPack чтобы преобразовать текст HTML в структурный вид 
                    doc.LoadHtml(html);
                    var items = doc.DocumentNode.SelectNodes("//meta");
                    if (items.Count >= 2) // Получить второй по счету meta тег.
                    {
                        token = items[1].GetAttributeValue("content", ""); // Получить значение метатега. Не спрашивайтепочему второй метатаг с токеном рабочий - не знаю )))
                    }
                }
            }

            // Когда в наличии есть куки и токен делаем отправку СМС через запрос POST
            if (!string.IsNullOrEmpty(token))
            {
                var msgLength = msg.Length;
                var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //    TIME=$(date  "%Y-%m-%d %T")
                var sms = $"<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>{phone}</Phone></Phones><Sca/><Content>{msg}</Content><Length>{msgLength}</Length><Reserved>1</Reserved><Date>{time}</Date></request>";

                /*# Сделать POST для отправки СМС
                  curl -v -b session.txt -c session.txt -H "X-Requested-With: XMLHttpRequest" --data "$SMS" 
                    http://192.168.8.1/api/sms/send-sms  --header "__RequestVerificationToken: $TOKEN"  --header "Content-Type:text/xml" 
                */

                var uri3 = new Uri($"http://{ip}/api/sms/send-sms");
                var client = new RestSharp.RestClient { BaseUrl = uri3 }; // Используем RestSharp для запроса (дело вкуса)
                var request = new RestSharp.RestRequest(RestSharp.Method.POST);
                // Формируем свой заголовой запроса - ничего лишненго все по примеру из Curl
			    request.AddHeader("__RequestVerificationToken", token);
                var ses = secondCookie.ToString();
                request.AddCookie("cookie", ses);
                request.AddHeader("Content-Type", "text/xml");
                request.AddHeader("X-Requested-With", "XMLHttpRequest");
                request.AddParameter("text/html", sms, RestSharp.ParameterType.RequestBody);
                RestSharp.IRestResponse response = client.Execute(request);

                if (response.IsSuccessful)
                {
                    var xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(response.Content); // <?xml version="1.0" encoding="UTF-8"?><response> OK </response>
                    var responseElemenets = xmlDoc.GetElementsByTagName("response");
                    var resultOK = responseElemenets[0].InnerXml.ToLower();
                    return resultOK == "ok"; // Ну вот и признак того, что СМС отправлено, но без отчета о доставке. 
                }
            }
        }
    }
    catch (Exception)
    {
        //TODO в лог ошибку;
    }

    return false;
}

Как только у вас в руках рабочий C# код вы всегда можете его улучшить.

В моем случае он работает как часы и для некоторого солидного количества СМС в минуту вполне годится.

Надеюсь эта статься принесла пользу и в профессиональном и экономическом смыслах.

Душевно благодарю!

О модификациях

По умолчанию лишь только с СИМ-карточками компании МТС может работать герой данной статьи. Это ограничение идет со стороны программного обеспечения, которое зашито оператором в модем. Но существует возможность его модифицировать и за счет этого разблокировать МТС 827F.

Существует две подмодели таких модемов. Одна из них имеет маркировку E3372h, а вторая — E3372s. Они несовместимы между собой, и в каждом случае свой порядок разблокировки. У первой группы решений серийный номер начинается с G4P, а у второй — L8F.

Общий порядок настройки

Рассматриваемый в этом материале фирменный модем при подключении к ПК или же ноутбуку настраивается следующим образом:

    Достаем данное решение из упаковки. Далее необходимо снять с него защитную крышку, за которой найти коммуникационный порт для подключения к персональному компьютеру. Последний устанавливается в гнездо персонального компьютера формата USB. На следующем этапе начнется программная инициализация коммуникационного оборудования. При этом запустится мастер автонастройки, и необходимо будет вместе с драйверами установить также и фирменный софт от компании МТС. Закрываем все активные окна и перезагружаем электронно-вычислительную машину. По окончании процесса инициализации нужно запустить программу от МТС и с ее использованием установить соединение с беспроводной сетью. Далее запускаем интернет-просмотрщик и открываем любой новостной ресурс из интернета.

После этого готов к дальнейшей эксплуатации МТС 827F. Роутер с портом USB тоже может быть тем устройством, к которому подключен такой модем. В этом случае, как правило, достаточно лишь только подключить его и осуществить перезагрузку маршрутизатора. После чего программная оболочка роутера будет должным образом перенастроена, и все необходимы изменения вступят в силу.

Подключение 3g/ 4g антенн.

   На модеме предусмотрены два разъема CRC9 для подключения

. Можно подключать антенны как с одним выходом, так и MIMO антенны с двумя выходами.


Использование качественных 3G/ 4G антенн позволяет усилить уровень сигнала, уменьшить шумы и как следствие увеличить скорость Интернета.

Подключение модема в wi-fi роутер.

Перед тем как использовать модем в роутере необходимо убедиться, что два устрйоства совместимы между собой. Рекомендуем зайти на официальный сайт роутера, найти список поддерживаемых 3G/ 4G модемов. Если в списке есть модем Huawei e3372, значит его можно использовать в данном Wi-Fi роутере.

   Если в списке поддерживаемых модемов Хуавей 3372 есть, а ваш роутер “не видит” модем, то, рекомендуем обновить прошивку роутера.

Вот пример как роутер

определяет модем.

Процесс разблокировки:

Внимание! Здесь описывается способ разблокировки первой ревизии модема со старым алгоритмом блокировки. Если ваш модем имеет S/N, начинающийся с символов G4P, переходите по ссылке .

Состав комплекта поставки.

  1. Оригинальная коробка
  2. Универсальный 3G / 4G модем Huawei e3372h-153
  3. Руководство пользователя
  4. Гарантийный талон

Преимущество универсального 3G / 4G модема Huawei e3372h-320:

  • Работает во всех частотах, предоставляющих 2G / 3G / 4G интернет на территории РФ.
  • Скорость до 150 Мб./с. (работает в Cat.4)
  • Совместим со всеми операторами МТС, Мегафон, Билайн, Теле2, Ростелеком и др.
  • Работает с большинством Wi-Fi роутеров, выпущенных с 2022 года. (при условии использования актуальной версии ПО)
  • Доступная стоимость.

Из минусов. Пожалуй одним из минусов, является проблема совместимости со старыми моделями Wi-Fi роутеров. ( Проблема решается, обновлением прошивки, на актуальную, при условие ее наличия у производителя). 

Спецификации

Наличием следующих технических спецификаций может похвастаться МТС 827F:

    Тип антенны — интегрированная. Но ее использовать целесообразно лишь только в крупных городах. Также наличие коммуникационного гнезда CRC9 позволяет коммутировать внешний усилитель в связке с выносной антенной. Если в первом случае наибольшее расстояние до вышки сотовой связи не превышает 5 км, то в этом случае значение увеличится до 15-18 км. Формат СИМ-карты — стандартный. Поддерживаемые технологии связи — 2G (GSM, EDGE и, конечно же, GPRS), 3G (UMTS, HSDPA и HSUPA) и 4G (LTE). Скорость передачи может варьироваться от 500 Кбит/сек. для 2G и до 100 Мбит/сек. для 4G. В устройство встроен модем, который показывает наличие подключения к сети мобильного оператора. Есть слот для установки флеш-накопителя в виде карты памяти. Размер последней может достигать 32 Гб.

Отзывы владельцев. плюсы сетевого устройства и его недостатки

По мнению владельцев, модем МТС 827F имеет такие преимущества:

    Надежность. Доступная стоимость. Простота настройки. Возможность коммутации внешней антенны с дополнительным усилительным элементом. Предусмотрен слот для флеш-карточки.

Минус же у этого устройства всего лишь один — жесткая привязка к оборудованию МТС. Конечно, его можно устранить, но вот риск ложится целиком и полностью на плечи пользователя.

Оцените статью
Huawei Devices
Добавить комментарий