mirror of
https://github.com/bettercap/bettercap
synced 2025-08-14 02:36:57 -07:00
balls
This commit is contained in:
parent
42fc639c10
commit
318932453c
2 changed files with 35 additions and 38 deletions
35
net/arp.go
35
net/arp.go
|
@ -2,7 +2,10 @@ package net
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/evilsocket/bettercap-ng/core"
|
||||
)
|
||||
|
||||
type ArpTable map[string]string
|
||||
|
@ -13,6 +16,38 @@ var (
|
|||
arpTable = make(ArpTable)
|
||||
)
|
||||
|
||||
func ArpUpdate(iface string) (ArpTable, error) {
|
||||
arpLock.Lock()
|
||||
defer arpLock.Unlock()
|
||||
|
||||
// Signal we parsed the ARP table at least once.
|
||||
arpWasParsed = true
|
||||
|
||||
// Run "arp -an" (darwin) or "ip neigh" (linux) and parse the output
|
||||
output, err := core.Exec(ArpCmd, ArpCmdOpts)
|
||||
if err != nil {
|
||||
return arpTable, err
|
||||
}
|
||||
|
||||
newTable := make(ArpTable)
|
||||
for _, line := range strings.Split(output, "\n") {
|
||||
m := ArpTableParser.FindStringSubmatch(line)
|
||||
if len(m) == ArpTableTokens {
|
||||
address := m[ArpTableTokenIndex[0]]
|
||||
mac := m[ArpTableTokenIndex[1]]
|
||||
ifname := m[ArpTableTokenIndex[2]]
|
||||
|
||||
if ifname == iface {
|
||||
newTable[address] = mac
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
arpTable = newTable
|
||||
|
||||
return arpTable, nil
|
||||
}
|
||||
|
||||
func ArpLookup(iface string, address string, refresh bool) (string, error) {
|
||||
// Refresh ARP table if first run or if a force refresh has been instructed.
|
||||
if ArpParsed() == false || refresh == true {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue