diff --git a/android/code/index.mjs b/android/code/index.mjs index b911125..d20898c 100644 --- a/android/code/index.mjs +++ b/android/code/index.mjs @@ -29,6 +29,16 @@ async function send_private_data() { io.emit("private_info", {adid, latitude: gps_coords[0], longitude: gps_coords[1]}) } +async function send_open_ports() { + let ports = new Set((await spawnPromise("bash", ["/conf/get_ports.sh"])).output.trim().split(' ')); + + let start_ports = fs.readFileSync("/ports").toString().trim().split(' '); + for (let port of start_ports) { + ports.delete(port); + } + io.emit("open_ports", [...ports]); +} + function send_notification(socket, is_ok, context, message) { socket.emit("notification", { is_ok, @@ -65,6 +75,10 @@ io.on("connection", (socket) => { await send_private_data(); }) + socket.on("open_ports_req", async () => { + await send_open_ports(); + }) + socket.on("reset_adid", async () => { await spawnPromise("bash", ["/conf/reset_adid.sh"]); await send_private_data(); diff --git a/android/conf/get_ports.sh b/android/conf/get_ports.sh new file mode 100644 index 0000000..72c8030 --- /dev/null +++ b/android/conf/get_ports.sh @@ -0,0 +1,6 @@ +out=$(adb shell su root "ss -tunlp | tail -n+2 | awk -F \" \" '{print \$5}' | awk -F ':' '{print \$NF}' | sort -n | uniq") + +if [ ! -f /ports ]; then + echo -n $out > /ports +fi +echo -n $out diff --git a/http_server/code/index.html b/http_server/code/index.html index 007a1d4..4e96a1f 100644 --- a/http_server/code/index.html +++ b/http_server/code/index.html @@ -129,6 +129,8 @@ +

Open ports

+

diff --git a/http_server/code/src/main.ts b/http_server/code/src/main.ts index 0941c8d..5747ff0 100644 --- a/http_server/code/src/main.ts +++ b/http_server/code/src/main.ts @@ -13,6 +13,7 @@ import { lat_priv_info_table, lon_priv_info_table, recentButton, + open_ports, } from "./shared"; import { start_notifications } from "./notifications"; @@ -116,6 +117,11 @@ socket.on("private_info", (data) => { lon_priv_info_table.textContent = data.longitude; }); +socket.on("open_ports", (data: string[]) => { + console.log("open_ports"); + open_ports.textContent = data.toString(); +}); + socket.emit("private_info_req"); socket.onAny((ev, ...args) => { @@ -227,6 +233,18 @@ async function screenshot_loop() { while (performance.now() - before < 100) await sleep(50); } } + +async function open_ports_loop() { + var before; + + while (true) { + before = performance.now(); + socket.emit("open_ports_req"); + while (performance.now() - before < 2000) await sleep(100); + } +} + +open_ports_loop(); screenshot_loop(); start_notifications(); start_traffic_log(); diff --git a/http_server/code/src/shared.ts b/http_server/code/src/shared.ts index e9ee988..c103cc2 100644 --- a/http_server/code/src/shared.ts +++ b/http_server/code/src/shared.ts @@ -12,4 +12,5 @@ export const adid_priv_info_table = document.getElementById("adid_priv_info_tabl export const lat_priv_info_table = document.getElementById("lat_priv_info_table")!; export const lon_priv_info_table = document.getElementById("lon_priv_info_table")!; +export const open_ports = document.getElementById("open-ports")!; export const socket = io();