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
|
import kotlinx.browser.document
import kotlinx.browser.window
import kotlinx.css.*
import kotlinx.html.dom.append
import kotlinx.html.js.div
import moe.nea89.website.*
import styled.injectGlobal
import kotlin.time.Duration.Companion.milliseconds
val defaultFileSystem = fileSystem {
"etc" {
"passwd" text "hunter2"
}
"home/exhq" {
"todo" text """
| - git gud
| - finish this website
| - convince the general public that comic sans is a viable font
""".trimMargin()
}
"flag" text "CTF{12345abcdefghijklmonp3.1.4.1.5.9.2.8}"
}
fun main() {
val root = document.body!!.append.div()
val console = KConsole.createFor(root, fileSystem = defaultFileSystem)
injectGlobal {
".${Styles.consoleClass}" {
minHeight = 100.vh
backgroundColor = Color("#282a39C6")
}
body {
backgroundImage = Image("url(weebshit1.jpg)")
backgroundSize = "cover"
}
}
console.addLine("Starting stfff")
console.PS1 = { "${console.fileAccessor!!.currentDir.joinToString("/", "/")} > " }
if (window.location.hash == "#mobile" || (window.location.hash != "#desktop" && js("'ontouchstart' in document.documentElement") as Boolean)) {
console.openMobileKeyboardOnTap()
}
console.fileAccessor!!.cd("/home/exhq")
console.rerender()
console.registerCommand(defaultLsCommand("ls", delayBetweenLines = 0.milliseconds))
console.registerCommand(defaultCdCommand("cd"))
console.registerCommand(defaultCatCommand("cat"))
console.registerCommand(defaultCwdCommand("cwd", "pwd"))
console.registerCommand(command("help", "?"){
console.addMultilineText("""
ls - lists stuff in current directory
cd - move to another directory
cat - open files
pwd - shows current directory
""".trimIndent())
})
console.registerCommand(command("blahaj", "shark"){
console.addMultilineText("""
,(((/
/(((((
((((#(( (//
(((((((. *(((/
/(######/ *((((/
*//%#####((/ ((#((/
,*/********/////////////////(//* (%* ,((##((
,*/((///(//////////((/(///////(/////(////*,(*#((/(/((//////###(###(/(
/(((((((//((///((////((((((/(((((((((((((((((/(((##((#%(##(/((///*(&#(##/
/#((%(#(((((//#((((((((((((((((((((((((#(((((((((((/##(((((//((//* ####(/
(((###(###(#(#####(###############((#((((((((/((//(((#/(///// ,,
,(###%####%&%#############(#(#(####(((((((/(((/////*//,
. .....*#(#######(((###(#(##(##(((/(/(/////,
.. ....,..........,..*#%#######/(
.. .............,*%%%%#%((((/
**,,,****//*(##((###(#(((
&#(#/#((((((((#
""".trimIndent())
})
console.registerCommand(command("sudo"){
var str = ""
for (e in args){
str += "$e "
}
if(str == "rm -rf /* " || str == "rm -rf / "){
console.addLine("haha funny xd im laughing so hard rn lmfao xddddddddddddd HAHAHAHAHAHAH")
}
else{
console.addLine("bro you don have the password smh")
}
})
}
|