@@ -7,15 +7,13 @@ import kotlinx.dom.addClass
77import org.w3c.dom.*
88import ru.morozovit.util.addEventListener
99import ru.morozovit.util.nextHexColor
10- import ru.morozovit.webcorrupter.RandomUtils.randomDelay
1110import kotlin.random.Random.Default.nextInt
1211import kotlin.random.Random.Default.nextLong
1312
14- object RandomUtils {
15- suspend inline fun randomDelay () = delay(nextLong(50 , 3000 ))
16- }
17-
1813object Virus {
14+ private var speedFactor = 1.0
15+ private const val SPEED_INCREASE_RATE = 0.008
16+ private const val MAX_SPEED_FACTOR = 10.0
1917 private val max get() = when {
2018 document.body!! .innerHTML.length > 500000 -> 1000
2119 document.body!! .innerHTML.length > 100000 -> 400
@@ -24,38 +22,50 @@ object Virus {
2422 document.body!! .innerHTML.length > 5000 -> 100
2523 else -> 50
2624 }
25+ private lateinit var prevPage: String
26+
27+ private suspend inline fun randomDelay (mul : Float = 1f) {
28+ delay((getAdjustedDelay(nextLong(50 , 1000 )) * mul).toLong())
29+ updateSpeedFactor()
30+ console.log(" Speed factor: " , speedFactor)
31+ }
32+
33+ private fun updateSpeedFactor () {
34+ speedFactor = (speedFactor + SPEED_INCREASE_RATE ).coerceAtMost(MAX_SPEED_FACTOR )
35+ }
36+
37+ private fun getAdjustedDelay (delay : Long ): Long {
38+ return (delay / speedFactor).toLong().coerceAtLeast(10 )
39+ }
2740
2841 private fun randomNumberOfTimes () = nextInt(10 , max)
2942
3043 object Payloads {
3144 suspend fun messUpElements () {
32- randomDelay()
3345 console.log(" Messing up elements..." )
3446 val numberOfTimes = randomNumberOfTimes()
3547 console.log(" Number of times: " , numberOfTimes)
3648 repeat(numberOfTimes) {
3749 try {
38- randomElement().appendChild(randomElement(true ))
50+ randomElement(true ).appendChild(randomElement(true ))
3951 } catch (_: Exception ) {}
4052 delay(nextInt(100 , 500 ).toLong())
4153 }
4254 }
4355
4456 suspend fun addRandomText () {
45- randomDelay()
4657 console.log(" Adding random text..." )
4758 val numberOfTimes = randomNumberOfTimes()
4859 console.log(" Number of times: " , numberOfTimes)
4960 repeat(numberOfTimes) {
5061 try {
5162 randomElement().textContent + = " error"
5263 } catch (_: Exception ) {}
53- delay(nextInt( 100 , 1000 ).toLong() )
64+ randomDelay( )
5465 }
5566 }
5667
5768 suspend fun addRandomStyles () {
58- delay(nextInt(100 , 3000 ).toLong())
5969 console.log(" Adding random styles..." )
6070 val numberOfTimes = randomNumberOfTimes()
6171 console.log(numberOfTimes)
@@ -68,7 +78,7 @@ object Virus {
6878 2 -> element.style.transform = " blur(${nextInt(1 , 100 )} px)"
6979 }
7080 } catch (_: Exception ) {}
71- delay(nextInt( 100 , 1000 ).toLong() )
81+ randomDelay( )
7282 }
7383 }
7484
@@ -85,15 +95,19 @@ object Virus {
8595 }
8696
8797 suspend fun invertColors () {
88- randomDelay()
8998 console.log(" Inverting colors..." )
90- document.body?.style?.filter = " invert(100%)"
91- delay(nextInt(3000 , 10000 ).toLong())
92- document.body?.style?.filter = " none"
99+ val numberOfTimes = randomNumberOfTimes()
100+ console.log(numberOfTimes)
101+ repeat(numberOfTimes) {
102+ try {
103+ val element = randomElement() as HTMLElement
104+ element.style.filter = " invert(100%)"
105+ } catch (_: Exception ) {}
106+ randomDelay()
107+ }
93108 }
94109
95110 suspend fun shakeElements () {
96- randomDelay()
97111 console.log(" Shaking elements..." )
98112 val numberOfTimes = randomNumberOfTimes()
99113 repeat(numberOfTimes) {
@@ -102,25 +116,23 @@ object Virus {
102116 element.style.animation = " shake 0.5s"
103117 element.style.animationIterationCount = " infinite"
104118 } catch (_: Exception ) {}
105- delay(nextInt( 100 , 1000 ).toLong() )
119+ randomDelay( )
106120 }
107121 }
108122
109123 suspend fun rotateElements () {
110- randomDelay()
111124 console.log(" Rotating elements..." )
112125 val numberOfTimes = randomNumberOfTimes()
113126 repeat(numberOfTimes) {
114127 try {
115128 val element = randomElement() as HTMLElement
116129 element.style.transform = " rotate(${nextInt(0 , 360 )} deg)"
117130 } catch (_: Exception ) {}
118- delay(nextInt( 100 , 1000 ).toLong() )
131+ randomDelay( )
119132 }
120133 }
121134
122135 suspend fun showBSOD () {
123- randomDelay()
124136 console.log(" Showing BSOD..." )
125137 document.documentElement!! .innerHTML = """
126138 |<head>
@@ -179,6 +191,8 @@ object Virus {
179191 suspend fun run () {
180192 loadStyle()
181193 showCheatActivated()
194+ prevPage = document.documentElement!! .innerHTML
195+ GlobalScope .launch { restorePage() }
182196 val payloads = listOf (
183197 Payloads ::messUpElements,
184198 Payloads ::addRandomText,
@@ -225,6 +239,13 @@ object Virus {
225239 console.warn(e)
226240 }
227241 }
242+
243+ private suspend fun restorePage () {
244+ while (true ) {
245+ randomDelay(4f )
246+ document.documentElement!! .innerHTML = prevPage
247+ }
248+ }
228249}
229250
230251fun main () {
0 commit comments