CursorTokenLogin/_inspect_state_vscdb.py
2026-06-16 16:30:36 +08:00

59 lines
1.6 KiB
Python

import sqlite3
from pathlib import Path
p = Path("state.vscdb")
print("db_exists=", p.exists(), p.resolve())
conn = sqlite3.connect(p)
cur = conn.cursor()
tables = cur.execute(
"SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"
).fetchall()
print("tables=", tables)
try:
schema = cur.execute("PRAGMA table_info(ItemTable)").fetchall()
print("ItemTable schema=", schema)
rows = cur.execute(
"""
SELECT key, value
FROM ItemTable
WHERE lower(key) LIKE '%auth%'
OR lower(key) LIKE '%token%'
OR lower(key) LIKE '%cursoraccount%'
OR lower(key) LIKE '%cursor%'
ORDER BY key
"""
).fetchall()
print("matched_rows=", len(rows))
for k, v in rows:
s = "" if v is None else str(v)
masked = (s[:18] + "..." + s[-12:]) if len(s) > 40 else s
print(f"{k} len={len(s)} value={masked}")
print("\ncursorDiskKV schema=", cur.execute("PRAGMA table_info(cursorDiskKV)").fetchall())
disk_rows = cur.execute(
"""
SELECT key, value
FROM cursorDiskKV
WHERE lower(key) LIKE '%auth%'
OR lower(key) LIKE '%token%'
OR lower(key) LIKE '%cursor%'
OR lower(key) LIKE '%account%'
ORDER BY key
"""
).fetchall()
print("cursorDiskKV matched_rows=", len(disk_rows))
for k, v in disk_rows:
if isinstance(v, bytes):
s = v.decode("utf-8", "ignore")
else:
s = "" if v is None else str(v)
masked = (s[:18] + "..." + s[-12:]) if len(s) > 40 else s
print(f"{k} len={len(s)} value={masked}")
finally:
conn.close()