Skip to content

Technicolor ROuter - Reveal Hidden UI Elements

Practical JavaScript techniques for revealing hidden UI elements, inspecting loaded scripts, enumerating modal endpoints, and analyzing concealed settings in web interfaces using browser developer tools


Show hidden settings

Array.from(document.querySelectorAll('*')).forEach(function(element) {
    if (window.getComputedStyle(element).display === 'none') {
        element.style.display = 'block';
    }
});

Print script javascript

const scriptUrls = [];
document.querySelectorAll('script[src]').forEach(script => {
    scriptUrls.push(script.src);
});
console.log(scriptUrls);

Scan for modals

const modalFilenames = [
"modals/agent-list-2g.lp",
"modals/agent-list-5g.lp",
"modals/agent-list.lp",
"modals/assistance-modal.lp",
"modals/bridge-grouping-modal.lp",
"modals/bridge-modal.lp",
"modals/broadband-bridge-modal.lp",
"modals/broadband-modal.lp",
"modals/certificates-list-modal.lp",
"modals/contentsharing-modal.lp",
"modals/cwmpconf-modal.lp",
"modals/datausage.lp",
"modals/device-modal.lp",
"modals/diagnostics-connection-modal.lp",
"modals/diagnostics-graphs-modal.lp",
"modals/diagnostics-igmpproxy-modal.lp",
"modals/diagnostics-network-modal.lp",
"modals/diagnostics-ping-modal.lp",
"modals/diagnostics-tcpdump-modal.lp",
"modals/diagnostics-xdsl-modal.lp",
"modals/dmz-macmodal.lp",
"modals/dmz-modal.lp",
"modals/dyndns-wanservices-modal.lp",
"modals/easy-mesh-configuration.lp",
"modals/easymesh-configuration-modal-newEM.lp",
"modals/easymesh-devices-info-modal-newEM.lp",
"modals/easymesh-topology-modal-newEM.lp",
"modals/ethernet-modal.lp",
"modals/ethspeed-modal.lp",
"modals/firewall-modal.lp",
"modals/gpon-cfg-modal.lp",
"modals/gpon-detail-modal.lp",
"modals/gpon-overview-modal.lp",
"modals/gpon-port-config-modal.lp",
"modals/gpon-vlan-modal.lp",
"modals/hostmap-modal.lp",
"modals/internet-6rd-routed-configuration.lp",
"modals/internet-6rd-routed-settings.lp",
"modals/internet-6rd-routed-status.lp",
"modals/internet-dhcp-routed-configuration.lp",
"modals/internet-dhcp-routed-settings.lp",
"modals/internet-dhcp-routed-status.lp",
"modals/internet-dhcpv6-routed-configuration.lp",
"modals/internet-dhcpv6-routed-settings.lp",
"modals/internet-dhcpv6-routed-status.lp",
"modals/internet-ex-modal.lp",
"modals/internet-modal.lp",
"modals/internet-pppoa-routed-configuration.lp",
"modals/internet-pppoa-routed-settings.lp",
"modals/internet-pppoa-routed-status.lp",
"modals/internet-pppoe-routed-configuration.lp",
"modals/internet-pppoe-routed-settings.lp",
"modals/internet-pppoe-routed-status.lp",
"modals/internet-static-routed-configuration.lp",
"modals/internet-static-routed-settings.lp",
"modals/internet-static-routed-status.lp",
"modals/ipoe-modal.lp",
"modals/iproutes-modal.lp",
"modals/ipv6devices-modal.lp",
"modals/l2tp-ipsec-server-modal.lp",
"modals/log-connections-modal.lp",
"modals/log-routingtable-modal.lp",
"modals/logviewer-modal.lp",
"modals/lte-doctor.lp",
"modals/lte-modal.lp",
"modals/lte-profiles.lp",
"modals/lte-sim.lp",
"modals/lte-sms.lp",
"modals/mmpbx-codec-modal.lp",
"modals/mmpbx-contacts-modal.lp",
"modals/mmpbx-dect-modal.lp",
"modals/mmpbx-dialplan-modal.lp",
"modals/mmpbx-global-modal.lp",
"modals/mmpbx-inoutgoingmap-modal.lp",
"modals/mmpbx-log-modal.lp",
"modals/mmpbx-profile-modal.lp",
"modals/mmpbx-service-modal.lp",
"modals/mmpbx-sipdevice-modal.lp",
"modals/mmpbx-statistics-modal.lp",
"modals/mwan-modal.lp",
"modals/nat-alg-helper-modal.lp",
"modals/parental-modal.lp",
"modals/printersharing-modal.lp",
"modals/relay-modal.lp",
"modals/smarthome-modal.lp",
"modals/system-config-modal.lp",
"modals/system-info-modal.lp",
"modals/system-modal.lp",
"modals/time-management-modal.lp",
"modals/tod_dnd-modal.lp",
"modals/tod-modal.lp",
"modals/tod_wireless-modal.lp",
"modals/tod_wireless-modal-newEM.lp",
"modals/unlockgw-modal.lp",
"modals/usermgr-modal.lp",
"modals/wanservices-modal.lp",
"modals/wifi-devices-info.lp",
"modals/wifi-extender-status.lp",
"modals/wifi-nurse-modal.lp",
"modals/wireless-ap-modal-newEM.lp",
"modals/wireless-client-modal.lp",
"modals/wireless-modal.lp",
"modals/wireless-qrcode-modal.lp",
"modals/wireless-radio-modal-newEM.lp",
"modals/wireless-station-modal-newEM.lp",
"modals/wireless-wps-modal-newEM.lp",
"modals/xdsl-low-modal.lp"
]; 
async function checkModalAvailability(filename) {
  const url = `http://192.168.1.1/${filename}`;
  
  try {
    const response = await fetch(url);
    return response.ok;
  } catch (error) {
    return false;
  }
}

async function scanModalAvailability() {
  console.log("Scanning for modal availability...");
  
  const availabilityPromises = modalFilenames.map(filename => {
    return checkModalAvailability(filename)
      .then(isAvailable => ({ filename, isAvailable }));
  });

  const availabilityResults = await Promise.all(availabilityPromises);

  for (const result of availabilityResults) {
    console.log(`${result.filename}: ${result.isAvailable ? "Available" : "Not available"}`);
  }
}

scanModalAvailability();
    const modalFilenames = [
"modals/agent-list-2g.lp",
"modals/agent-list-5g.lp",
"modals/agent-list.lp",
"modals/assistance-modal.lp",
"modals/bridge-grouping-modal.lp",
"modals/bridge-modal.lp",
"modals/broadband-bridge-modal.lp",
"modals/broadband-modal.lp",
"modals/certificates-list-modal.lp",
"modals/contentsharing-modal.lp",
"modals/cwmpconf-modal.lp",
"modals/datausage.lp",
"modals/device-modal.lp",
"modals/diagnostics-connection-modal.lp",
"modals/diagnostics-graphs-modal.lp",
"modals/diagnostics-igmpproxy-modal.lp",
"modals/diagnostics-network-modal.lp",
"modals/diagnostics-ping-modal.lp",
"modals/diagnostics-tcpdump-modal.lp",
"modals/diagnostics-xdsl-modal.lp",
"modals/dmz-macmodal.lp",
"modals/dmz-modal.lp",
"modals/dyndns-wanservices-modal.lp",
"modals/easy-mesh-configuration.lp",
"modals/easymesh-configuration-modal-newEM.lp",
"modals/easymesh-devices-info-modal-newEM.lp",
"modals/easymesh-topology-modal-newEM.lp",
"modals/ethernet-modal.lp",
"modals/ethspeed-modal.lp",
"modals/firewall-modal.lp",
"modals/gpon-cfg-modal.lp",
"modals/gpon-detail-modal.lp",
"modals/gpon-overview-modal.lp",
"modals/gpon-port-config-modal.lp",
"modals/gpon-vlan-modal.lp",
"modals/hostmap-modal.lp",
"modals/internet-6rd-routed-configuration.lp",
"modals/internet-6rd-routed-settings.lp",
"modals/internet-6rd-routed-status.lp",
"modals/internet-dhcp-routed-configuration.lp",
"modals/internet-dhcp-routed-settings.lp",
"modals/internet-dhcp-routed-status.lp",
"modals/internet-dhcpv6-routed-configuration.lp",
"modals/internet-dhcpv6-routed-settings.lp",
"modals/internet-dhcpv6-routed-status.lp",
"modals/internet-ex-modal.lp",
"modals/internet-modal.lp",
"modals/internet-pppoa-routed-configuration.lp",
"modals/internet-pppoa-routed-settings.lp",
"modals/internet-pppoa-routed-status.lp",
"modals/internet-pppoe-routed-configuration.lp",
"modals/internet-pppoe-routed-settings.lp",
"modals/internet-pppoe-routed-status.lp",
"modals/internet-static-routed-configuration.lp",
"modals/internet-static-routed-settings.lp",
"modals/internet-static-routed-status.lp",
"modals/ipoe-modal.lp",
"modals/iproutes-modal.lp",
"modals/ipv6devices-modal.lp",
"modals/l2tp-ipsec-server-modal.lp",
"modals/log-connections-modal.lp",
"modals/log-routingtable-modal.lp",
"modals/logviewer-modal.lp",
"modals/lte-doctor.lp",
"modals/lte-modal.lp",
"modals/lte-profiles.lp",
"modals/lte-sim.lp",
"modals/lte-sms.lp",
"modals/mmpbx-codec-modal.lp",
"modals/mmpbx-contacts-modal.lp",
"modals/mmpbx-dect-modal.lp",
"modals/mmpbx-dialplan-modal.lp",
"modals/mmpbx-global-modal.lp",
"modals/mmpbx-inoutgoingmap-modal.lp",
"modals/mmpbx-log-modal.lp",
"modals/mmpbx-profile-modal.lp",
"modals/mmpbx-service-modal.lp",
"modals/mmpbx-sipdevice-modal.lp",
"modals/mmpbx-statistics-modal.lp",
"modals/mwan-modal.lp",
"modals/nat-alg-helper-modal.lp",
"modals/parental-modal.lp",
"modals/printersharing-modal.lp",
"modals/relay-modal.lp",
"modals/smarthome-modal.lp",
"modals/system-config-modal.lp",
"modals/system-info-modal.lp",
"modals/system-modal.lp",
"modals/time-management-modal.lp",
"modals/tod_dnd-modal.lp",
"modals/tod-modal.lp",
"modals/tod_wireless-modal.lp",
"modals/tod_wireless-modal-newEM.lp",
"modals/unlockgw-modal.lp",
"modals/usermgr-modal.lp",
"modals/wanservices-modal.lp",
"modals/wifi-devices-info.lp",
"modals/wifi-extender-status.lp",
"modals/wifi-nurse-modal.lp",
"modals/wireless-ap-modal-newEM.lp",
"modals/wireless-client-modal.lp",
"modals/wireless-modal.lp",
"modals/wireless-qrcode-modal.lp",
"modals/wireless-radio-modal-newEM.lp",
"modals/wireless-station-modal-newEM.lp",
"modals/wireless-wps-modal-newEM.lp",
"modals/xdsl-low-modal.lp"
]; 

async function scanModalAvailability() {
  console.log("Scanning for modal availability...");
  
  for (const filename of modalFilenames) {
    const isAvailable = await checkModalAvailability(filename);
    const fullUrl = `http://192.168.1.1/${filename}`;
    console.log(`${fullUrl}: ${isAvailable ? "Available" : "Not available"}`);
  }
}

scanModalAvailability();
// Open a new tab and write HTML content to it
const newTab = window.open('', '_blank');
newTab.document.write('<html><head><title>Modal Links</title></head><body>');

modalFilenames.forEach(modalURL => {
  // Check if the modal element is hidden
  const modalElement = document.querySelector(`[data-remote="${modalURL}"]`);
  const isHidden = modalElement && modalElement.style.display === 'none';

  // If the modal is not hidden, create an <a> element with the modal URL
  if (!isHidden) {
    const linkElement = `<a href="${modalURL}" target="_blank">Open ${modalURL}</a>`;
    newTab.document.write(`<p>Modal ${modalURL} exists. ${linkElement}</p>`);
  }
});

View hidden css

 // Select all elements and temporarily modify styles to make them visible
 const allElements = document.querySelectorAll('*');
 allElements.forEach(element => {
     const originalDisplay = getComputedStyle(element).display;
     const originalVisibility = getComputedStyle(element).visibility;
 
     // Store the original styles as data attributes
     element.setAttribute('data-original-display', originalDisplay);
     element.setAttribute('data-original-visibility', originalVisibility);
 
     // Modify styles to make the element visible
     element.style.display = 'block';
     element.style.visibility = 'visible';
 });