mirror of
https://github.com/cliffe/HacktivityLabSheets.git
synced 2026-02-20 13:50:46 +00:00
Enhance lab sheets with action item styling and installation guide
- Added a new Action Items Guide to provide styling classes for highlighting important sections in lab sheets. - Introduced an INSTALL.md file detailing Jekyll installation and testing procedures. - Implemented action item and warning item styles in the main stylesheet for better visual distinction. - Updated lab content to utilize new action item classes for clarity and emphasis on critical instructions. - Enhanced JavaScript functionality to process custom highlight syntax in lab content.
This commit is contained in:
174
ACTION-ITEMS-GUIDE.md
Normal file
174
ACTION-ITEMS-GUIDE.md
Normal file
@@ -0,0 +1,174 @@
|
||||
# Action Items Guide for Lab Sheets
|
||||
|
||||
This guide shows how to use the special styling classes to highlight action items and important sections in your lab sheets.
|
||||
|
||||
## Available Action Item Classes
|
||||
|
||||
### 1. `.action-item` - General Action Required
|
||||
Use this for general actions that students need to perform.
|
||||
|
||||
```html
|
||||
<div class="action-item">
|
||||
<h3>Task 1: Install Required Software</h3>
|
||||
<p>Download and install the following tools:</p>
|
||||
<ul>
|
||||
<li>Nmap</li>
|
||||
<li>Wireshark</li>
|
||||
<li>Metasploit Framework</li>
|
||||
</ul>
|
||||
</div>
|
||||
```
|
||||
|
||||
### 2. `.warning-item` - Important Warnings
|
||||
Use this for warnings or important notices.
|
||||
|
||||
```html
|
||||
<div class="warning-item">
|
||||
<h3>⚠️ Important Warning</h3>
|
||||
<p>Only perform these activities in a controlled lab environment. Never attempt these techniques on systems you don't own or have explicit permission to test.</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
### 3. `.danger-item` - Critical Warnings
|
||||
Use this for critical warnings or dangerous operations.
|
||||
|
||||
```html
|
||||
<div class="danger-item">
|
||||
<h3>🚨 Critical Security Notice</h3>
|
||||
<p>This lab involves creating actual malware samples. Ensure you are working in an isolated environment and have proper authorization.</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
### 4. `.success-item` - Completion/Success
|
||||
Use this to indicate successful completion or positive outcomes.
|
||||
|
||||
```html
|
||||
<div class="success-item">
|
||||
<h3>✅ Lab Complete</h3>
|
||||
<p>Congratulations! You have successfully completed all tasks in this lab. Make sure to document your findings in your lab report.</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
### 5. `.action-text` - Inline Action Items
|
||||
Use this for inline action items within paragraphs.
|
||||
|
||||
```html
|
||||
<p>First, <span class="action-text">open a terminal window</span> and navigate to the lab directory. Then <span class="action-text">run the setup script</span> to configure your environment.</p>
|
||||
```
|
||||
|
||||
## Markdown Usage
|
||||
|
||||
Since Jekyll processes Markdown, you can also use HTML directly in your Markdown files:
|
||||
|
||||
```markdown
|
||||
## Lab Exercise 1
|
||||
|
||||
<div class="action-item">
|
||||
### Step 1: Network Discovery
|
||||
Use Nmap to scan the target network and identify active hosts.
|
||||
|
||||
```bash
|
||||
nmap -sn 192.168.1.0/24
|
||||
```
|
||||
</div>
|
||||
|
||||
<div class="warning-item">
|
||||
### ⚠️ Legal Notice
|
||||
Remember to only scan networks you own or have explicit permission to test.
|
||||
</div>
|
||||
```
|
||||
|
||||
## Color Schemes
|
||||
|
||||
The action items automatically adapt to both light and dark themes:
|
||||
|
||||
- **Light Theme**: Uses lighter backgrounds with darker text
|
||||
- **Dark Theme**: Uses darker backgrounds with lighter text
|
||||
- **Icons**: Each type has a distinctive emoji icon
|
||||
- **Borders**: Left border in theme-appropriate colors
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use sparingly**: Don't overuse action items - they should highlight truly important sections
|
||||
2. **Be specific**: Make action items clear and actionable
|
||||
3. **Consistent language**: Use consistent terminology across your lab sheets
|
||||
4. **Test both themes**: Check how your action items look in both light and dark modes
|
||||
|
||||
## Examples in Context
|
||||
|
||||
Here's how you might structure a typical lab section:
|
||||
|
||||
```markdown
|
||||
## Network Scanning Lab
|
||||
|
||||
<div class="action-item">
|
||||
### Task 1: Basic Network Scan
|
||||
Perform a basic network scan of the target range 192.168.1.0/24.
|
||||
|
||||
```bash
|
||||
nmap -sn 192.168.1.0/24
|
||||
```
|
||||
</div>
|
||||
|
||||
<div class="warning-item">
|
||||
### Important
|
||||
Only scan networks you own or have explicit permission to test.
|
||||
</div>
|
||||
|
||||
<div class="action-item">
|
||||
### Task 2: Service Detection
|
||||
Once you've identified active hosts, perform service detection on the first three hosts.
|
||||
|
||||
```bash
|
||||
nmap -sV 192.168.1.1,2,3
|
||||
```
|
||||
</div>
|
||||
|
||||
<div class="success-item">
|
||||
### Completion
|
||||
If you can see the services running on the target hosts, you have successfully completed this lab section.
|
||||
</div>
|
||||
```
|
||||
|
||||
This creates a visually distinct and easy-to-follow lab experience for students.
|
||||
|
||||
## Highlight Syntax
|
||||
|
||||
You can also use the `==highlight==` syntax to highlight specific text inline:
|
||||
|
||||
```markdown
|
||||
This is normal text, but this ==important information== should be highlighted.
|
||||
|
||||
You can also highlight ==multiple words== in the same paragraph.
|
||||
```
|
||||
|
||||
This will render as:
|
||||
- **Light theme**: Yellow background with black text
|
||||
- **Dark theme**: Darker yellow background with black text
|
||||
|
||||
### When to Use Highlight vs Action Items
|
||||
|
||||
- **Use `==highlight==`** for emphasizing important information, key terms, or concepts
|
||||
- **Use action item classes** for actual tasks, warnings, or structured content blocks
|
||||
|
||||
### Example Usage
|
||||
|
||||
```markdown
|
||||
## Network Security Lab
|
||||
|
||||
<div class="action-item">
|
||||
### Task 1: Scan the Network
|
||||
Use Nmap to scan the ==target network== and identify ==active hosts==.
|
||||
|
||||
```bash
|
||||
nmap -sn 192.168.1.0/24
|
||||
```
|
||||
</div>
|
||||
|
||||
<div class="warning-item">
|
||||
### Important
|
||||
Only scan networks you ==own== or have explicit permission to test.
|
||||
</div>
|
||||
```
|
||||
|
||||
This combines both highlighting techniques for maximum clarity.
|
||||
255
Gemfile.lock
255
Gemfile.lock
@@ -1,85 +1,282 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (8.0.2.1)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||
connection_pool (>= 2.2.5)
|
||||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
securerandom (>= 0.3)
|
||||
tzinfo (~> 2.0, >= 2.0.5)
|
||||
uri (>= 0.13.1)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
base64 (0.3.0)
|
||||
benchmark (0.4.1)
|
||||
bigdecimal (3.1.3)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.23.11)
|
||||
concurrent-ruby (1.3.5)
|
||||
connection_pool (2.5.4)
|
||||
csv (3.2.6)
|
||||
dnsruby (1.73.0)
|
||||
base64 (>= 0.2)
|
||||
logger (~> 1.6)
|
||||
simpleidn (~> 0.2.1)
|
||||
drb (2.2.3)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
eventmachine (1.2.7)
|
||||
execjs (2.10.0)
|
||||
faraday (2.13.4)
|
||||
faraday-net_http (>= 2.0, < 3.5)
|
||||
json
|
||||
logger
|
||||
faraday-net_http (3.4.1)
|
||||
net-http (>= 0.5.0)
|
||||
ffi (1.17.2-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.32.1-x86_64-linux-gnu)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
gemoji (4.1.0)
|
||||
github-pages (232)
|
||||
github-pages-health-check (= 1.18.2)
|
||||
jekyll (= 3.10.0)
|
||||
jekyll-avatar (= 0.8.0)
|
||||
jekyll-coffeescript (= 1.2.2)
|
||||
jekyll-commonmark-ghpages (= 0.5.1)
|
||||
jekyll-default-layout (= 0.1.5)
|
||||
jekyll-feed (= 0.17.0)
|
||||
jekyll-gist (= 1.5.0)
|
||||
jekyll-github-metadata (= 2.16.1)
|
||||
jekyll-include-cache (= 0.2.1)
|
||||
jekyll-mentions (= 1.6.0)
|
||||
jekyll-optional-front-matter (= 0.3.2)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-readme-index (= 0.3.0)
|
||||
jekyll-redirect-from (= 0.16.0)
|
||||
jekyll-relative-links (= 0.6.1)
|
||||
jekyll-remote-theme (= 0.4.3)
|
||||
jekyll-sass-converter (= 1.5.2)
|
||||
jekyll-seo-tag (= 2.8.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-swiss (= 1.0.0)
|
||||
jekyll-theme-architect (= 0.2.0)
|
||||
jekyll-theme-cayman (= 0.2.0)
|
||||
jekyll-theme-dinky (= 0.2.0)
|
||||
jekyll-theme-hacker (= 0.2.0)
|
||||
jekyll-theme-leap-day (= 0.2.0)
|
||||
jekyll-theme-merlot (= 0.2.0)
|
||||
jekyll-theme-midnight (= 0.2.0)
|
||||
jekyll-theme-minimal (= 0.2.0)
|
||||
jekyll-theme-modernist (= 0.2.0)
|
||||
jekyll-theme-primer (= 0.6.0)
|
||||
jekyll-theme-slate (= 0.2.0)
|
||||
jekyll-theme-tactile (= 0.2.0)
|
||||
jekyll-theme-time-machine (= 0.2.0)
|
||||
jekyll-titles-from-headings (= 0.5.3)
|
||||
jemoji (= 0.13.0)
|
||||
kramdown (= 2.4.0)
|
||||
kramdown-parser-gfm (= 1.1.0)
|
||||
liquid (= 4.0.4)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.5.1)
|
||||
nokogiri (>= 1.16.2, < 2.0)
|
||||
rouge (= 3.30.0)
|
||||
terminal-table (~> 1.4)
|
||||
webrick (~> 1.8)
|
||||
github-pages-health-check (1.18.2)
|
||||
addressable (~> 2.3)
|
||||
dnsruby (~> 1.60)
|
||||
octokit (>= 4, < 8)
|
||||
public_suffix (>= 3.0, < 6.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.7)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.4.1)
|
||||
jekyll (3.10.0)
|
||||
addressable (~> 2.4)
|
||||
base64 (~> 0.2)
|
||||
colorator (~> 1.0)
|
||||
csv (~> 3.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (>= 2.0, < 4.0)
|
||||
i18n (>= 0.7, < 2)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
json (~> 2.6)
|
||||
kramdown (~> 2.3, >= 2.3.1)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
kramdown (>= 1.17, < 3)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3, >= 0.3.6)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 3.0, < 5.0)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (>= 1.8, < 4.0)
|
||||
webrick (~> 1.7)
|
||||
webrick (>= 1.0)
|
||||
jekyll-avatar (0.8.0)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-coffeescript (1.2.2)
|
||||
coffee-script (~> 2.2)
|
||||
coffee-script-source (~> 1.12)
|
||||
jekyll-commonmark (1.4.0)
|
||||
commonmarker (~> 0.22)
|
||||
jekyll-commonmark-ghpages (0.5.1)
|
||||
commonmarker (>= 0.23.7, < 1.1.0)
|
||||
jekyll (>= 3.9, < 4.0)
|
||||
jekyll-commonmark (~> 1.4.0)
|
||||
rouge (>= 2.0, < 5.0)
|
||||
jekyll-default-layout (0.1.5)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-feed (0.17.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-sass-converter (3.1.0)
|
||||
sass-embedded (~> 1.75)
|
||||
jekyll-gist (1.5.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.16.1)
|
||||
jekyll (>= 3.4, < 5.0)
|
||||
octokit (>= 4, < 7, != 4.4.0)
|
||||
jekyll-include-cache (0.2.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-mentions (1.6.0)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-optional-front-matter (0.3.2)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-readme-index (0.3.0)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-relative-links (0.6.1)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-remote-theme (0.4.3)
|
||||
addressable (~> 2.0)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
|
||||
rubyzip (>= 1.3.0, < 3.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.8.0)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-sitemap (1.4.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-swiss (1.0.0)
|
||||
jekyll-theme-architect (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-cayman (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-dinky (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-hacker (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-leap-day (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-merlot (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-midnight (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-minimal (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-modernist (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-primer (0.6.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-github-metadata (~> 2.9)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-slate (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-tactile (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-time-machine (0.2.0)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-titles-from-headings (0.5.3)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
jemoji (0.13.0)
|
||||
gemoji (>= 3, < 5)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
json (2.6.3)
|
||||
kramdown (2.5.1)
|
||||
rexml (>= 3.3.9)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.4)
|
||||
listen (3.9.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
logger (1.7.0)
|
||||
mercenary (0.3.6)
|
||||
minima (2.5.1)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.25.5)
|
||||
net-http (0.6.0)
|
||||
uri
|
||||
nokogiri (1.18.10-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
octokit (4.25.1)
|
||||
faraday (>= 1, < 3)
|
||||
sawyer (~> 0.9)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.0.6)
|
||||
public_suffix (5.1.1)
|
||||
racc (1.8.1)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.4.3)
|
||||
rouge (3.28.0)
|
||||
rouge (3.30.0)
|
||||
rubyzip (2.4.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.92.1-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.31)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
unicode-display_width (2.6.0)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sawyer (0.9.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (>= 0.17.3, < 3)
|
||||
securerandom (0.4.1)
|
||||
simpleidn (0.2.3)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
typhoeus (1.5.0)
|
||||
ethon (>= 0.9.0, < 0.16.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
unicode-display_width (1.8.0)
|
||||
uri (1.0.3)
|
||||
webrick (1.8.1)
|
||||
|
||||
PLATFORMS
|
||||
x86_64-linux-gnu
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll
|
||||
jekyll-feed
|
||||
github-pages
|
||||
jekyll-feed (~> 0.12)
|
||||
jekyll-sitemap
|
||||
|
||||
BUNDLED WITH
|
||||
|
||||
113
INSTALL.md
Normal file
113
INSTALL.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Jekyll Installation and Testing Guide
|
||||
|
||||
## Prerequisites Installation
|
||||
|
||||
### Option 1: Using Snap (Recommended)
|
||||
```bash
|
||||
sudo snap install ruby --classic
|
||||
```
|
||||
|
||||
### Option 2: Using APT
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install ruby-full build-essential
|
||||
```
|
||||
|
||||
### Option 3: Using rbenv (For development)
|
||||
```bash
|
||||
# Install rbenv
|
||||
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
|
||||
|
||||
# Add to your shell profile (~/.bashrc or ~/.zshrc)
|
||||
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
|
||||
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
|
||||
# Install Ruby
|
||||
rbenv install 3.1.0
|
||||
rbenv global 3.1.0
|
||||
```
|
||||
|
||||
## Install Bundler and Dependencies
|
||||
|
||||
Once Ruby is installed, run these commands in the project directory:
|
||||
|
||||
```bash
|
||||
# Install Bundler
|
||||
gem install bundler
|
||||
|
||||
# Install project dependencies
|
||||
bundle install
|
||||
```
|
||||
|
||||
## Test the Site
|
||||
|
||||
### Build the Site
|
||||
```bash
|
||||
bundle exec jekyll build
|
||||
```
|
||||
|
||||
### Serve Locally
|
||||
```bash
|
||||
bundle exec jekyll serve
|
||||
```
|
||||
|
||||
The site will be available at `http://localhost:4000`
|
||||
|
||||
### Serve with Live Reload
|
||||
```bash
|
||||
bundle exec jekyll serve --livereload
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### If you get permission errors:
|
||||
```bash
|
||||
# Install gems to user directory
|
||||
bundle config set --local path 'vendor/bundle'
|
||||
bundle install
|
||||
```
|
||||
|
||||
### If you get SSL errors:
|
||||
```bash
|
||||
# Update certificates
|
||||
sudo apt-get update
|
||||
sudo apt-get install ca-certificates
|
||||
```
|
||||
|
||||
### If Jekyll build fails:
|
||||
```bash
|
||||
# Clean and rebuild
|
||||
bundle exec jekyll clean
|
||||
bundle exec jekyll build --verbose
|
||||
```
|
||||
|
||||
## Expected Output
|
||||
|
||||
When you run `bundle exec jekyll serve`, you should see:
|
||||
- Site building successfully
|
||||
- Server starting on http://localhost:4000
|
||||
- No errors in the output
|
||||
|
||||
## Features to Test
|
||||
|
||||
1. **Main Page**: Should show labs organized by category
|
||||
2. **Dark Mode**: Should be the default theme
|
||||
3. **Theme Toggle**: Should switch between dark and light modes
|
||||
4. **Lab Pages**: Should display individual lab content
|
||||
5. **Fonts**: Should use Do Hyeon for headings and Source Code Pro for code
|
||||
6. **Responsive Design**: Should work on different screen sizes
|
||||
|
||||
## GitHub Pages Deployment
|
||||
|
||||
If you want to deploy to GitHub Pages:
|
||||
|
||||
```bash
|
||||
# Switch to GitHub Pages compatible setup
|
||||
./switch-to-github-pages.sh
|
||||
|
||||
# Build for production
|
||||
bundle exec jekyll build
|
||||
```
|
||||
|
||||
Then commit and push to your GitHub repository.
|
||||
@@ -1,7 +1,7 @@
|
||||
# Site settings
|
||||
title: Hacktivity Lab Sheets
|
||||
description: Lab sheets for Hacktivity SecGen labs
|
||||
baseurl: "/HacktivityLabSheets"
|
||||
# baseurl: "/HacktivityLabSheets" # Commented out for local development
|
||||
url: "https://cliffe.github.io"
|
||||
|
||||
# GitHub Pages settings
|
||||
@@ -42,4 +42,9 @@ exclude:
|
||||
- LICENSE
|
||||
- .gitignore
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
- Gemfile.lock
|
||||
- vendor/
|
||||
- .bundle/
|
||||
- .sass-cache/
|
||||
- .jekyll-cache/
|
||||
- .jekyll-metadata
|
||||
@@ -28,6 +28,19 @@ cybok:
|
||||
|
||||
This work by [Z. Cliffe Schreuders](http://z.cliffe.schreuders.org) at Leeds Beckett University is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/deed.en_GB).
|
||||
|
||||
<div class="action-item">
|
||||
### ⚡ Lab Setup Required
|
||||
Before starting this lab, ensure you have:
|
||||
- A ==Linux virtual machine== or system with ==root access==
|
||||
- Internet connectivity for downloading tools
|
||||
- At least ==2GB of available disk space==
|
||||
</div>
|
||||
|
||||
<div class="warning-item">
|
||||
### ⚠️ Important Notice
|
||||
This lab involves using security tools that could be detected as malicious by antivirus software. Work in an isolated environment and disable real-time protection if necessary.
|
||||
</div>
|
||||
|
||||
### Contents {#preparation-and-logging-in}
|
||||
|
||||
[License](#preparation-and-logging-in)
|
||||
@@ -72,7 +85,7 @@ This work by [Z. Cliffe Schreuders](http://z.cliffe.schreuders.org) at Leeds Bec
|
||||
|
||||
One of the interesting and inevitable things about working with security attacks, is that because we are often intentionally “breaking” things and making them misbehave for our own intentions, sometimes things do not go exactly according to plan, software may crash or behave erratically. This adds to the challenge, and may require some troubleshooting.
|
||||
|
||||
The labs are written to be informative and, in order to aid clarity, instructions that you should actually execute are generally written in this colour. Note that all lab content is assessable for the module, but the colour coding may help you skip to the “next thing to *do*”, but make sure you dedicate time to read and understand everything. Coloured instructions in *italics* indicates you need to change the instructions based on your environment: for example, using your own IP address.
|
||||
The labs are written to be informative and, in order to aid clarity, instructions that you should actually execute are generally written in this colour. Note that all lab content is assessable for the module, but the ==colour coding may help you skip to the “next thing to *do*”==, but make sure you dedicate time to read and understand everything. Coloured instructions in ==*italics*== indicates you need to change the instructions based on your environment: for example, using your own IP address.
|
||||
|
||||
Often the lab instructions are intentionally open ended, and you will have to figure some things out for yourselves. This module is designed to be challenging, as well as fun\!
|
||||
|
||||
@@ -94,7 +107,7 @@ Note that a command shell will open automatically, and a username has been rando
|
||||
|
||||
From the command line run:
|
||||
|
||||
whoami
|
||||
```whoami```
|
||||
|
||||
Your password is “tiaspbiqe2r” (**t**his **i**s **a** **s**ecure **p**assword **b**ut **i**s **q**uite **e**asy **2** **r**emember).
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ layout: default
|
||||
.lab-header h1 {
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--fg-color);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.lab-description {
|
||||
@@ -126,11 +127,12 @@ layout: default
|
||||
}
|
||||
|
||||
.lab-content-body code {
|
||||
background-color: var(--highlight-color);
|
||||
background-color: #ffeb3b;
|
||||
padding: 0.125rem 0.25rem;
|
||||
border-radius: 3px;
|
||||
font-size: 0.875rem;
|
||||
border: 1px solid var(--panelborder-color);
|
||||
color: black;
|
||||
}
|
||||
|
||||
.lab-content-body pre {
|
||||
@@ -139,12 +141,14 @@ layout: default
|
||||
border-radius: 6px;
|
||||
overflow-x: auto;
|
||||
border: 1px solid var(--panelborder-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.lab-content-body pre code {
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
border: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.lab-footer {
|
||||
@@ -194,4 +198,13 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Process ==highlight== syntax
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const contentBody = document.querySelector('.lab-content-body');
|
||||
if (contentBody) {
|
||||
// Replace ==text== with <mark>text</mark>
|
||||
contentBody.innerHTML = contentBody.innerHTML.replace(/==([^=]+)==/g, '<mark>$1</mark>');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
12
_plugins/highlight_extension.rb
Normal file
12
_plugins/highlight_extension.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
# Jekyll plugin to support ==highlight== syntax
|
||||
module Jekyll
|
||||
module HighlightFilter
|
||||
def highlight_text(input)
|
||||
return input if input.nil?
|
||||
# Convert ==text== to <mark>text</mark>
|
||||
input.gsub(/==([^=]+)==/, '<mark>\1</mark>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Liquid::Template.register_filter(Jekyll::HighlightFilter)
|
||||
@@ -10,6 +10,7 @@ body {
|
||||
|
||||
h1, h2, h3 {
|
||||
font-family: "Do Hyeon", "Source Code Pro", Monaco, monospace;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
code, pre, .highlight {
|
||||
@@ -191,7 +192,7 @@ a:focus {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.category-labs {
|
||||
@@ -311,12 +312,13 @@ h1.user_handle, h1.team_name {
|
||||
.lab-item h3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.lab-item h3 a {
|
||||
text-decoration: none;
|
||||
color: var(--link-color);
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.lab-item h3 a:hover {
|
||||
@@ -541,7 +543,7 @@ a.scale_on_click:focus .fa-solid {
|
||||
// Typography improvements
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: var(--fg-color);
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
// Code blocks
|
||||
@@ -549,6 +551,7 @@ pre, code {
|
||||
background-color: var(--highlight-color);
|
||||
border: 1px solid var(--panelborder-color);
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
code {
|
||||
@@ -587,3 +590,113 @@ blockquote {
|
||||
background-color: var(--highlight-color);
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
// Action item styles for lab sheets
|
||||
.action-item {
|
||||
background-color: var(--alert-infobg-color);
|
||||
border: 1px solid var(--alert-infoborder-color);
|
||||
border-left: 4px solid var(--primary-btnbg-color);
|
||||
border-radius: 4px;
|
||||
padding: 1rem;
|
||||
margin: 1rem 0;
|
||||
color: var(--alert-infofg-color);
|
||||
}
|
||||
|
||||
.action-item h1, .action-item h2, .action-item h3, .action-item h4, .action-item h5, .action-item h6 {
|
||||
color: var(--alert-infofg-color);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.action-item::before {
|
||||
content: "⚡ ";
|
||||
font-weight: bold;
|
||||
color: var(--primary-btnbg-color);
|
||||
}
|
||||
|
||||
.warning-item {
|
||||
background-color: var(--alert-warningbg-color);
|
||||
border: 1px solid var(--alert-warningborder-color);
|
||||
border-left: 4px solid #f0ad4e;
|
||||
border-radius: 4px;
|
||||
padding: 1rem;
|
||||
margin: 1rem 0;
|
||||
color: var(--alert-warningfg-color);
|
||||
}
|
||||
|
||||
.warning-item h1, .warning-item h2, .warning-item h3, .warning-item h4, .warning-item h5, .warning-item h6 {
|
||||
color: var(--alert-warningfg-color);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.warning-item::before {
|
||||
content: "⚠️ ";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.danger-item {
|
||||
background-color: var(--alert-dangerbg-color);
|
||||
border: 1px solid var(--alert-dangerborder-color);
|
||||
border-left: 4px solid #d9534f;
|
||||
border-radius: 4px;
|
||||
padding: 1rem;
|
||||
margin: 1rem 0;
|
||||
color: var(--alert-dangerfg-color);
|
||||
}
|
||||
|
||||
.danger-item h1, .danger-item h2, .danger-item h3, .danger-item h4, .danger-item h5, .danger-item h6 {
|
||||
color: var(--alert-dangerfg-color);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.danger-item::before {
|
||||
content: "🚨 ";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.success-item {
|
||||
background-color: var(--alert-successbg-color);
|
||||
border: 1px solid var(--alert-successborder-color);
|
||||
border-left: 4px solid #5cb85c;
|
||||
border-radius: 4px;
|
||||
padding: 1rem;
|
||||
margin: 1rem 0;
|
||||
color: var(--alert-successfg-color);
|
||||
}
|
||||
|
||||
.success-item h1, .success-item h2, .success-item h3, .success-item h4, .success-item h5, .success-item h6 {
|
||||
color: var(--alert-successfg-color);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.success-item::before {
|
||||
content: "✅ ";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Inline action styling
|
||||
.action-text {
|
||||
background-color: var(--primary-btnbg-color);
|
||||
color: white;
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 3px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.action-text::before {
|
||||
content: "→ ";
|
||||
}
|
||||
|
||||
// Markdown highlight syntax support
|
||||
mark, .highlight-text {
|
||||
background-color: #ffeb3b;
|
||||
color: #000;
|
||||
padding: 0.1rem 0.2rem;
|
||||
border-radius: 2px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
[data-theme="dark"] mark,
|
||||
[data-theme="dark"] .highlight-text {
|
||||
background-color: #ffc107;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
9
index.md
9
index.md
@@ -102,4 +102,13 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Process ==highlight== syntax
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const contentBody = document.querySelector('.lab-list');
|
||||
if (contentBody) {
|
||||
// Replace ==text== with <mark>text</mark>
|
||||
contentBody.innerHTML = contentBody.innerHTML.replace(/==([^=]+)==/g, '<mark>$1</mark>');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
40
test-jekyll.sh
Executable file
40
test-jekyll.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test script for Jekyll installation and site building
|
||||
|
||||
echo "🔍 Checking Ruby installation..."
|
||||
if command -v ruby &> /dev/null; then
|
||||
echo "✅ Ruby is installed: $(ruby --version)"
|
||||
else
|
||||
echo "❌ Ruby is not installed. Please install Ruby first."
|
||||
echo " See INSTALL.md for installation instructions."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔍 Checking Bundler installation..."
|
||||
if command -v bundle &> /dev/null; then
|
||||
echo "✅ Bundler is installed: $(bundle --version)"
|
||||
else
|
||||
echo "❌ Bundler is not installed. Installing..."
|
||||
gem install bundler
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔍 Installing dependencies..."
|
||||
bundle install
|
||||
|
||||
echo ""
|
||||
echo "🔍 Building Jekyll site..."
|
||||
if bundle exec jekyll build; then
|
||||
echo "✅ Site built successfully!"
|
||||
echo ""
|
||||
echo "🔍 Starting Jekyll server..."
|
||||
echo "📱 Site will be available at: http://localhost:4000"
|
||||
echo "🛑 Press Ctrl+C to stop the server"
|
||||
echo ""
|
||||
bundle exec jekyll serve --livereload
|
||||
else
|
||||
echo "❌ Site build failed. Check the error messages above."
|
||||
exit 1
|
||||
fi
|
||||
59
verify-setup.sh
Executable file
59
verify-setup.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Verification script for Jekyll setup
|
||||
|
||||
echo "🔍 Verifying Jekyll setup..."
|
||||
echo ""
|
||||
|
||||
# Check if we're in the right directory
|
||||
if [ -f "_config.yml" ] && [ -d "_labs" ]; then
|
||||
echo "✅ In correct Jekyll project directory"
|
||||
else
|
||||
echo "❌ Not in a Jekyll project directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for required files
|
||||
echo "🔍 Checking required files..."
|
||||
required_files=("_config.yml" "index.md" "_layouts/default.html" "_layouts/lab.html" "assets/css/hacktivity-theme.scss")
|
||||
for file in "${required_files[@]}"; do
|
||||
if [ -f "$file" ]; then
|
||||
echo "✅ $file exists"
|
||||
else
|
||||
echo "❌ $file is missing"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check for lab files
|
||||
echo ""
|
||||
echo "🔍 Checking lab files..."
|
||||
lab_count=$(find _labs -name "*.md" | wc -l)
|
||||
echo "📄 Found $lab_count lab files"
|
||||
|
||||
# Check for plugins
|
||||
echo ""
|
||||
echo "🔍 Checking plugins..."
|
||||
if [ -f "_plugins/include_subdirectories.rb" ]; then
|
||||
echo "✅ Subdirectory inclusion plugin exists"
|
||||
else
|
||||
echo "❌ Subdirectory inclusion plugin missing"
|
||||
fi
|
||||
|
||||
# Check Gemfile
|
||||
echo ""
|
||||
echo "🔍 Checking Gemfile..."
|
||||
if [ -f "Gemfile" ]; then
|
||||
echo "✅ Gemfile exists"
|
||||
echo "📦 Dependencies:"
|
||||
grep "gem " Gemfile | sed 's/^/ /'
|
||||
else
|
||||
echo "❌ Gemfile missing"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🎯 Setup verification complete!"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Install Ruby (see INSTALL.md)"
|
||||
echo "2. Run: ./test-jekyll.sh"
|
||||
echo "3. Open http://localhost:4000 in your browser"
|
||||
Reference in New Issue
Block a user