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