Help
RSS
API
Feed
Maltego
Contact
Domain > blog.deadlight.workers.dev
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-10-22
104.21.62.134
(
ClassC
)
2026-01-28
172.67.136.45
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Wed, 28 Jan 2026 21:10:08 GMTContent-Type: text/htmlContent-Length: 13152Connection: keep-aliveVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?slNVSnQcPw6VMontpfi%2BB8DYd2n31Pn%2BKC83ktgC90U1jsIfJZ60gdWUlUKFnF0KIxyF9CpcI85Pw0gYfPlQ8ZdYE%2Bh1eOx69B27Y0z%2FVjfoWi9du%2F3pG4A%3D%3D}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 9c53798deba3b8b9-PDXalt-svc: h3:443; ma86400 html>body>h2>Version 1.0, Lightweight site framework on Cloudflare Workers /h2>p>This is the first iteration of a lightweight serverless CMS, more or less. What was intended as a refactor became a full rebuild, Ive separated that version entirely, ``` VERSION 1 - You are here | VERSION 2```the v2 demo is live(https://blog.deadlight.boo) but a work in progress. /p>hr>h2>README/h2>p># Deadlight Edge Bootstrap - Cloudflare Workers Blog/Site FrameworkA lightweight, edge-first web framework built on Cloudflare Workers with authentication, D1 database, and a clean dark UI. Deploy a blog or small site globally in under 5 minutes.π **Live Demo(https://deadlight.boo)**img width999 height904 altimage srchttps://github.com/user-attachments/assets/c4ae83e6-168b-4191-b7aa-748057a97141 />img width2249 height1218 altimage srchttps://github.com/user-attachments/assets/0595d9cd-9750-46e2-95c3-e9198f7fb84d />## Features- π **Zero cold starts** - Runs on Cloudflare Workers edge network- π **Authentication built-in** - JWT-based auth with secure sessions- π **Markdown support** - Write posts in Markdown, rendered safely- π **Dark/Light themes** - Smooth theme switching with localStorage- πΎ **D1 Database** - SQLite at the edge for your content- β‘ **Fast** - Under 150KB total, loads instantly worldwide- π‘οΈ **Secure** - XSS protection, CSRF safe, proper password hashing## Quick Start### Prerequisites- Cloudflare account (free tier works)- Node.js 16+- Wrangler CLI (`npm install -g wrangler`)### Deploy in 5 minutes1. Clone and install:~~~git clone https://github.com/gnarzilla/deadlight-bootstrap.gitcd deadlight-bootstrapnpm install~~~2. Create your D1 database:wrangler d1 create blog_content3. Create the database ID to wrangler.toml:d1_databasesbinding DBdatabase_name blog_contentdatabase_id your-database-id-here 4. Initialize the database:wrangler d1 execute blog_content --fileschema.sql5. Configure your domain in wrangler.toml:routespattern yourdomain.com/*zone_id your-zone-id6. Deploy:wrangler deploy7. Create your admin user:- Visit https://yourdomain.com/admin/add-user- Note the credentials- Remove the setup route from blog.js for security## Project Structure~~~deadline-bootstrap/βββ blog.js # Main router and request handlerβββ admin.js # Admin routes (create/edit/delete)βββ auth.js # Authentication logicβββ jwt.js # JWT token handlingβββ render.js # Page rendering functionsβββ templates.js # HTML templatesβββ styles.js # CSS (dark/light themes)βββ utils.js # Utility functionsβββ schema.sql # Database schemaβββ wrangler.toml # Cloudflare configuration~~~## Common Issues### DNS Error 1016Add an A record pointing to 192.0.2.1 (dummy IP) with proxy enabled.### Redirects not workingMake sure to use url.origin in redirects, not relative paths.## Customization### Change StylesEdit styles.js - both darkMinCSS and lightMinCSS are fully customizable.### Add Pages Add new routes in blog.js following the existing pattern.### Modify TemplatesEdit templates.js for layout changes## Roadmap / Future Features### Coming Soon- π Individual post pages with permalinks - Post excerpts on homepage- π° RSS feed generation- π·οΈ Tags and categories- π Search functionality- π Draft/scheduled posts- π¬ Comments (considering privacy-first approach)### Under Consideration - πΌοΈ Image uploads via R2 (with content safety measures)- π Analytics (privacy-respecting, no Google)- π Email notifications for new posts- π i18n/multi-language support- π¨ Theme marketplace- π± PWA support### Plugin Architecture- Extensible with Workers modules- Custom themes beyond dark/light- Webhook integrations### ContributingThis is a personal project shared for others to use and learn from. Feel free to:- Fork it for your own use- Submit PRs for bug fixes- Open issues for major bugs- Share what you build!Note: Im moving on to other projects, so response time may vary.## LicenseMIT - Use this however you want!## Acknowledgments- Built to learn Cloudflare Workers- Inspired by the need for simple, fast, edge-native websites- Special thanks to LLMs and vibe coding; Use the tools that you have at hand.Built by @gnarzilla at deadlight.boo/p>hr>h2>Soon todos/h2>p>- ~~For longer posts only show an excerpt on homepage, with a full page viewing of the long posts~~- ~~Add post author to posts~~DONE, SEE VERSION 2.0(https://blog.deadlight.boo)/p>hr>h2>Markdown Support/h2>p>## Markdown Guide1. **Headings**: To create a heading, adding #s in front of a word or phrase. The number of signs you use should correspond to the heading level. e.g. ### Heading level 3, Markdown Guide above is a Heading level 22. __Text Formatting:__ **Bold:** Wrap text with ** or __ *Italic:* Wrap text with * or _ ***Bold & Italic:*** Wrap text with *** or ___ ~~Strikethrough:~~ Wrap text with ~~3. `Code:` Wrap inline code with backticks ``` `printf(Hello world)` ``` `printf(Hello world)`4. Fenced Code Blocks: Wrap code blocks with three backticks (```) or tildes(~~~)~~~{ name: Patrick, age: 47, favorite-color: maroon}~~~5. Lists, start each listed item with - or * or + or a numbered list beginning with 1. as the current list of Markdown syntax is demonstrating. Codeblocks in an ordered list can disrupt count as the current syntax list is also demonstrating.+ Item 1+ Item 2+ Item 36. Links: Wrap link text in followed by the URL in ( ) `Sauce(https://www.markdownguide.org/basic-syntax/ markdownguide.org)`Sauce(https://www.markdownguide.org/basic-syntax/ markdownguide.org)7. Blockquotes: Start a line with a > symbol> Blockquote!8. Horizontal Rule: Use three or more ---, *** or ___ on a line by themselves.___9. Tables: Use | to separate columns and hyphens (---) to separate the header row.~~~| Syntax | Description || ----------- | ----------- || Header | Title || Paragraph | Text |~~~| Syntax | Description || ----------- | ----------- || Header | Title || Paragraph | Text |8. Alignment: By adding : to the left, right or on both sides of the hyphens within the header row.~~~| Syntax | Description | Test Text || :--- | :----: | ---: || Header | Title | Heres this || Paragraph | Text | And more |~~~| Syntax | Description | Test Text || :--- | :----: | ---: || Header | Title | Heres this || Paragraph | Text | And more |br>/p>hr>h2>Need to adjust timezone/h2>p>you sound like youre from lundunyou can also type more than a couple of words in a post if youre feeling frisky. I am not._______8 hours ahead, roughly/p>hr>h2>Successful rebuild from bootstrap frame/h2>p>end-to-end/p>hr>h2>July 25 - Moved to Primary - Plane Processing/h2>p>``` C// plane_processing.h#ifndef PLANE_PROCESSING_H#define PLANE_PROCESSING_H#include stdint.h>#include stdlib.h>#include stdbool.h>#include string.h>// Core structures for plane processingtypedef enum { PLANE_ACCESS_ROW_MAJOR, PLANE_ACCESS_COLUMN_MAJOR, PLANE_ACCESS_TILED} PlaneAccessPattern;typedef struct { uint64_t* data; // Pointer to plane data uint32_t plane_width; // Width in 64-bit words uint32_t plane_height; // Number of rows size_t total_size; // Total size in bytes PlaneAccessPattern access_mode;} BitPlane;typedef struct { BitPlane* input_a; BitPlane* input_b; BitPlane* output; struct { uint64_t operations; uint64_t cache_misses; uint64_t bank_conflicts; } metrics;} PlaneOperation;// Core functions for plane managementBitPlane* create_bit_plane(uint32_t width, uint32_t height, PlaneAccessPattern access_mode);void destroy_bit_plane(BitPlane* plane);bool resize_bit_plane(BitPlane* plane, uint32_t new_width, uint32_t new_height);// Basic plane operationsvoid plane_nand_operation(PlaneOperation* op);void plane_clear(BitPlane* plane);void plane_set_all(BitPlane* plane);bool plane_copy(BitPlane* dest, const BitPlane* src);// Utility functionsvoid print_plane_metrics(const PlaneOperation* op);void print_plane_data(const BitPlane* plane);#endif// plane_processing.c#include plane_processing.h#include stdio.h>BitPlane* create_bit_plane(uint32_t width, uint32_t height, PlaneAccessPattern access_mode) { BitPlane* plane (BitPlane*)malloc(sizeof(BitPlane)); if (!plane) return NULL; // Calculate total size needed (aligned to 64-bit boundary) size_t total_size width * height * sizeof(uint64_t); // Allocate aligned memory for the data plane->data (uint64_t*)aligned_alloc(64, total_size); if (!plane->data) { free(plane); return NULL; } plane->plane_width width; plane->plane_height height; plane->total_size total_size; plane->access_mode access_mode; // Initialize to zero plane_clear(plane); return plane;}void destroy_bit_plane(BitPlane* plane) { if (plane) { free(plane->data); free(plane); }}bool resize_bit_plane(BitPlane* plane, uint32_t new_width, uint32_t new_height) { size_t new_size new_width * new_height * sizeof(uint64_t); uint64_t* new_data (uint64_t*)aligned_alloc(64, new_size); if (!new_data) return false; // Copy existing data uint32_t min_width (new_width plane->plane_width) ? new_width : plane->plane_width; uint32_t min_height (new_height plane->plane_height) ? new_height : plane->plane_height; for (uint32_t row 0; row min_height; row++) { memcpy(&new_datarow * new_width, &plane->datarow * plane->plane_width, min_width * sizeof(uint64_t)); } free(plane->data); plane->data new_data; plane->plane_width new_width; plane->plane_height new_height; plane->total_size new_size; return true;}void plane_nand_operation(PlaneOperation* op) { if (!op || !op->input_a || !op->input_b || !op->output) return; // Ensure dimensions match if (op->input_a->plane_width ! op->input_b->plane_width || op->input_a->plane_height ! op->input_b->plane_height || op->input_a->plane_width ! op->output->plane_width || op->input_a->plane_height ! op->output->plane_height) { return; } // Process plane data size_t total_words op->input_a->plane_width * op->input_a->plane_height; for (size_t i 0; i total_words; i++) { // Each operation processes 64 bits in parallel op->output->datai ~(op->input_a->datai & op->input_b->datai); op->metrics.operations + 64; // Count bits processed }}void plane_clear(BitPlane* plane) { if (!plane || !plane->data) return; memset(plane->data, 0, plane->total_size);}void plane_set_all(BitPlane* plane) { if (!plane || !plane->data) return; memset(plane->data, 0xFF, plane->total_size);}bool plane_copy(BitPlane* dest, const BitPlane* src) { if (!dest || !src || dest->total_size ! src->total_size) return false; memcpy(dest->data, src->data, src->total_size); return true;}void print_plane_metrics(const PlaneOperation* op) { printf(Operation Metrics:\n); printf(Total bit operations: %lu\n, op->metrics.operations); printf(Cache misses: %lu\n, op->metrics.cache_misses); printf(Bank conflicts: %lu\n, op->metrics.bank_conflicts);}void print_plane_data(const BitPlane* plane) { if (!plane || !plane->data) return; printf(Plane Data (%ux%u):\n, plane->plane_width, plane->plane_height); for (uint32_t row 0; row plane->plane_height; row++) { for (uint32_t col 0; col plane->plane_width; col++) { printf(%016lx , plane->datarow * plane->plane_width + col); } printf(\n); }}```/p>hr>h2>update pineapple/h2>p>TWO MONTHS LATER/p>hr>h2>company_name/h2>p>*Blog - Login to post.*Can be used to keep track of a workflow or a centralized discussion space for collaboration projects. Among other things... br>/p>hr>h2>My First Post/h2>p>Hello, Emily!/p>hr>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Wed, 28 Jan 2026 21:10:08 GMTContent-Type: text/htmlContent-Length: 13152Connection: keep-aliveVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?swatM%2FhicAlFWDphqAVGZs6NN7tliCqTg2ihi7N6L4RTLMgOS%2BJa3I1HNZ4N0W3wXFIenXh%2BIc24XHwfb9i8D15XqF8TrA5ISlTKggyrLhIuxo5%2BAkp4Zew%3D%3D}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 9c537990f8f9fef3-PDXalt-svc: h3:443; ma86400 html>body>h2>Version 1.0, Lightweight site framework on Cloudflare Workers /h2>p>This is the first iteration of a lightweight serverless CMS, more or less. What was intended as a refactor became a full rebuild, Ive separated that version entirely, ``` VERSION 1 - You are here | VERSION 2```the v2 demo is live(https://blog.deadlight.boo) but a work in progress. /p>hr>h2>README/h2>p># Deadlight Edge Bootstrap - Cloudflare Workers Blog/Site FrameworkA lightweight, edge-first web framework built on Cloudflare Workers with authentication, D1 database, and a clean dark UI. Deploy a blog or small site globally in under 5 minutes.π **Live Demo(https://deadlight.boo)**img width999 height904 altimage srchttps://github.com/user-attachments/assets/c4ae83e6-168b-4191-b7aa-748057a97141 />img width2249 height1218 altimage srchttps://github.com/user-attachments/assets/0595d9cd-9750-46e2-95c3-e9198f7fb84d />## Features- π **Zero cold starts** - Runs on Cloudflare Workers edge network- π **Authentication built-in** - JWT-based auth with secure sessions- π **Markdown support** - Write posts in Markdown, rendered safely- π **Dark/Light themes** - Smooth theme switching with localStorage- πΎ **D1 Database** - SQLite at the edge for your content- β‘ **Fast** - Under 150KB total, loads instantly worldwide- π‘οΈ **Secure** - XSS protection, CSRF safe, proper password hashing## Quick Start### Prerequisites- Cloudflare account (free tier works)- Node.js 16+- Wrangler CLI (`npm install -g wrangler`)### Deploy in 5 minutes1. Clone and install:~~~git clone https://github.com/gnarzilla/deadlight-bootstrap.gitcd deadlight-bootstrapnpm install~~~2. Create your D1 database:wrangler d1 create blog_content3. Create the database ID to wrangler.toml:d1_databasesbinding DBdatabase_name blog_contentdatabase_id your-database-id-here 4. Initialize the database:wrangler d1 execute blog_content --fileschema.sql5. Configure your domain in wrangler.toml:routespattern yourdomain.com/*zone_id your-zone-id6. Deploy:wrangler deploy7. Create your admin user:- Visit https://yourdomain.com/admin/add-user- Note the credentials- Remove the setup route from blog.js for security## Project Structure~~~deadline-bootstrap/βββ blog.js # Main router and request handlerβββ admin.js # Admin routes (create/edit/delete)βββ auth.js # Authentication logicβββ jwt.js # JWT token handlingβββ render.js # Page rendering functionsβββ templates.js # HTML templatesβββ styles.js # CSS (dark/light themes)βββ utils.js # Utility functionsβββ schema.sql # Database schemaβββ wrangler.toml # Cloudflare configuration~~~## Common Issues### DNS Error 1016Add an A record pointing to 192.0.2.1 (dummy IP) with proxy enabled.### Redirects not workingMake sure to use url.origin in redirects, not relative paths.## Customization### Change StylesEdit styles.js - both darkMinCSS and lightMinCSS are fully customizable.### Add Pages Add new routes in blog.js following the existing pattern.### Modify TemplatesEdit templates.js for layout changes## Roadmap / Future Features### Coming Soon- π Individual post pages with permalinks - Post excerpts on homepage- π° RSS feed generation- π·οΈ Tags and categories- π Search functionality- π Draft/scheduled posts- π¬ Comments (considering privacy-first approach)### Under Consideration - πΌοΈ Image uploads via R2 (with content safety measures)- π Analytics (privacy-respecting, no Google)- π Email notifications for new posts- π i18n/multi-language support- π¨ Theme marketplace- π± PWA support### Plugin Architecture- Extensible with Workers modules- Custom themes beyond dark/light- Webhook integrations### ContributingThis is a personal project shared for others to use and learn from. Feel free to:- Fork it for your own use- Submit PRs for bug fixes- Open issues for major bugs- Share what you build!Note: Im moving on to other projects, so response time may vary.## LicenseMIT - Use this however you want!## Acknowledgments- Built to learn Cloudflare Workers- Inspired by the need for simple, fast, edge-native websites- Special thanks to LLMs and vibe coding; Use the tools that you have at hand.Built by @gnarzilla at deadlight.boo/p>hr>h2>Soon todos/h2>p>- ~~For longer posts only show an excerpt on homepage, with a full page viewing of the long posts~~- ~~Add post author to posts~~DONE, SEE VERSION 2.0(https://blog.deadlight.boo)/p>hr>h2>Markdown Support/h2>p>## Markdown Guide1. **Headings**: To create a heading, adding #s in front of a word or phrase. The number of signs you use should correspond to the heading level. e.g. ### Heading level 3, Markdown Guide above is a Heading level 22. __Text Formatting:__ **Bold:** Wrap text with ** or __ *Italic:* Wrap text with * or _ ***Bold & Italic:*** Wrap text with *** or ___ ~~Strikethrough:~~ Wrap text with ~~3. `Code:` Wrap inline code with backticks ``` `printf(Hello world)` ``` `printf(Hello world)`4. Fenced Code Blocks: Wrap code blocks with three backticks (```) or tildes(~~~)~~~{ name: Patrick, age: 47, favorite-color: maroon}~~~5. Lists, start each listed item with - or * or + or a numbered list beginning with 1. as the current list of Markdown syntax is demonstrating. Codeblocks in an ordered list can disrupt count as the current syntax list is also demonstrating.+ Item 1+ Item 2+ Item 36. Links: Wrap link text in followed by the URL in ( ) `Sauce(https://www.markdownguide.org/basic-syntax/ markdownguide.org)`Sauce(https://www.markdownguide.org/basic-syntax/ markdownguide.org)7. Blockquotes: Start a line with a > symbol> Blockquote!8. Horizontal Rule: Use three or more ---, *** or ___ on a line by themselves.___9. Tables: Use | to separate columns and hyphens (---) to separate the header row.~~~| Syntax | Description || ----------- | ----------- || Header | Title || Paragraph | Text |~~~| Syntax | Description || ----------- | ----------- || Header | Title || Paragraph | Text |8. Alignment: By adding : to the left, right or on both sides of the hyphens within the header row.~~~| Syntax | Description | Test Text || :--- | :----: | ---: || Header | Title | Heres this || Paragraph | Text | And more |~~~| Syntax | Description | Test Text || :--- | :----: | ---: || Header | Title | Heres this || Paragraph | Text | And more |br>/p>hr>h2>Need to adjust timezone/h2>p>you sound like youre from lundunyou can also type more than a couple of words in a post if youre feeling frisky. I am not._______8 hours ahead, roughly/p>hr>h2>Successful rebuild from bootstrap frame/h2>p>end-to-end/p>hr>h2>July 25 - Moved to Primary - Plane Processing/h2>p>``` C// plane_processing.h#ifndef PLANE_PROCESSING_H#define PLANE_PROCESSING_H#include stdint.h>#include stdlib.h>#include stdbool.h>#include string.h>// Core structures for plane processingtypedef enum { PLANE_ACCESS_ROW_MAJOR, PLANE_ACCESS_COLUMN_MAJOR, PLANE_ACCESS_TILED} PlaneAccessPattern;typedef struct { uint64_t* data; // Pointer to plane data uint32_t plane_width; // Width in 64-bit words uint32_t plane_height; // Number of rows size_t total_size; // Total size in bytes PlaneAccessPattern access_mode;} BitPlane;typedef struct { BitPlane* input_a; BitPlane* input_b; BitPlane* output; struct { uint64_t operations; uint64_t cache_misses; uint64_t bank_conflicts; } metrics;} PlaneOperation;// Core functions for plane managementBitPlane* create_bit_plane(uint32_t width, uint32_t height, PlaneAccessPattern access_mode);void destroy_bit_plane(BitPlane* plane);bool resize_bit_plane(BitPlane* plane, uint32_t new_width, uint32_t new_height);// Basic plane operationsvoid plane_nand_operation(PlaneOperation* op);void plane_clear(BitPlane* plane);void plane_set_all(BitPlane* plane);bool plane_copy(BitPlane* dest, const BitPlane* src);// Utility functionsvoid print_plane_metrics(const PlaneOperation* op);void print_plane_data(const BitPlane* plane);#endif// plane_processing.c#include plane_processing.h#include stdio.h>BitPlane* create_bit_plane(uint32_t width, uint32_t height, PlaneAccessPattern access_mode) { BitPlane* plane (BitPlane*)malloc(sizeof(BitPlane)); if (!plane) return NULL; // Calculate total size needed (aligned to 64-bit boundary) size_t total_size width * height * sizeof(uint64_t); // Allocate aligned memory for the data plane->data (uint64_t*)aligned_alloc(64, total_size); if (!plane->data) { free(plane); return NULL; } plane->plane_width width; plane->plane_height height; plane->total_size total_size; plane->access_mode access_mode; // Initialize to zero plane_clear(plane); return plane;}void destroy_bit_plane(BitPlane* plane) { if (plane) { free(plane->data); free(plane); }}bool resize_bit_plane(BitPlane* plane, uint32_t new_width, uint32_t new_height) { size_t new_size new_width * new_height * sizeof(uint64_t); uint64_t* new_data (uint64_t*)aligned_alloc(64, new_size); if (!new_data) return false; // Copy existing data uint32_t min_width (new_width plane->plane_width) ? new_width : plane->plane_width; uint32_t min_height (new_height plane->plane_height) ? new_height : plane->plane_height; for (uint32_t row 0; row min_height; row++) { memcpy(&new_datarow * new_width, &plane->datarow * plane->plane_width, min_width * sizeof(uint64_t)); } free(plane->data); plane->data new_data; plane->plane_width new_width; plane->plane_height new_height; plane->total_size new_size; return true;}void plane_nand_operation(PlaneOperation* op) { if (!op || !op->input_a || !op->input_b || !op->output) return; // Ensure dimensions match if (op->input_a->plane_width ! op->input_b->plane_width || op->input_a->plane_height ! op->input_b->plane_height || op->input_a->plane_width ! op->output->plane_width || op->input_a->plane_height ! op->output->plane_height) { return; } // Process plane data size_t total_words op->input_a->plane_width * op->input_a->plane_height; for (size_t i 0; i total_words; i++) { // Each operation processes 64 bits in parallel op->output->datai ~(op->input_a->datai & op->input_b->datai); op->metrics.operations + 64; // Count bits processed }}void plane_clear(BitPlane* plane) { if (!plane || !plane->data) return; memset(plane->data, 0, plane->total_size);}void plane_set_all(BitPlane* plane) { if (!plane || !plane->data) return; memset(plane->data, 0xFF, plane->total_size);}bool plane_copy(BitPlane* dest, const BitPlane* src) { if (!dest || !src || dest->total_size ! src->total_size) return false; memcpy(dest->data, src->data, src->total_size); return true;}void print_plane_metrics(const PlaneOperation* op) { printf(Operation Metrics:\n); printf(Total bit operations: %lu\n, op->metrics.operations); printf(Cache misses: %lu\n, op->metrics.cache_misses); printf(Bank conflicts: %lu\n, op->metrics.bank_conflicts);}void print_plane_data(const BitPlane* plane) { if (!plane || !plane->data) return; printf(Plane Data (%ux%u):\n, plane->plane_width, plane->plane_height); for (uint32_t row 0; row plane->plane_height; row++) { for (uint32_t col 0; col plane->plane_width; col++) { printf(%016lx , plane->datarow * plane->plane_width + col); } printf(\n); }}```/p>hr>h2>update pineapple/h2>p>TWO MONTHS LATER/p>hr>h2>company_name/h2>p>*Blog - Login to post.*Can be used to keep track of a workflow or a centralized discussion space for collaboration projects. Among other things... br>/p>hr>h2>My First Post/h2>p>Hello, Emily!/p>hr>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]