Skip to main content

Compal CH7465LG/Ziggo Connect Box client

Project description

Compal CH7465LG (Ziggo Connect Box) tools

This repository contains a simple api to wrap the web interface of the Ziggo Connect Box (i.e. the Compal CH7465LG). It is implemented in Python >= 3.7.

At the moment it only contains the functionality that I needed while I was investigating my device, but pull requests that improve the documentation or add features are welcome.

About the hardware

Compal does not provide information about the hardware. The modem has no FCC registration. However, the related Arris TG2492 modem was submitted to the FCC. The FCC documents for this modem are available. Some interesting documents (internal photos) have been mirrored to docs/fcc. danman performed an (excellent) analysis of the modem where the procedure for extracting the content of the firmware and modifying it is discussed. This writeup also examines the DOCSIS certificates used.

The modem seems to be based on the Intel Puma 6 chipset. There is a long thead on (perceived) performance problems caused by jitter on DSLReports. See [ALL] SB6190 is a terrible modem - Intel Puma 6 / MaxLinear mistake

The modem most likely contains open source components. Requests to Compal requesting source code of these components, to an e-mail address on the Compal site, have not been answered yet.

Changelog

0.3.2:

0.3.1:

0.3.0:

  • Guest network settings added by @frimtec.

Security

A security evaluation of the Connect Box was posted on-line. This report is included in the docs folder.

How to use it?

The examples directory contains some example scripts. My main use case is re-provisioning the modem. An example script for this task is included.

Want to get started really quickly?

import os
import time
from compal import *

modem = Compal('192.168.178.1', os.environ['ROUTER_CODE'])
modem.login()

fw = PortForwards(modem)

def toggle_all_rules(fw, goal):
	rules = list(fw.rules)
	for idx, r in enumerate(rules):
	  rules[idx] = r._replace(enabled=goal)

	fw.update_rules(rules)
	print(list(fw.rules))

# Disable all rules
toggle_all_rules(fw, False)
time.sleep(5)
# And re-enable
toggle_all_rules(fw, True)

# Or find all possible functions of the modem:
scan = FuncScanner(modem, 0, os.environ['ROUTER_CODE'])
while scan.current_pos < 101:
	print(scan.scan().text)

# And/or change wifi settings
wifi = WifiSettings(modem)
settings = wifi.wifi_settings
print(settings)

new_settings = settings._replace(radio_2g=settings.radio_2g._replace(ssid='api_works'))
wifi.update_wifi_settings(new_settings)

print(wifi.wifi_settings)

# And/or DHCPSettings

# If you want to go back to 'normal':
# modem.reboot() # or
# modem.factory_reset()

# And logout
modem.logout()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compal-0.3.2.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

compal-0.3.2-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file compal-0.3.2.tar.gz.

File metadata

  • Download URL: compal-0.3.2.tar.gz
  • Upload date:
  • Size: 27.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for compal-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a70e9258df93fcbba455bb52550bd08f03ed465a996bfb810dd62705169595f6
MD5 55cf2eb6d5c5ce668c852f00703f8d44
BLAKE2b-256 ba0c26f09260f81d24c560e3cddb534d5cc8fcfa7d3e380e62b55a5bdc47afe1

See more details on using hashes here.

File details

Details for the file compal-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: compal-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for compal-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5669975fdd89dccccce8b967dbff96b3e659f54eb5aafd6e06029d4b77b7a775
MD5 6e486e3b5bbb8072044a908c125dfc98
BLAKE2b-256 f1439500faebfa5acfd52e6eb4e2d81e86d9e95f4248c8306feaadbc046cb9a1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page