dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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 finding the project is built aroundREADME 전문 보기 ↗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.