-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
161 lines (137 loc) · 4.27 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>RiceSec: Rice Information Security Club</title>
<link rel="stylesheet" href="/css/style.css" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
</head>
<body>
<main>
<header>
<a href="/">
<img
src="/img/hacker-owl.svg"
alt="Rice owl logo wearing sunglasses and typing"
class="logo"
/>
</a>
<h1>RiceSec</h1>
Rice University's
<a href="https://owlnest.rice.edu/organization/ricesec"
>official CTF club</a
>
and <a href="https://ctftime.org/team/30012">team</a>.
<nav>
<ul>
<li>
<a href="https://sec.rice.edu/writeups/"
>Write-ups</a
>
</li>
<li>
<a href="https://ctftime.org/team/30012">CTFtime</a>
</li>
<li>
<a href="https://github.com/RiceSec/">GitHub</a>
</li>
<li>
<a
href="https://owlnest.rice.edu/organization/ricesec"
>Owlnest</a
>
</li>
<li>
<a href="https://discord.gg/RA4vczwP8x">Discord</a>
</li>
</ul>
</nav>
</header>
<p>
We are a club at Rice University that focuses on cybersecurity
and competes in Capture the Flag (CTF) events.
</p>
<h2>What are CTFs?</h2>
<p>
CTFs are hacking competitions in which participants apply their
cybersecurity skills in a safe and legal way. CTFs generally
consist of many separate challenges. Upon completing each
challenge, teams find strings called flags (e.g.
<code>flag{r1c3sec_f0r_th3_w1n!}</code>), which earn them
points. There are many different types of challenges — some
might involve picking apart a program to figure out how it works
(reverse engineering) or tricking a website into giving you
access to files that it shouldn't.
</p>
<p>
If you're interested in learning more about CTFs, take a look at
the pinned messages in the <code>#learn</code> channel on our
Discord or at
<a
href="https://canvas.rice.edu/courses/55235/pages/how-to-git-gud"
>our compilation of CTF Resources</a
>.
</p>
<h2>What do I need to know to get started?</h2>
<p>
All you need is basic programming experience! CTFs involve a lot
of "learning on the job". Believe it or not, the best way to get
better at CTFs is to participate in them. If you're new to the
scene, we recommend participating in CTFs that are explicitly
beginner-friendly. Feel free to check out
<a href="/writeups">RiceSec's write-ups</a> from past CTFs.
</p>
<h2>How do I join?</h2>
<p>
All Rice students are welcome to join RiceSec! Start by joining
our
<a href="https://owlnest.rice.edu/organization/ricesec"
>Owlnest organization</a
>
and our <a href="https://discord.gg/RA4vczwP8x">Discord</a>,
where we co-ordinate our participation in CTFs.
</p>
</main>
<canvas width="100%" height="100%" id="matrix"></canvas>
</body>
<script>
/*
* https://dev.to/gnsp/making-the-matrix-effect-in-javascript-din
*/
const root = document.querySelector(':root');
const backgroundColor = window
.getComputedStyle(root)
.getPropertyValue('--background-color');
const bodyColor = window
.getComputedStyle(root)
.getPropertyValue('--body-color');
const canvas = document.querySelector('#matrix');
const ctx = canvas.getContext('2d');
const w = (canvas.width = document.body.offsetWidth);
const h = (canvas.height = document.body.offsetHeight);
const cols = Math.floor(w / 20) + 1;
const ypos = Array(cols).fill(0);
ctx.fillStyle = backgroundColor;
ctx.fillRect(0, 0, w, h);
function matrix() {
console.assert(backgroundColor.length == 4);
ctx.fillStyle = backgroundColor + '1';
ctx.fillRect(0, 0, w, h);
ctx.fillStyle = bodyColor;
ctx.font = '12pt monospace';
ypos.forEach((y, ind) => {
const text = String.fromCharCode(Math.random() * 128);
const x = ind * 20;
ctx.fillText(text, x, y);
if (y > 100 + Math.random() * 10000) {
ypos[ind] = 0;
} else {
ypos[ind] = y + 20;
}
});
}
setInterval(matrix, 100);
</script>
</html>