Habe mal ein bisschen probiert. Statt mitmproxy habe ich lieber Burpsuite genommen.
Die Auswahl des Modul lässt sich einfach im Menu aktivieren:
Yupp, so weit habe ich es auch geschafft. Und dann klickt man hoffnungsvoll auf den Menü-Eintrag ... und landet wieder im Menu 'Home'.
Hier die Details, wie es mit
mitmproxy geht:
1. Mitmproxy herunter laden: https://github.com/mitmproxy/mitmproxy/releases
2. Für Linux sind da drei Executables drin, die man gar nicht installieren muss. Also einfach auspacken.
3. Beim Browser in den Einstellungen auf einen Proxy für HTTP umstellen: Host 127.0.0.1, Port 8080.
4. In der Kommandozeile ./mitmproxy eingeben.
Dann läuft der Browser wieder normal, allerdings wird jetzt der ganze HTTP-Traffic in der Kommandozeile aufgelistet. Aus dem Mitmproxy kommt man durch eintippen eines 'q' wieder raus.
Bis hier hin bringt das wenig. Nutzen bringt es, wenn man mitmproxy zusätzlich mit einem Skript laufen lässt:
Code:
./mitmproxy -s mitmscript.py
Das Python-Skript kann man ändern, ohne dass man Mitmproxy immer wieder neu starten muss. Es wird dann auf alle HTTP-Requests angewandt.
Bleibt noch das Skript
mitmscript.py, das sieht bei mir zur Zeit so aus (Debugging-Code entfernt):
Python:
def response(flow): if flow.type == 'http': request = flow.request.data.content.decode('utf-8') fun = 0 for item in request.split('&'): if item.startswith('fun='): fun = int(item.replace('fun=', '')) if fun == 1: content = flow.response.data.content.decode('utf-8') # Modding time! content = content.replace('<HideModemMode>True</HideModemMode>', '<HideModemMode>False</HideModemMode>') flow.response.data.content = content.encode('utf-8') out.close()
Auch dabei gelernt: dieses
getter.xml wird für alle POST-Requests verwendet. Jeder Request hat zwei Zeilen XML dabei,
token und
fun.
token ist immer anders, vermutlich eine zufällige Zahl. Das
fun ist interessanter, das scheint zu bestimmen, welche Funktion ausgeführt wird bzw. welche Daten zurück kommen.
- fun = 1 bestimmt das Aussehen der Webseite.
- fun = 123 wird nach dem einloggen alle paar Sekunden wiederholt und liefert den Verbindungsstatus.
Es gibt noch eine ganze Reihe weiterer Funktionsnummern.
Zum spielen mit dem Web-Interface gibt's noch eine ganze Reihe weiterer Variablen im XML:
Code:
<AccessLevel>1</AccessLevel>
<SwVersion>CH7465LG-NCIP-4.50.18.23-4-GA-NOSH</SwVersion>
<CmProvisionMode>IPv4</CmProvisionMode>
<GwProvisionMode>IPv4</GwProvisionMode>
<GWOperMode>IPv4</GWOperMode>
<DsLite>0</DsLite>
<PortControl>0</PortControl>
<ConfigVenderModel>CH7465LG</ConfigVenderModel>
<HideRemoteAccess>False</HideRemoteAccess>
<HideModemMode>True</HideModemMode>
<OperatorId>UNITYMEDIA</OperatorId>
<AccessDenied>NONE</AccessDenied>
<LockedOut>Disable</LockedOut>
<CountryID>4</CountryID>
<title>Connect Box</title>
<Interface>1</Interface>
<operStatus>1</operStatus>