Wifi without internet on a Marabu flight

Just as james vaughan, I spent a recent flight finding out what I could do with a connection to the flight’s wifi, but without access to the internet. After reading james‘ blogpost, I decided to share my story ‒ I found more data 🙂

I was on my way to Greece, a direct flight from Hamburg to Lefkada. It’s a long flight. Marabu’s wifi is not for browsing the Internet but for accessing the inflight entertainment system only. I was bored, did not like the movie selection, so I opened up my browser’s network dev tools to see if I could figure out what was going on.

Citing james,

I used my browser’s “Copy as cURL” feature to quickly get a command to hit the endpoint. As an aside, this feature is present in Firefox and all chromium-based browsers and it’s really handy if you ever need to reply requests made by your browser and want to send all the same headers.

The information the API returned in the beginning were not too interesting. I cannot provide an example response from one of those first requests. If I remember correctly, the responses showed only data that drives the inflight wifi portal’s flight status screen, showing our plane’s location, air speed, etc.

However, since this was one of the few things I could access on this network, I decided to make the most of it. The following API endpoint is what caught my eye: https://marabu.everhub.aero/monitor/status?path=/system/net/.

{
  "apn": "internet.emt.ee",
  "interfaces": [
    {
      "iface": "enp3s0",
      "ip4": "10.20.30.235",
      "mac": "00:e0:4c:da:e5:f6",
      "operstate": "up"
    }
  ],
  "domain": "marabu.everhub.aero",
  "eth-ip": "NON-IP",
  "wireless": {
    "2.4GHz": "enabled",
    "5GHz": "enabled"
  },
  "modem": {
    "modem": {
      "device": "ttyUSB2",
      "power": "low",
      "state": "disabled",
      "fail-reason": "--",
      "signal": "0",
      "imei": "867<redacted>",
      "operator": {
        "code": "--",
        "name": "--",
        "registration": "--"
      }
    },
    "sim": {
      "code": "<redacted>",
      "name": "Telia",
      "imsi": "248<redacted>",
      "iccid": "893<redacted>"
    },
    "bearer": {
      "interface": "",
      "status": "",
      "apn": "",
      "roaming": "",
      "ip-type": "",
      "ip": ""
    },
    "system": {
      "state": "unavailable",
      "ip": "",
      "connection": ""
    }
  },
  "cc-connection": "error",
  "ext-ip": "none",
  "type": "O",
  "connected-users": 0,
  "ssid": "marabu005",
  "wds": {
    "info": [
      "",
      "WAP is not in WDSAP mode. Exiting."
    ],
    "ssids": []
  }
}

I did not expect that the API would provide access to IMSI, IMEI and ICCID. Then, I decided to change the path parameter: https://marabu.everhub.aero/monitor/status?path=/. Now, the response of the server revealed even more, including information about

  • file system
  • OS
    • „distro“: „Ubuntu“
    • „release“: „20.04.6 LTS“
  • installed packages, scripts and their versions
    • „paxapp-version“: „2.0.3-1“
    • „crewapp-version“: „2.0.1-1“
  • squawk code and emergency status
    • „squawk“: „4144“
    • „emergency“: „none“
  • recent boot and shutdown times
{
  "alerts": [],
  "system": {
    "net": {
      "apn": "internet.emt.ee",
      "interfaces": [
        {
          "iface": "enp3s0",
          "ip4": "10.20.30.235",
          "mac": "00:e0:4c:da:e5:f6",
          "operstate": "up"
        }
      ],
      "domain": "marabu.everhub.aero",
      "eth-ip": "NON-IP",
      "wireless": {
        "2.4GHz": "enabled",
        "5GHz": "enabled"
      },
      "modem": {
        "modem": {
          "device": "ttyUSB2",
          "power": "low",
          "state": "disabled",
          "fail-reason": "--",
          "signal": "0",
          "imei": "867<redacted>",
          "operator": {
            "code": "--",
            "name": "--",
            "registration": "--"
          }
        },
        "sim": {
          "code": "<redacted>",
          "name": "Telia",
          "imsi": "248<redacted>",
          "iccid": "893<redacted>"
        },
        "bearer": {
          "interface": "",
          "status": "",
          "apn": "",
          "roaming": "",
          "ip-type": "",
          "ip": ""
        },
        "system": {
          "state": "unavailable",
          "ip": "",
          "connection": ""
        }
      },
      "cc-connection": "error",
      "ext-ip": "none",
      "type": "O",
      "connected-users": 2,
      "ssid": "marabu005",
      "wds": {
        "info": [
          "",
          "WAP is not in WDSAP mode. Exiting."
        ],
        "ssids": []
      }
    },
    "batt_cycle": {
      "cycle_0": 7,
      "cycle_1": 0
    },
    "temperatures": {
      "cpu0": 56,
      "cpu1": 56,
      "cpu2": 58,
      "cpu3": 58,
      "mb": 31,
      "batt1": 27.85,
      "batt2": 0,
      "sda": null,
      "sdb": 44
    },
    "uptime": "1h 56m 54.3s",
    "powerboard": {
      "charging": false,
      "cycle_0": 7,
      "cycle_1": 0,
      "hardver": 2,
      "mah_0": 4267,
      "mah_1": 0,
      "percent_0": 69,
      "percent_1": 0,
      "poweroff": false,
      "serial_0": 26486,
      "serial_1": 0,
      "softver": 3,
      "switch": true,
      "temp_0": 28.05,
      "temp_1": 0,
      "volt_0": 15.46,
      "volt_1": 0
    },
    "fs": [
      {
        "size": "245 GB",
        "used": "33 GB",
        "use": "14.05 %",
        "mount": "/"
      },
      {
        "size": "639 GB",
        "used": "219 GB",
        "use": "36.21 %",
        "mount": "/data"
      },
      {
        "size": "209 GB",
        "used": "22 MB",
        "use": "0.01 %",
        "mount": "/data/internal"
      },
      {
        "size": "987 MB",
        "used": "125 MB",
        "use": "13.56 %",
        "mount": "/data/crypto"
      }
    ],
    "kernel": "5.4.0-150-generic",
    "memory": {
      "total": "7 GB",
      "free": "2 GB",
      "used": "5 GB"
    },
    "os": {
      "platform": "linux",
      "distro": "Ubuntu",
      "release": "20.04.6 LTS",
      "kernel": "5.4.0-150-generic",
      "arch": "x64"
    },
    "flight_mode": "adsb",
    "services": {
      "system": {
        "dnsmasq": "active",
        "NetworkManager": "active",
        "docker": "active",
        "pm2-root": "active",
        "salt-minion": "active",
        "openresty": "active",
        "ifd-system-status": "active",
        "ifd-wap-status": "active",
        "ifd-switch-status": "active",
        "ifd-power-status": "active",
        "ifd-dump1090": "active",
        "ModemManager": "active"
      },
      "docker": {
        "gde-web": "active",
        "gde-events": "active",
        "ad-engine": "active",
        "ad-proxy": "active",
        "ad-registration": "active",
        "mongo": "active",
        "datasync": "active",
        "syncmanager": "active",
        "games-api": "active",
        "games-web": "active",
        "tomcat": "active",
        "wvpl.ideanovatech.com": "active",
        "fps.ideanovatech.com": "active",
        "socket": "active",
        "flightdata": "active",
        "tiles": "active",
        "mediausage": "active",
        "metadata": "active",
        "flightpush": "active",
        "fp3d": "active",
        "orders": "active"
      },
      "pm2": {
        "manager": "active",
        "importer": "active",
        "monitor": "active"
      }
    },
    "boots": [
      {
        "start": "2023-08-31 03:32:08",
        "duration": "00:22",
        "stop": "2023-08-31 03:54:08",
        "type": "down"
      },
      {
        "start": "2023-08-30 12:04:35",
        "duration": "15:26",
        "stop": "2023-08-31 03:30:35",
        "type": "crash"
      },
      {
        "start": "2023-08-30 03:20:21",
        "duration": "08:43",
        "stop": "2023-08-30 12:03:21",
        "type": "crash"
      },
      {
        "start": "2023-08-29 12:12:48",
        "duration": "07:55",
        "stop": "2023-08-29 20:07:48",
        "type": "down"
      },
      {
        "start": "2023-08-28 12:20:05",
        "duration": "23:51",
        "stop": "2023-08-29 12:11:05",
        "type": "crash"
      }
    ]
  },
  "updatedAt": "2023-08-31T06:40:28.385Z",
  "serverId": "1c19aaee-bc86-4566-bd94-705c9558eff1",
  "hostname": "marabu005",
  "id": {
    "hostname": "marabu005",
    "serverId": "1c19aaee-bc86-4566-bd94-705c9558eff1",
    "hardwareId": "00e04cdae5f9",
    "sda": "S5RRNF0W305357W",
    "sdb": "50026B76836BBD63",
    "batt1": "26486",
    "batt2": "0"
  },
  "client": {
    "json": {
      "IATA": "EE",
      "name": "Marabu Airlines"
    }
  },
  "timestamp": "2023-08-31T06:40:28.000Z",
  "config": {
    "apps": {
      "paxapp-version": "2.0.3-1",
      "paxapp": "EE-0723",
      "panelapp-version": "3.0.0",
      "crewapp-version": "2.0.1-1",
      "crewapp": "EE"
    }
  },
  "drm": {
    "id": "59c427298abe59d53925c779b56472dfb5973c0ec2aa13e6cac31be8be875ac2",
    "is-installed": "yes",
    "validity": "2023-12-28",
    "is-test-license": "no"
  },
  "certs": {
    "wv": "2023-10-24",
    "fps": "2023-03-23",
    "ssl": "2023-12-07",
    "ssl-chain": "2023-12-07,2030-12-31,2028-12-31,2028-12-31"
  },
  "release": "-",
  "flight": {
    "_state": {
      "hex": "511171",
      "flight": "MBU6298 ",
      "alt_baro": 35000,
      "alt_geom": 35775,
      "gs": 482.1,
      "ias": 263,
      "tas": 448,
      "mach": 0.776,
      "track": 152.6,
      "track_rate": 0,
      "roll": 0.2,
      "mag_heading": 150.8,
      "baro_rate": 0,
      "geom_rate": 0,
      "squawk": "4144",
      "emergency": "none",
      "category": "A3",
      "nav_qnh": 1012.8,
      "nav_altitude_mcp": 35008,
      "lat": 46.048233,
      "lon": 16.148027,
      "nic": 8,
      "rc": 186,
      "seen_pos": 0.5,
      "version": 2,
      "nic_baro": 1,
      "nac_p": 9,
      "nac_v": 1,
      "sil": 3,
      "sil_type": "perhour",
      "gva": 2,
      "sda": 3,
      "mlat": [],
      "tisb": [],
      "messages": 111911,
      "seen": 0.1,
      "rssi": -9.3,
      "now": "2023-08-31T05:45:00Z",
      "registration": null,
      "flight_code": ""
    },
    "_lastSeen": "2023-08-31T05:45:00Z",
    "schedule": {
      "flight_code": null,
      "departure_iata": null,
      "destination_iata": null
    }
  },
  "versions": {
    "os": "20.04.6 LTS (Focal Fossa)",
    "kernel": "5.4.0-150",
    "software": "B0523",
    "webapp": "10.0.0",
    "panelapp": "3.0.0",
    "crewapp": "4.1.0",
    "tools": {
      "node": "v16.20.0",
      "npm": "9.6.7",
      "json5": "2.2.3",
      "n": "v9.1.0",
      "pm2": "5.2.0",
      "fx": "24.0.0",
      "jq": "1.6-159-gcff5336-dirty",
      "jc": "1.23.2",
      "lnav": "0.11.1-49-gaeea356",
      "yq": "v4.34.1",
      "aws": "2.11.25"
    },
    "deb": {
      "ifd-bare0-system-prerequisites": "4.0.0-1",
      "ifd-bare0-system-tools": "7.2.6-1",
      "ifd-core0-system-scripts": "6.5.11-1",
      "ifd-core1-disk-encrypted-part-ext": "1.0.1",
      "ifd-core1-disk-encrypted-part-int": "1.0.0",
      "ifd-core1-disk-setup": "5.0.6-1",
      "ifd-core2-network-settings": "5.1.5-1",
      "ifd-core2-network-settings-everbox": "5.0.3-1",
      "ifd-core3-hw-dump1090-generic": "2.1.4-1",
      "ifd-core3-hw-modem-generic": "2.0.1-1",
      "ifd-core3-hw-powerboard-everbox": "2.0.4-1",
      "ifd-core3-hw-temperature-everbox": "1.1.0-1",
      "ifd-core3-hw-touchscreen-everbox": "4.2.3-1",
      "ifd-core3-hw-wap-everbox": "6.1.0-1",
      "ifd-core4-helpers-aws-s3-cfg": "2.0.0-1",
      "ifd-core4-helpers-nexus-cfg": "2.0.0-1",
      "ifd-full0-svc-svc-monitor": "5.0.1-1",
      "ifd-full0-svc-switch-status": "3.0.3-1",
      "ifd-full0-svc-system-status": "2.1.1-1",
      "ifd-full1-certs-ssl": "2.0.1-1",
      "ifd-full2-docker-common": "9.2.1-1",
      "ifd-full2-docker-common-cfg-generic": "1.0.3-1",
      "ifd-full2-docker-common-img-datasync": "8.0.1-129",
      "ifd-full2-docker-common-img-mongo": "3.6.23-22",
      "ifd-full2-docker-common-img-syncmanager": "3.0.1-30",
      "ifd-full2-docker-common-sync-cfg": "1.1.0-1",
      "ifd-full3-addon-ad-engine": "1.3.1-1",
      "ifd-full3-addon-ad-engine-cfg-generic": "1.0.1-1",
      "ifd-full3-addon-ad-engine-img-engine": "0.0.7",
      "ifd-full3-addon-ad-engine-img-proxy": "0.0.1",
      "ifd-full3-addon-ad-engine-img-registration": "0.0.2",
      "ifd-full3-addon-drm-support": "6.2.1-1",
      "ifd-full3-addon-drm-support-certs-fairplay": "3.0.0-1",
      "ifd-full3-addon-drm-support-certs-license": "2.0.3-1",
      "ifd-full3-addon-drm-support-certs-widevine": "2.0.3-1",
      "ifd-full3-addon-drm-support-cfg-generic": "1.0.1-1",
      "ifd-full3-addon-drm-support-img-fp": "5.6.4",
      "ifd-full3-addon-drm-support-img-proxy": "5.0.3",
      "ifd-full3-addon-drm-support-img-wv": "5.5.3",
      "ifd-full3-addon-drm-support-tpm": "2.0.2-1",
      "ifd-full3-addon-fp3d": "1.1.0-1",
      "ifd-full3-addon-fp3d-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-fp3d-content-ea": "2.0.0-1",
      "ifd-full3-addon-fp3d-content-generic": "2.0.0-1",
      "ifd-full3-addon-fp3d-img": "7.17.3",
      "ifd-full3-addon-gde-demo": "1.1.0-1",
      "ifd-full3-addon-gde-demo-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-gde-demo-img": "1.0.1-1",
      "ifd-full3-addon-gde-events": "1.1.0-1",
      "ifd-full3-addon-gde-events-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-gde-events-img": "2.0.0-1",
      "ifd-full3-addon-gladi8tor": "7.1.2-1",
      "ifd-full3-addon-gladi8tor-cfg-generic": "1.0.4-1",
      "ifd-full3-addon-gladi8tor-content-v3#0#1-ifd": "1.0.0-1",
      "ifd-full3-addon-gladi8tor-img-api": "2.2.1",
      "ifd-full3-addon-gladi8tor-img-web": "3.5.0",
      "ifd-full3-addon-mediausage": "4.1.0-1",
      "ifd-full3-addon-mediausage-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-mediausage-img": "6.0.1-72",
      "ifd-full3-addon-metadata": "5.1.0-1",
      "ifd-full3-addon-metadata-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-metadata-img": "8.0.3-61",
      "ifd-full3-addon-metadata-scripts": "3.1.0-1",
      "ifd-full3-addon-moving-map": "8.1.0-1",
      "ifd-full3-addon-moving-map-cfg-generic": "1.0.1-1",
      "ifd-full3-addon-moving-map-data": "1.0.7-1",
      "ifd-full3-addon-moving-map-img": "8.0.1-82",
      "ifd-full3-addon-moving-map-img-tiles": "5.0.1-43",
      "ifd-full3-addon-moving-map-push": "2.1.0-1",
      "ifd-full3-addon-moving-map-push-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-moving-map-push-img": "2.0.1-17",
      "ifd-full3-addon-orders": "5.1.0-1",
      "ifd-full3-addon-orders-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-orders-img": "2.0.1-21",
      "ifd-full3-addon-socket": "6.1.0-1",
      "ifd-full3-addon-socket-cfg-generic": "1.0.0-1",
      "ifd-full3-addon-socket-img": "2.0.3-54",
      "ifd-full4-app-crew": "4.1.0-1",
      "ifd-full4-app-crew-config-ee": "2.0.1-1",
      "ifd-full4-app-crew-config-generic": "2.0.30-4",
      "ifd-full4-app-crew-dev": "1.0.1-1",
      "ifd-full4-app-crew-scripts": "1.2.9-1",
      "ifd-full4-app-panel": "3.0.0-1",
      "ifd-full4-app-panel-auth": "2.0.1-1",
      "ifd-full4-app-panel-config-generic": "1.1.2-1",
      "ifd-full4-app-panel-dev": "1.0.1-1",
      "ifd-full4-app-panel-scripts": "1.0.0-1",
      "ifd-full4-app-pax-ng": "10.0.0-1",
      "ifd-full4-app-pax-ng-config-ee-0723": "2.0.3-1",
      "ifd-full4-app-pax-ng-config-generic": "2.0.123-5",
      "ifd-full4-app-pax-ng-dev": "1.1.3-1",
      "ifd-full4-app-pax-ng-scripts": "1.3.8-1",
      "ifd-full5-pm2-data-importer": "8.0.2-1",
      "ifd-full5-pm2-data-importer-scripts": "2.0.0-1",
      "ifd-full5-pm2-server-manager": "6.0.2-2",
      "ifd-full5-pm2-server-manager-cfg-generic": "1.0.0-1",
      "ifd-full5-pm2-server-monitor": "6.0.2-2",
      "ifd-full5-pm2-server-monitor-cfg-generic": "1.0.0-1",
      "ifd-full5-pm2-server-monitor-config": "4.0.0-1",
      "ifd-full5-pm2-server-monitor-config-cpu-mem": "2.0.0-1",
      "ifd-full5-pm2-server-monitor-config-temp-everbox": "2.0.0-1",
      "ifd-full5-pm2-server-monitor-scripts": "3.0.4-1"
    },
    "svc_pm2": {
      "manager": "6.0.2",
      "importer": "8.0.2",
      "monitor": "6.0.2"
    },
    "svc_docker": {
      "flightpush": "2.0.1-17",
      "tomcat": "5.0.3",
      "mediausage": "6.0.1-72",
      "datasync": "8.0.1-129",
      "flightdata": "8.0.1-82",
      "syncmanager": "3.0.1-30",
      "metadata": "8.0.3-61",
      "orders": "2.0.1-21",
      "tiles": "5.0.1-43",
      "socket": "2.0.3-54",
      "fps#ideanovatech#com": "5.6.4",
      "gde-web": "1.0.1-1",
      "ad-engine": "0.0.7",
      "gde-events": "2.0.0-1",
      "mongo": "3.6.23-22",
      "ad-registration": "0.0.2",
      "ad-proxy": "0.0.1",
      "wvpl#ideanovatech#com": "5.5.3",
      "games-api": "2.2.1",
      "fp3d": "7.17.3",
      "games-web": "3.5.0"
    },
    "svc_systemd": {
      "wap-status#sh": "2.0.0",
      "disk-setup#sh": "2.8.3",
      "svc-monitor#sh": "3.0.1",
      "power-status#py": "2.1.4",
      "system-status#sh": "2.1.1",
      "docker-compose-up#sh": "1.1.1",
      "power-status#sh": "2.0.2",
      "switch-status#sh": "2.0.0",
      "wap-status#py": "3.2.0",
      "after-start/51-bitmeteros": "1.0.0",
      "after-start/61-modem": "1.0.1",
      "after-start/42-crew-app-config": "2.0.0",
      "after-start/71-flightmode": "1.0.0",
      "after-start/62-ssid": "1.0.1",
      "after-start/63-wap": "1.0.0",
      "after-start/41-pax-app-config": "1.0.1",
      "after-start#sh": "3.0.2",
      "dump1090#sh": "1.3.0",
      "before-shutdown#sh": "2.0.0",
      "docker-cleanup#sh": "1.1.0"
    },
    "scripts": {
      "get-ip": "3.0.0",
      "ifd-upgrade": "1.0.1",
      "ifd-ad-engine-setup": "1.0.0",
      "ifd-crew-app-dev": "1.0.1",
      "ifd-panel-app-dev": "1.0.0",
      "featureflags": "2.1.0",
      "_mount_ext": "1.0.1",
      "_make_boot_image#sh": "3.0.0",
      "ifd-tiles": "1.1.0",
      "set-hostname": "2.0.1",
      "wapssh": "1.0.0",
      "_remove_drm_keys#sh": "1.0.0",
      "_common#sh": "5.0.4",
      "ifd-help": "1.0.1",
      "ifd-update": "1.0.0",
      "switch-mode#py": "0.0.3",
      "ifd-gladi8tor-content": "1.1.1",
      "_setup#sh": "2.0.5",
      "ifd-info": "3.0.2",
      "temperature": "2.1.0",
      "_deep_cleanup#sh": "2.1.0",
      "prepare-status": "1.4.0",
      "test-cc-connection": "1.0.2",
      "ifd-pax-app-dev": "1.3.1",
      "version": "3.0.1",
      "flight-info": "1.0.1",
      "svcmon": "1.0.1",
      "ifd-pax-app-config": "3.0.1",
      "ifd-gladi8tor-setup": "2.1.0",
      "boots": "1.1.0",
      "ifd-pax-app-media": "3.0.1",
      "id/_spread_id#sh": "1.1.1",
      "id/_clear_id#sh": "1.0.2",
      "id/_backup_id#sh": "1.0.1",
      "id/_common_id#sh": "1.1.1",
      "get-id": "1.1.0",
      "flight-debug": "1.0.0",
      "provision": "5.0.3",
      "restart#sh": "1.0.0",
      "powerboard-debug#sh": "2.0.3",
      "webdrm-decrypt": "",
      "ifd-sync-phases": "1.0.1",
      "pax-app": "5.0.0",
      "ifd-metadata-install": "4.1.0",
      "ifd-os-care": "1.6.1",
      "ifd-domain": "2.0.0",
      "_create_release#sh": "4.1.0",
      "ifd-status": "1.0.0",
      "webdrm-license": "1.2.1",
      "restart-helper#sh": "1.0.0",
      "ifd-metadata-update": "3.1.0",
      "flight-mode": "2.1.0",
      "ifd-sync": "4.1.1",
      "webdrm-provision": "1.0.3",
      "connected-users": "3.0.0",
      "events": "1.1.0",
      "ifd-wap-config": "3.0.1",
      "webdrm-install": "2.1.0",
      "powerboard": "1.0.0",
      "svc": "2.0.0",
      "ifd-wap-password": "1.0.3",
      "battery": "1.0.1",
      "apn": "1.0.1",
      "ifd-wap-wds": "1.3.3",
      "_mount_int": "1.0.1",
      "webdrm-multi-license-generator": "1.0.0",
      "alerts": "3.0.0",
      "flight-sim": "2.0.1",
      "crew-app": "4.0.0",
      "ssid": "4.0.1",
      "panel": "2.0.0",
      "renew-ip": "1.0.0",
      "webdrm-generate": "1.0.0",
      "ifd-logs": "3.0.0",
      "modem": "1.1.2",
      "presync-remove-bad-status-files#sh": "1.0.0",
      "wap": "3.1.0",
      "ifd-crew-app-config": "2.0.1",
      "ifd-hw-switch": "1.0.2"
    },
    "gladi8tor": {
      "games": {
        "version": "h1:E23E56PYPboLVH0/DnKFETXwg6wiEOiP0fH9r62+uBM=",
        "registered_at": "2023-08-31T05:37:46.917263525Z"
      },
      "streams": {
        "version": "h1:zbYAu8XmXwFZF3ZOkjHjA6W4b9+TDgqbAsIHycOJyBU=",
        "registered_at": "2023-08-31T05:37:46.926787425Z"
      },
      "news": {
        "version": "h1:thk8Ry7B+fXYGumCMegERdy2lGaU0rZOVyZ8kocCTbw=",
        "registered_at": "2023-07-06T12:23:36.550332941Z"
      },
      "advertisements": {
        "version": "h1:E/WJEs3INb1Qc+IWtbHjNA0oWRJet41YiLcgHK+pnJU=",
        "registered_at": "2023-07-06T12:23:36.867154783Z"
      },
      "sliders": {
        "version": "h1:CnVnZYjr1pJHJKXP31oBeBF/JFDrjbYWfDJDf+B0s2U=",
        "registered_at": "2023-07-06T12:23:37.150018105Z"
      },
      "content": ""
    }
  }
}

And then, we finally arrived in Levkada, I made a photo of the server and did not think about sharing my story until james shared his.

If it were my inflight entertainment system, I would not want it to leak so much. Many more airlines rely on the same system. Thus, I also notified the vendor.

Verhaltensüberwachung am Hansaplatz

flamenc, Neue Hansaplatz 2011, CC BY-SA 3.0
flamenc, Neue Hansaplatz 2011, CC BY-SA 3.0

Die Hamburger Polizei experimentiert am Hamburger Hansaplatz mit einer Verhaltenserkennung. Offenbar genügt die Kameraüberwachung nicht mehr, um Personen auf die angrenzenden Spielplätze zu verdrängen. Die Polizei rüstet also auf. Ohne vorherige Ausschreibung investiert sie in intelligente Überwachungssensoren, die Menschen „digital skelettiert“. Die Bewegungen der Skelette werden anschließend analysiert. Skelette, die sich nicht angepasst und unauffällig verhalten, lösen einen Alarm aus.

Das System, das vom Fraunhofer IOSB entwickelt wird, funktioniert nicht. Deren Pilotprojekt in Mannheim soll mangels Lerndaten verlängert werden. Das System soll Schwierigkeiten haben, Umarmungen von „kriminalistisch bedeutsamen Handlungsabläufen“ zu unterscheiden.

Inzwischen gibt es zu dem Thema auch allerlei Anfragen (und einen Antrag) in der Bürgerschaft:

Handheld Interagency Identity Detection Equipment

Verschiedene Quellen berichten, dass die Taliban Geräte zur biometrischen Datenerfassung und Identifikation des US-Militärs, sog. HIIDE (Handheld Interagency Identity Detection Equipment), erbeutet haben. Solche Geräte wurden zuvor genutzt, um potentiell gefährliche Personen und auch Verbündete oder Beschäftigte über einen Abgleich mit biometrischen Datenbanken identifizieren zu können. Dazu können die Geräte Iris, Fingerabdrücke und Gesichter erfassen. Der Vorfall zeigt, wie gefährlich biometrische Überwachung ist: Wenn gesammelte Daten in falsche Hände geraten, können die Betroffenen ihre biometrischen Daten kaum verändern. Ehemalige Angehörige der afghanischen Nationalarmee, die biometrisch registriert wurden, könnten nun Schwierigkeiten haben, ihre frühere Tätigkeit zu verbergen.

Die HIIDE wurden nicht nur in Afghanistan eingesetzt, sondern auch im Irak. Dort wurde schon früh wurde auf die Gefahren biometrischer Datenbanken hingewiesen. 2007 warnte ein Lieutenant Colonel des fingerprint and retina scanning center in Bagdad:

This database… essentially what it becomes is a hit list if it gets in the wrong hands.

Zu den Problemen und den möglichen Nachteilen für Leib und Leben äußerte sich damals auch die NGO Electronic Privacy Information Center in einem offenen Brief an das US-Verteidigungsministerium.

In den von Wikileaks veröffentlichten Afghanistan und Iraq War Logs finden sich verschiedene Hinweise auf Einsätze von HIIDE:

  • 26.04.2007: […] Before leaving we took photos of the 14 policemen present and documented them in the HIIDE system as well. […]
  • 07.01.2008: […] The team made several inputs of the present ANP soldiers into the HIIDE system. […]
  • 12.12.2008: […] HIIDE results came back negative and the trucks were allowed to proceed. […]
  • 13.12.2009: […] ABP RECEIVED CONTACT. ABP CAPTURED 2 SUSPECTS. SUSPECTS WILL BE ENROLLED INTO HIIDE SYSTEM. NO U.S. OR ABP INJURIES […]

Bilder vom Einsatz von HIIDE und anderer Geräte zur Erfassung biometrischer Merkmale hat die Biometrics Task Force in mehreren Jahren veröffentlicht. Auch ein Handbuch der HIIDE Series 4, verschiedene Fortbildungsmaterialien und ein Überblick über HIIDE und noch andere Geräte können im Internet gefunden werden.

Die HIIDE Series 4 hat 4 GB Speicher, verschiedene kabelgebundene Schnittstellen und erlaubt eine lokale Watch List von 22.000 Personen. Das Nachfolgemodell, die mehr als zehn Jahre alte HIIDE Series 5, hat internen und erweiterbaren Speicher von bspw. 80 GB + 120 GB, dazu WLAN sowie Schnittstellen für Mobil- und Satellitenfunk. Die Series 5 erlaubt eine lokale Watch List von 500.000 Personen und einen Abgleich mit entfernten Datenbanken. Die Architektur der biometrischen Datenbank(en) des US Militärs wird gerade verbessert.

Bei Matthias Monroy gibt es außerdem einen Artikel zu verschiedenen biometrischen Datenbanken und Watch Lists von NATO, US-Verteidigungsministerium und anderen.

Tor-Knoten an Universitäten

Während Universitäten mit ihrer Infrastruktur und Kompetenz ideale Bedingungen für den Betrieb von Tor-Knoten bieten, ist ihr Anteil am Tor-Netz erstaunlich gering. Wir berichten über unsere Erfahrungen beim Betrieb von zwei Exit-Knoten an der TU Berlin und an der Uni Hamburg. Dazu gibt es Empfehlungen zum Betrieb. Der Artikel ist auf Deutsch und auf Englisch verfügbar. Einen Vortrag dazu gibt es hier.

Hausdurchsuchung dank Tor?

Wer Tor-Exit-Knoten betreibt, wird unter Umständen von der Polizei besucht. Hier habe ich Links zu diversen Vorträgen, Medienberichten und weiterem Infomaterial gesammelt.

Vorträge
Presse
weiteres Infomaterial

Schutzranzen

Am 22.01.2018 hat Digitalcourage einen Artikel über das Tracking von Kindern und Schulranzen veröffentlicht. Dies haben wir zum Anlass genommen, die Schutzranzen-App der Coodriver GmbH einmal näher anzuschauen. Nach kurzer Suche sind wir auf eine API gestoßen, über die sie unter anderem IMEIs, Telefonnummern oder Zeitstempel der letzten bekannten Positionen abrufen konnten. Laut Coodriver GmbH war der ausgenutzte API-Endpunkt nur zu Testzwecken aktiv.

Details

Zuerst wurde mit Packet Capture der Datenverkehr der Schutzranzen-App mitgeschnitten. Dadurch konnten die URL einer API und dazugehörige HTTP Basic Auth Zugangsdaten in Erfahrung gebracht werden.

Anschließend wurde die apk mit apktool entpackt und nach Schlagwörtern wie http oder api gesucht. So wurden 14 verschiedene Funktionen identifiziert, die die API über HTTP GET oder PUT zur Verfügung stellte.

Eine dieser Funktionen lieferte eine Liste aller registrierten Tracker curl 'https://<http basic auth Zugangsdaten>@<URL der API>/.../trackers'. Die Liste enthielt für jeden Tracker die IMEI, die Telefonnummer, einen Namen (“… Test …”), den Zeitstempel des letzten Positionsupdates und den Zeitstempel der letzten Aktivität, den Batteriestatus (niedrig oder nicht), sowie eine Flag, ob der Tracker Eltern akzeptiert.

Für Regionen sectors?latitude=%.6f&longitude=%.6f&radius=%d konnte abgefragt werden, welche Tracker sich in diesem Sektor befinden. Durch einen sehr großen Radius, etwa radius=900000000, konnten Daten zu fast 100 Trackern abgerufen werden.

      {
         "id":"<IMEI>",
         "phone":"<TELEFONNR>",
         "name":"Test Internal 7",
         "lastSeen":1515187629000,
         "lastPositionUpdate":1515187634000,
         "visible":false,
         "acceptingParents":true,
         "batteryLow":false
      },

Mit den IMEIs der Tracker und über eine andere Funktion der API konnten die Eltern, die einem Tracker zugeordnet waren, abgerufen werden. Die Antwort der API enthielt mehrere IDs und einen Namen.

  {
      "tracking":true,
      "name":"Papa",
      "server":"<API>",
      "slot":"UNKNOWN",
      "primaryId":5,
      "appId":"12345-1234-1234-1234-12345678"
   },

Hier gibt es eine Stellungnahme von Coodriver zur gefundenen Lücke. heise online berichtete über die Einstellung des Projekts.

Disclosure Timeline

  • 22.01.2018
    • Telefonat mit Coodriver
    • Technische Details der Lücke per E-Mail an Coodriver gesendet
    • Nachfrage per E-Mail von Coodriver zu weiteren Details
    • Telefonat mit Coodriver zu weiteren Details
  • 23.01.2018
  • 06.02.2018
    • Nachfrage, ob Lücke geschlossen wurde, da für Ende Januar eine neue Version angekündigt worden war
    • Coodriver teilt mit, dass die neue Version voraussichtlich Ende Februar erscheinen wird
  • 22.02.2018
    • Nachfrage, ob die Lücke geschlossen wurde, da die API-Zugangsdaten nicht mehr funktionieren
    • Coodriver teilt mit, dass die Lücke noch nicht dauerhaft geschlossen wurde
  • 05.03.2018
  • 06.03.2018
    • Coodriver teilt mit, dass die Lücke geschlossen wurde und die Ortungsfunktion entfernt wurde