Skip to content

Commit 811f521

Browse files
committed
Merge branch 'main' of github.com:HackTricks-wiki/hacktricks-wiki
2 parents e03bbe5 + 5aa601b commit 811f521

File tree

2 files changed

+226
-0
lines changed

2 files changed

+226
-0
lines changed

.github/workflows/static.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Simple workflow for deploying static content to GitHub Pages
2+
name: Deploy static content to Pages
3+
4+
on:
5+
# Runs on pushes targeting the default branch
6+
push:
7+
branches: ["main"]
8+
9+
# Allows you to run this workflow manually from the Actions tab
10+
workflow_dispatch:
11+
12+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20+
concurrency:
21+
group: "pages"
22+
cancel-in-progress: false
23+
24+
jobs:
25+
# Single deploy job since we're just deploying
26+
deploy:
27+
environment:
28+
name: github-pages
29+
url: ${{ steps.deployment.outputs.page_url }}
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: Checkout
33+
uses: actions/checkout@v4
34+
- name: Setup Pages
35+
uses: actions/configure-pages@v5
36+
- name: Upload artifact
37+
uses: actions/upload-pages-artifact@v3
38+
with:
39+
# Upload entire repository
40+
path: '.'
41+
- name: Deploy to GitHub Pages
42+
id: deployment
43+
uses: actions/deploy-pages@v4

index.html

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
6+
<title>HackTricks Search</title>
7+
8+
<style>
9+
body {
10+
margin: 0;
11+
padding: 0;
12+
background: linear-gradient(to bottom right, #000000, #111111);
13+
font-family: "Helvetica Neue", Arial, sans-serif;
14+
color: #fff;
15+
display: flex;
16+
flex-direction: column;
17+
align-items: center;
18+
justify-content: center;
19+
min-height: 100vh;
20+
}
21+
22+
.logo-container {
23+
display: flex;
24+
align-items: center;
25+
justify-content: center;
26+
gap: 2rem;
27+
margin-bottom: 1rem;
28+
flex-wrap: wrap;
29+
text-align: center;
30+
}
31+
32+
.logo {
33+
width: 150px;
34+
height: auto;
35+
max-width: 40vw; /* Ensures logo fits on small screens */
36+
}
37+
38+
h1 {
39+
font-size: 2rem;
40+
margin-bottom: 2rem;
41+
text-align: center;
42+
}
43+
44+
.light-grey {
45+
color: #ccc;
46+
}
47+
48+
.hacktricks-text {
49+
color: #c62828; /* darker red */
50+
}
51+
52+
.cloud-text {
53+
color: #1976D2; /* a slightly darker blue */
54+
}
55+
56+
form {
57+
display: flex;
58+
flex-direction: column;
59+
align-items: center;
60+
background: #1a1a1a;
61+
border-radius: 8px;
62+
padding: 2rem;
63+
box-shadow: 0 5px 15px rgba(0,0,0,0.5);
64+
width: 90%;
65+
max-width: 600px;
66+
box-sizing: border-box;
67+
}
68+
69+
input[type="text"] {
70+
padding: 1rem;
71+
border: 2px solid #c62828; /* darker red */
72+
outline: none;
73+
width: 100%;
74+
background: #000000;
75+
color: #fff;
76+
font-size: 1.2rem;
77+
border-radius: 4px;
78+
box-sizing: border-box;
79+
}
80+
81+
.buttons {
82+
margin-top: 1.5rem;
83+
display: flex;
84+
gap: 1rem;
85+
flex-wrap: wrap;
86+
justify-content: center;
87+
width: 100%;
88+
}
89+
90+
.buttons button {
91+
padding: 0.8rem 1.5rem;
92+
border: none;
93+
background: #c62828; /* darker red */
94+
color: #fff;
95+
font-size: 1rem;
96+
cursor: pointer;
97+
transition: background 0.3s;
98+
border-radius: 4px;
99+
flex: 1 1 auto;
100+
max-width: 200px;
101+
text-align: center;
102+
}
103+
104+
.buttons button:hover {
105+
background: #b71c1c; /* even darker on hover */
106+
}
107+
108+
@media (max-width: 600px) {
109+
h1 {
110+
font-size: 1.5rem;
111+
}
112+
113+
.logo {
114+
width: 100px;
115+
}
116+
117+
input[type="text"] {
118+
font-size: 1rem;
119+
}
120+
121+
.buttons button {
122+
font-size: 0.9rem;
123+
padding: 0.8rem;
124+
}
125+
}
126+
</style>
127+
</head>
128+
<body>
129+
130+
<div class="logo-container">
131+
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iQ2FwYV8xIiBkYXRhLW5hbWU9IkNhcGEgMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDEwODAgMTA4MCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogdXJsKCNEZWdyYWRhZG9fc2luX25vbWJyZV81MTYpOwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6IHVybCgjRGVncmFkYWRvX3Npbl9ub21icmVfNTE4KTsKICAgICAgfQoKICAgICAgLmNscy0zIHsKICAgICAgICBmaWxsOiB1cmwoI0RFR1JBREFET19ST0pPXzEpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJEZWdyYWRhZG9fc2luX25vbWJyZV81MTYiIGRhdGEtbmFtZT0iRGVncmFkYWRvIHNpbiBub21icmUgNTE2IiB4MT0iMjY5LjI2IiB5MT0iNDE2LjciIHgyPSIyNjkuMjYiIHkyPSI3My4yOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9Ii40IiBzdG9wLWNvbG9yPSIjZjYxOTAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjQ1IiBzdG9wLWNvbG9yPSIjZjYxYTAyIiBzdG9wLW9wYWNpdHk9Ii45NiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iI2Y3MWYwOSIgc3RvcC1vcGFjaXR5PSIuODQiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNjciIHN0b3AtY29sb3I9IiNmOTI3MTUiIHN0b3Atb3BhY2l0eT0iLjY1Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjgxIiBzdG9wLWNvbG9yPSIjZmIzMjI1IiBzdG9wLW9wYWNpdHk9Ii4zOCIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii45OCIgc3RvcC1jb2xvcj0iI2ZlNDAzYSIgc3RvcC1vcGFjaXR5PSIuMDUiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmY0MjNkIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9IkRlZ3JhZGFkb19zaW5fbm9tYnJlXzUxOCIgZGF0YS1uYW1lPSJEZWdyYWRhZG8gc2luIG5vbWJyZSA1MTgiIHgxPSI4MTAuNzQiIHkxPSI2NjYuNzIiIHgyPSI4MTAuNzQiIHkyPSIxMDA2LjcyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iLjQiIHN0b3AtY29sb3I9IiNmNjE5MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNDciIHN0b3AtY29sb3I9IiNmNjFjMDQiIHN0b3Atb3BhY2l0eT0iLjkyIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjYiIHN0b3AtY29sb3I9IiNmODI0MTAiIHN0b3Atb3BhY2l0eT0iLjcyIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjc5IiBzdG9wLWNvbG9yPSIjZmIzMTI0IiBzdG9wLW9wYWNpdHk9Ii40Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmNDIzZCIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJERUdSQURBRE9fUk9KT18xIiBkYXRhLW5hbWU9IkRFR1JBREFETyBST0pPIDEiIHgxPSI1NDAiIHkxPSIxMDA2LjcyIiB4Mj0iNTQwIiB5Mj0iNzMuMjgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmYxMzBiIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuMDMiIHN0b3AtY29sb3I9IiNmZTEzMGEiIHN0b3Atb3BhY2l0eT0iLjA5Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjEiIHN0b3AtY29sb3I9IiNmYzE0MDciIHN0b3Atb3BhY2l0eT0iLjMzIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjE3IiBzdG9wLWNvbG9yPSIjZmExNjA1IiBzdG9wLW9wYWNpdHk9Ii41MyIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4yNCIgc3RvcC1jb2xvcj0iI2Y4MTcwMyIgc3RvcC1vcGFjaXR5PSIuNyIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4zMSIgc3RvcC1jb2xvcj0iI2Y3MTcwMSIgc3RvcC1vcGFjaXR5PSIuODMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuMzgiIHN0b3AtY29sb3I9IiNmNjE4MDAiIHN0b3Atb3BhY2l0eT0iLjkyIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjQ0IiBzdG9wLWNvbG9yPSIjZjYxODAwIiBzdG9wLW9wYWNpdHk9Ii45OCIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjZjYxOTAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjU1IiBzdG9wLWNvbG9yPSIjZjYxYTAxIiBzdG9wLW9wYWNpdHk9Ii45NyIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii42MSIgc3RvcC1jb2xvcj0iI2Y2MWQwNiIgc3RvcC1vcGFjaXR5PSIuOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii42OSIgc3RvcC1jb2xvcj0iI2Y4MjIwZCIgc3RvcC1vcGFjaXR5PSIuNzciLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNzciIHN0b3AtY29sb3I9IiNmOTI5MTgiIHN0b3Atb3BhY2l0eT0iLjYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuODciIHN0b3AtY29sb3I9IiNmYjMyMjYiIHN0b3Atb3BhY2l0eT0iLjM4Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjk2IiBzdG9wLWNvbG9yPSIjZmUzZDM2IiBzdG9wLW9wYWNpdHk9Ii4xMSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZjQyM2QiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMzI1LjkzLDczLjI4aC0xMTMuMzJzMCwyOTkuMDQsMCwyOTkuMDRjMCwyNC41MSwxOS44Nyw0NC4zNyw0NC4zNyw0NC4zN2gyNC41OGMyNC41MSwwLDQ0LjM3LTE5Ljg3LDQ0LjM3LTQ0LjM3VjczLjI4WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0ibTgyMi4xLDY2Ni43MmgtMjIuNzJjLTI1LjAyLDAtNDUuMywyMC4yOC00NS4zLDQ1LjN2Mjk0LjY5aDExMy4zMnYtMjk0LjY5YzAtMjUuMDItMjAuMjgtNDUuMy00NS4zLTQ1LjNaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJtNzU0LjA3LDczLjI4djIxMS4wMWMwLDE5LjM3LTIuODEsMzguNjUtOC42Miw1Ny4xMy0xNi45OCw1NC4wNi02Ni4yMSwxNDQuNTQtMjA1LjQ1LDE0NC41NHYtLjA2Yy0zMjcuNCwwLTMyNy40LDI4OS4wMS0zMjcuNCwyOTEuOTh2MjI4LjcxaDExMy4zMnYtMjA0LjkxYzAtMzYuODEsOC44My03My4xOSwyNi41My0xMDUuNDYsMjYuOTgtNDkuMTcsODAuODItMTAyLjMyLDE4Ny41NC0xMDIuMzJ2LS4wNmMzMjcuNCwwLDMyNy40LTI5MS45OCwzMjcuNC0yOTEuOThWNzMuMjhoLTExMy4zMloiLz4KPC9zdmc+" alt="HackTricks Logo" class="logo" />
132+
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iQ2FwYV8xIiBkYXRhLW5hbWU9IkNhcGEgMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDEwODAgMTA4MCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogdXJsKCNEZWdyYWRhZG9fc2luX25vbWJyZV8yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iRGVncmFkYWRvX3Npbl9ub21icmVfMiIgZGF0YS1uYW1lPSJEZWdyYWRhZG8gc2luIG5vbWJyZSAyIiB4MT0iMjU4LjU4IiB5MT0iNTQwIiB4Mj0iODIxLjQyIiB5Mj0iNTQwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiMwM2YiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNTQiIHN0b3AtY29sb3I9IiMwM2YiIHN0b3Atb3BhY2l0eT0iLjk3Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjYxIiBzdG9wLWNvbG9yPSIjMDNmIiBzdG9wLW9wYWNpdHk9Ii45Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjY4IiBzdG9wLWNvbG9yPSIjMDNmIiBzdG9wLW9wYWNpdHk9Ii43OCIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii43NyIgc3RvcC1jb2xvcj0iIzAzZiIgc3RvcC1vcGFjaXR5PSIuNjEiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuODYiIHN0b3AtY29sb3I9IiMwM2YiIHN0b3Atb3BhY2l0eT0iLjQiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuOTUiIHN0b3AtY29sb3I9IiMwM2YiIHN0b3Atb3BhY2l0eT0iLjE0Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAzZiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im03NjQuNDYsOTYuNzloLTE5My43MWMtODcuNzEsMC0xMzYuNzIsMzAuNzYtMTc1LjQ1LDEwOS4zOGwtMTA0LjgzLDIxMC43N2MtMjIuNzgsNDUuNTgtMzEuOSw3Ni4zNC0zMS45LDEyNi40NywwLDQ0LjQzLDExLjM5LDgwLjg5LDMwLjc2LDExOS42M2wxMDQuODMsMjExLjkyYzM2LjQ1LDc0LjA2LDg1LjQ2LDEwOC4yNCwxNzAuOSwxMDguMjRoMjU2LjM2di0xMTMuOTNoLTI0Mi42OWMtNTEuMjYsMC02Mi42NS0zLjQyLTg1LjQ0LTUwLjEzbC05Ni44NS0xOTcuMTFjLTEzLjY3LTI3LjM1LTIzLjkyLTQ2LjcxLTIzLjkyLTc4LjYxLDAtMzUuMzIsOS4xMS01NS44MywyMy45Mi04Ni41OWw5OS4xMy0xOTguMjVjMjEuNjQtNDMuMjksMjkuNjItNDcuODUsNzguNi00Ny44NWgyNDcuMjV2LTExMy45M2gtNTYuOTZaIi8+Cjwvc3ZnPg==" alt="HackTricks Cloud Logo" class="logo" />
133+
</div>
134+
135+
<h1>
136+
<span class="light-grey">Search in </span>
137+
<span class="hacktricks-text">HackTricks</span>
138+
<span class="light-grey">&amp;</span>
139+
<span class="cloud-text">HackTricks Cloud</span>
140+
</h1>
141+
142+
<form id="searchForm">
143+
<input type="text" id="searchInput" placeholder="Search within HackTricks..." />
144+
<div class="buttons">
145+
<button type="submit" name="engine" value="bing">Search with Bing</button>
146+
<button type="submit" name="engine" value="hacktricks">Search inside HackTricks</button>
147+
</div>
148+
</form>
149+
150+
<script>
151+
document.getElementById('searchForm').addEventListener('submit', function(e) {
152+
e.preventDefault();
153+
const userQuery = document.getElementById('searchInput').value.trim();
154+
const engine = e.submitter.value; // 'google' or 'bing'
155+
const filter = 'site:hacktricks.xyz';
156+
157+
let actionUrl;
158+
if (engine === 'hacktricks') {
159+
actionUrl = 'https://book.hacktricks.wiki/en/index.html';
160+
input_name = 'search';
161+
} else {
162+
actionUrl = 'https://www.bing.com/search';
163+
input_name = 'q';
164+
}
165+
166+
// Create a hidden form to submit to the appropriate engine
167+
const form = document.createElement('form');
168+
form.action = actionUrl;
169+
form.method = 'get';
170+
171+
const input = document.createElement('input');
172+
input.type = 'hidden';
173+
input.name = input_name;
174+
input.value = filter + ' ' + userQuery;
175+
form.appendChild(input);
176+
177+
document.body.appendChild(form);
178+
form.submit();
179+
});
180+
</script>
181+
182+
</body>
183+
</html>

0 commit comments

Comments
 (0)