Dev Patel
Artifact APR – NOV 2023Source

Overse Browser

A multi-tab desktop browser in Python and PyQt5, with SQLite history and AES-encrypted profiles.

Classification
Artifact
Client
Personal
Window
APR 2023 → NOV 2023
Duration
7 MO
Status
Complete
The problem

The problem

I wanted to understand what a browser actually does — tab lifecycle, session state, history, and where the security boundaries sit — which is hard to learn from the outside.

What I built

What I built

PyQt5 over a Chromium widget for rendering, with the parts I wanted to understand written by hand: tab lifecycle and state, bookmarks, and history in SQLite.

Profile storage is AES-encrypted through OpenSSL, so the interesting question — what a browser is trusted to hold on disk, and what happens if that file is read by someone else — had to be answered rather than assumed.

Measured

Measured

Multi-tablifecycle by hand
SQLitehistory + bookmarks
AESencrypted profiles
  • Working multi-tab browser with persistent history and bookmarks.
  • Encrypted profile storage rather than plaintext on disk.
  • A concrete understanding of where browser state actually lives.
Plan

Plan

Plan

5 items · scale 1:1
PYQT5 SHELLwindow · tabs1CHROMIUM WIDGETrendering2SESSION MANAGERtab lifecycle3SQLITEhistory · bookmarks4AES / OPENSSLprofile at rest5
Note · The rendering engine is borrowed; everything to the right of it was the point.
What I'd redraw

What I'd redraw

Encrypting the profile without a real key-derivation story is security theatre — the key handling is the weak link, not the cipher. Done again, I'd start from where the key lives and work outwards.

Materials

Materials

PythonPyQt5SQLiteOpenSSLAES