dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Account takeover detection and behavioural risk intelligence. All data is synthetic or simulated.
SecurityPython · JavaScriptGitHub @varun77tOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Account takeover detection and behavioural risk intelligence. Sentinel builds a
behavioural profile for each account, scores new activity against that account's
own history, explains what moved the score, and presents the result through an
investigation console.
Every account, login and payment in this system is synthetic. It is a
learning project built against a public research dataset and a scenario
simulator. It is not connected to any real financial system and holds no real
credentials.
The finding the project is built aroundRead the full README ↗Account takeover detection and behavioural risk intelligence. Sentinel builds a behavioural profile for each account, scores new activity against that account's own history, explains what moved the score, and presents the result through an investigation console.
Every account, login and payment in this system is synthetic. It is a learning project built against a public research dataset and a scenario simulator. It is not connected to any real financial system and holds no real credentials.
The RBA login dataset contains 31,269,264 rows and 141 account-takeover logins — a positive rate of 4.51e-06. Two measured facts shaped everything else:
Is Attack IP is a genuinely different task whose metrics must
never be presented as takeover performance.The gap between those two is reported rather than hidden. The simulator-trained model scores 89.3% on synthetic test data and 50.0% against real takeovers. Both numbers are on the Models screen, labelled by what they were measured against.
login event
|
behavioural profile <- built ONLY from events strictly before this one
|
feature engineering <- deviation from that account's own pattern
|
+-- XGBoost (attack-IP probability)
+-- Isolation Forest (anomaly score)
|
risk fusion -> score + band, with deterministic floors
|
SHAP -> ranked, plain-English factors
|
alert + timeline -> Postgres -> FastAPI -> React console
One feature-engineering package is imported by the training scripts, the seeder and the API. If a feature were computed differently offline than online, the demo would be a lie.
reports/burst_response.md.Requires Python 3.12, Node 22, and Docker.
docker compose up -d db
python -m venv .venv && .venv/Scripts/pip install -e ".[dev]"
cp .env.example .env
.venv/Scripts/python -m alembic upgrade head
.venv/Scripts/python scripts/seed_demo.py
.venv/Scripts/python -m uvicorn backend.app.main:app --reload
cd frontend && npm install && npm run dev
The console is at http://localhost:5173, the API at http://localhost:8000,
and its docs at /docs.
Deploying it is covered in DEPLOYMENT.md.
| Path | What lives there |
|---|---|
ml/ | features, profiles, models, risk fusion, explanations, simulator |
backend/ | FastAPI app, SQLAlchemy models, Alembic migrations |
frontend/ | React + TypeScript console — see its README |
reports/ | committed EDA and evaluation write-ups |
tests/ | leakage guards, feature fixtures, API integration tests |
scripts/ | dataset download, demo seeding |
.venv/Scripts/python -m pytest -q
The highest-value ones are the leakage guards: a profile built with as_of=t is
byte-identical whether or not events after t exist in the input, and the
chronological split asserts max(train) < min(test).
A few API tests read the seeded database live and reuse each account's most
recent device and city. Running a Security Lab scenario writes real rows and can
therefore break them until scripts/seed_demo.py is run again.
The login data is the RBA dataset (Wiefling et al., CC BY 4.0). Its IP addresses, user agents and timestamps were synthesised by its authors, so they are never geolocated here — the provided city and country columns are used instead. No public dataset links logins to transactions for the same account with takeover labels, so all transaction behaviour is simulator-generated and labelled as such in the database, the API and the UI.