Skip to content

Commit a21af4f

Browse files
authored
Update respounder.go
1 parent e29a0b7 commit a21af4f

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

respounder.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const (
2424
'-'
2525
`
2626

27-
Version = 1.0
27+
Version = 1.1
2828
TimeoutSec = 3
2929
BcastAddr = "224.0.0.252"
3030
LLMNRPort = 5355
@@ -37,20 +37,31 @@ var (
3737
// default logger is set to abyss
3838
logger = log.New(ioutil.Discard, "", 0)
3939

40+
// default computername to broadcast
41+
computerName = "aweirdcomputername"
42+
4043
// argument flags
4144
jsonPtr = flag.Bool("json", false,
4245
`Prints a JSON to STDOUT if a responder is detected on
43-
network. Other text is sent to STDERR`)
46+
network. Other text is sent to STDERR`)
4447

4548
debugPtr = flag.Bool("debug", false,
4649
`Creates a debug.log file with a trace of the program`)
50+
51+
compPtr = flag.String("computername", "aweirdcomputername",
52+
`Overrides the default computer name`)
53+
4754
)
4855

4956
func main() {
5057
initFlags()
5158

5259
fmt.Fprintln(os.Stderr, Banner)
5360

61+
if *compPtr != "aweirdcomputername" {
62+
computerName = *compPtr
63+
}
64+
5465
interfaces, _ := net.Interfaces()
5566
logger.Println("======== Starting RESPOUNDER ========")
5667
logger.Printf("List of all interfaces: \n %+v\n", interfaces)
@@ -108,13 +119,13 @@ func sendLLMNRProbe(ip net.IP) string {
108119
responderIP := ""
109120
// 2 byte random transaction id eg. 0x8e53
110121
rand.Seed(time.Now().UnixNano())
111-
randomTransactionId := fmt.Sprintf("%04x", rand.Intn(65535))
122+
randomTransactionID := fmt.Sprintf("%04x", rand.Intn(65535))
123+
124+
cNameLen := fmt.Sprintf("%2x", len(computerName))
125+
encCName := hex.EncodeToString([]byte(computerName))
126+
127+
llmnrRequest := randomTransactionID + "00000001000000000000" + cNameLen + encCName + "0000010001"
112128

113-
// LLMNR request in raw bytes
114-
// TODO: generate a new computer name evertime instead of the
115-
// hardcoded value 'awierdcomputername'
116-
llmnrRequest := randomTransactionId +
117-
"0000000100000000000012617769657264636f6d70757465726e616d650000010001"
118129
n, _ := hex.DecodeString(llmnrRequest)
119130

120131
remoteAddr := net.UDPAddr{IP: net.ParseIP(BcastAddr), Port: LLMNRPort}
@@ -159,7 +170,7 @@ func getValidIPv4Addr(addrs []net.Addr) net.IP {
159170
func initFlags() {
160171
flag.Usage = func() {
161172
fmt.Fprintf(os.Stderr, "Respounder version %1.1f\n", Version)
162-
fmt.Fprintf(os.Stderr, "Usage: $ respounder [-json] [-debug]")
173+
fmt.Fprintf(os.Stderr, "Usage: $ respounder [-json] [-debug] [-computername anewcomputername]")
163174
fmt.Fprintf(os.Stderr, "\n\nFlags:\n")
164175
flag.PrintDefaults()
165176
}

0 commit comments

Comments
 (0)