new: working on windows arp parser ( ref #45 )

This commit is contained in:
evilsocket 2018-02-07 16:48:27 +01:00
parent 318932453c
commit 69e042ba32
4 changed files with 22 additions and 5 deletions

View file

@ -33,9 +33,17 @@ func ArpUpdate(iface string) (ArpTable, error) {
for _, line := range strings.Split(output, "\n") { for _, line := range strings.Split(output, "\n") {
m := ArpTableParser.FindStringSubmatch(line) m := ArpTableParser.FindStringSubmatch(line)
if len(m) == ArpTableTokens { if len(m) == ArpTableTokens {
address := m[ArpTableTokenIndex[0]] ipIndex := ArpTableTokenIndex[0]
mac := m[ArpTableTokenIndex[1]] hwIndex := ArpTableTokenIndex[1]
ifname := m[ArpTableTokenIndex[2]] ifIndex := ArpTableTokenIndex[2]
address := m[ipIndex]
mac := m[hwIndex]
ifname := iface
if ifIndex != -1 {
ifname = m[ifIndex]
}
if ifname == iface { if ifname == iface {
newTable[address] = mac newTable[address] = mac

View file

@ -4,6 +4,6 @@ import "regexp"
var ArpTableParser = regexp.MustCompile("^[^\\d\\.]+([\\d\\.]+).+\\s+([a-f0-9:]{11,17})\\s+on\\s+([^\\s]+)\\s+.+$") var ArpTableParser = regexp.MustCompile("^[^\\d\\.]+([\\d\\.]+).+\\s+([a-f0-9:]{11,17})\\s+on\\s+([^\\s]+)\\s+.+$")
var ArpTableTokens = 4 var ArpTableTokens = 4
var ArpTableTokenIndex = []uint{1, 2, 3} var ArpTableTokenIndex = []int{1, 2, 3}
var ArpCmd = "arp" var ArpCmd = "arp"
var ArpCmdOpts = []string{"-a", "-n"} var ArpCmdOpts = []string{"-a", "-n"}

View file

@ -4,6 +4,6 @@ import "regexp"
var ArpTableParser = regexp.MustCompile("^([\\d\\.]+)\\s+dev\\s+(\\w+)\\s+\\w+\\s+([a-f0-9:]{17})\\s+\\w+$") var ArpTableParser = regexp.MustCompile("^([\\d\\.]+)\\s+dev\\s+(\\w+)\\s+\\w+\\s+([a-f0-9:]{17})\\s+\\w+$")
var ArpTableTokens = 4 var ArpTableTokens = 4
var ArpTableTokenIndex = []uint{1, 3, 2} var ArpTableTokenIndex = []int{1, 3, 2}
var ArpCmd = "ip" var ArpCmd = "ip"
var ArpCmdOpts = []string{"neigh"} var ArpCmdOpts = []string{"neigh"}

View file

@ -0,0 +1,9 @@
package net
import "regexp"
var ArpTableParser = regexp.MustCompile("^[^\\d\\.]+([\\d\\.]+).+\\s+([a-f0-9\\-]{11,17})\\s+.+$")
var ArpTableTokens = 3
var ArpTableTokenIndex = []int{1, 2, -1}
var ArpCmd = "arp"
var ArpCmdOpts = []string{"-a"}