ghard13 is a library experiment to provide app hardening.
google cripples automations against its search engine via CAPTCHAS and rendering html attribute values as hexadecimal instead of human-readable strings. this makes it nearly impossible to select on class/id values (for example).
because of this observation, ghard13 attempts to mimic this for site owners. which provides a layer of security aginst automations and web scraping.
<h3 class="pictures" id="recent"> becomes <h3 class="f6e5d4c3b2a1" id="1a2b3c4d5e6f"#recent should be remapped in 3 placesghard13/
├── src/
│ ├── core/
│ │ ├── obfuscator.js # hex value generation and mapping
│ │ ├── selector_oracle.js # selector tracking and cross-reference
│ │ └── remapper.js # html/css/js selector remapping
│ ├── puzzle/
│ │ ├── puzzle_engine.js # puzzle generation and validation
│ │ ├── behavioral_tracker.js # mouse/timing/keystroke analysis
│ │ └── puzzle_ui.js # countdown timer, slider, input components
│ ├── session/
│ │ └── session_manager.js # minimal session handling
│ └── ghard13.js # main library entry point
├── demo/
│ ├── sample_site/ # test site for demonstration
│ │ ├── index.html
│ │ ├── styles.css
│ │ └── script.js
│ └── demo_interface.html # showcase interface
├── tests/
│ ├── core/ # core component tests
│ ├── puzzle/ # puzzle system tests
│ ├── integration/ # end-to-end tests
│ └── test_runner.js
├── build/
│ ├── webpack.config.js # build configuration
│ └── build_pipeline.js # buildtime processing
├── docs/
│ ├── experiment-concept.md # this document
│ ├── api_reference.md # library api documentation
│ └── integration_guide.md # implementation guide
├── package.json
├── README.md
└── .gitignore
npm install ghard13[still configuring]
|[START]*********************************************|
| ↓ |
|ghard13 library operates on site content |
| ↓ |
| site is requested ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← |
| → puzzle loads ↑
| → puzzle not solved ↑
| ↓ site not viewable ↑
| → bounce from session → → → → → → → → → → → ↑
| → puzzle solved ↑
| → site viewable w/ hardened content → → → → ↑
|***********************************************[END]|
within in 60 seconds time context:
wait b/t 2.0-5.0 seconds (visual feedback is countdown timer w/ refresh once expires),
drag slider 1 to 73% (random value b/t 11% and 87%)
type random word 'DONE'|'READY'|'HARD'|'OK13' into input
note: (can use (paste-me-not)[https://www.npmjs.com/package/paste-me-not] to ensure typed only input note: random word is RANDOM_UPPERCASE_FROM_SET + RANDOM_ALPHANUMERIC
<verb><delimiter=':'> <description>
notes:
| phase | item | purpose |
|---|---|---|
| 0.0 | project setup | foundation: package.json, build system, test framework |
| 0.1 | selector_oracle | track site selectors, cross-reference html/js/css |
| 0.2 | obfuscator | core hex value generation and mapping logic |
| 1.0 | remapper | remap selectors across html/css/js without breaking functionality |
| 1.1 | remapper tests | validate css/js functionality after selector obfuscation |
| 1.2 | build integration | buildtime processing pipeline for site files |
| 2.0 | puzzle_engine | generate behavioral + time-based puzzles |
| 2.1 | puzzle ui | countdown timer, slider, input field with paste-me-not |
| 2.2 | behavioral tracking | mouse movement, timing, keystroke rhythm analysis |
| 3.0 | session_manager | minimal session handling without site collision |
| 3.1 | puzzle validation | verify puzzle completion and behavioral patterns |
| 3.2 | fallback handling | serve obfuscated content on puzzle failure |
| 4.0 | demo interface | showcase ghard13 functionality and use cases |
| 4.1 | paste-me-not check | rechecking dependency use |
| 4.2 | hex algo refinement | configurable length (default 8), crypto randomness, site salt |
| 4.2.1 | deterministic seeding | use original selector as seed for consistent generation |
| 4.2.2 | hex pool optimization | pre-generate hex pool, lazy evaluation for performance |
| 4.2.3 | google-style mimicry | add occasional non-hex characters (_,-) for realism |
| 4.3.0 | slider implementation | implement working visual puzzle in demo |
| 4.3.1 | integration testing | end-to-end testing with sample site |
| 5.0 | documentation | usage.md, installation.md, architecture.md |
| 5.1 | license | transition from MIT license to paste-me-not-LICENSE |
| 5.2 | github release | release v0.1.0 to repo |
| 5.3 | github pages | setup demo in github pages |
| 5.4 | npm packaging | prepare for npm install ghard13 deployment |