Изменение DNS для модема Huawei B315 4G, поставляемого Optus

Модем Huawei B315, поставляемый Optus для (ныне не поддерживаемой) службы Vividwireless, является работоспособным, но, к сожалению, довольно поврежденным устройством, вплоть до невозможности изменить назначенные DNS-серверы с его DHCP-сервера вдали от Optus DNS на что-то разумное (Google DNS/Cloudflare и т. Д.).

Этот скрипт должен позволять легко обновлять назначенные DNS-серверы и был протестирован с Google Chrome.

Использование

  • Войдите в веб-интерфейс маршрутизатора (например, http://192.168.0.1 ).
  • Из того же в сеансе браузера откройте панель «Инструменты веб-разработчика».
  • Перетащите содержимое dnsmodify.js в область Console — изменение ROUTER_URI , PRIMARY_DNS и SECONDARY_DNS в соответствии с требованиями.
  • Запустить сценарий, обновлено Настройки DHCP будут отправлены, и модем перезапустится.
  • Теперь все арендованные DHCP-серверы должны получать обновленные DNS-серверы.
  • Настройки могут быть подтверждены с помощью:
    • Вход в систему еще раз b Пользовательский интерфейс.
    • Посещение http://192.168.0.1/api/dhcp/settings .
    • Найдите / элементы.

Примечания к конечным точкам API

  • Список подключенных клиентов Wi-Fi: http://192.168.0.1/api/wlan/host-list

Ссылка

  • https://github.com/jinxo13/HuaweiB525Router
  • https://blog.idorobots .org/entries/hacking-huawei-e3372-hilink..html
  • https://www.mrt-prodz.com/blog/view/2015/05/huawei-modem-api- and-data-plan-monitor

‘use strict’;
(async () => {
const ROUTER_URI = ‘http://192.168.0.1/’ ,
PRIMARY_DNS = ‘8.8.8.8’,
SECONDARY_DNS = ‘8.8.4.4’;
function dhcpSettingsUri () {
return `$ {ROUTER_URI} api/dhcp/settings`;
}
function xhrReady (xhr) {
return (xhr.readyState == 4) && (xhr.status == 200);
}
function readDHCP () {
return new Promise ( (resolve) => {
//маршрутизатор не возвращает [Content-Type: text/xml], нужно заставить его
const xhr = new XMLHttpRequest ();
xhr.overrideMimeType (‘text/xml’);
xhr. onreadystatechange = () => {
if (xhrReady (xhr)) {
resolve (xhr.responseXML);
}
};
xhr.open (‘GET’, dhcpSettingsUri ());
xhr.send ();
});
}
function generateVerifyToken () {
return new Promise ((resolve) => {
const xhr = new XMLHttpRequest ();
xhr .overrideMimeType (‘text/xml’);
xhr.onreadystatechange = () => {
if (xhrReady (xhr)) {
resolve (xhr.responseXML.querySelector (‘TokInfo’) .textContent);
}
};
xhr.open (‘GET’, `$ {ROUTER_URI} api/webserver/SesTokInfo`);
xhr.send ();
});
}
function buildUpdate (current) {
const rootNode = document.implementation.createDocument (null, ‘request’);
for (const el of Array.from (current.firstChild.children)) {
переключатель (el.tagName) {
case ‘DnsStatus’:
el.firstChild.textContent = ‘0’;
break;
case ‘PrimaryDns’:
el.firstChil d.textContent = PRIMARY_DNS;
break;
case ‘SecondaryDns’:
el.firstChild.textContent = SECONDARY_DNS;
break;
}
rootNode.documentElement.appendChild (el);
}
return rootNode;
}
консоль. clear ();
//извлекаем текущие настройки DHCP и генерируем токен обновления
const currentDHCP = await readDHCP (),
token = await generateVerifyToken ();
//отправляем обновленные настройки DHCP для DNS серверы
const xhr = new XMLHttpRequest ();
xhr.open (‘POST’, dhcpSettingsUri ());
xhr.setRequestHeader (‘__ RequestVerificationToken’, token);
xhr.send (
‘ xml version = «1.0» encoding = «UTF-8»?> ‘+
(новый XMLSerializer ( )). serializeToString (
buildUpdate (currentDHCP)
)
);
}) ();
Оцените статью
techsly.ru
Добавить комментарий