packet sniffer changes

This commit is contained in:
Abhishek Kondur
2022-11-14 19:14:39 +05:30
parent 5bc94bcc0b
commit eb1aa3a386
5 changed files with 31 additions and 29 deletions

View File

@@ -6,7 +6,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"log"
"net" "net"
"net/http" "net/http"
"os" "os"
@@ -150,25 +149,25 @@ func startGoRoutines(wg *sync.WaitGroup) context.CancelFunc {
go func(networks []string) { go func(networks []string) {
for _, network := range networks { // for _, network := range networks {
logger.Log(0, "Collecting interface and peers info to configure proxy...") // logger.Log(0, "Collecting interface and peers info to configure proxy...")
cfg := config.ClientConfig{} // cfg := config.ClientConfig{}
cfg.Network = network // cfg.Network = network
cfg.ReadConfig() // cfg.ReadConfig()
node, err := GetNodeInfo(&cfg) // node, err := GetNodeInfo(&cfg)
if err != nil { // if err != nil {
log.Println("Failed to get node info: ", err) // log.Println("Failed to get node info: ", err)
continue // continue
} // }
ProxyMgmChan <- &manager.ManagerAction{ // ProxyMgmChan <- &manager.ManagerAction{
Action: manager.AddInterface, // Action: manager.AddInterface,
Payload: manager.ManagerPayload{ // Payload: manager.ManagerPayload{
InterfaceName: node.Node.Interface, // InterfaceName: node.Node.Interface,
Peers: node.Peers, // Peers: node.Peers,
}, // },
} // }
} // }
}(networks) }(networks)
return cancel return cancel

View File

@@ -226,7 +226,7 @@ func (m *ManagerAction) AddInterfaceToProxy() error {
for _, peerI := range m.Payload.Peers { for _, peerI := range m.Payload.Peers {
peerConf := m.Payload.PeerMap[peerI.PublicKey.String()] peerConf := m.Payload.PeerMap[peerI.PublicKey.String()]
if peerI.Endpoint == nil && (!peerConf.IsAttachedExtClient || !peerConf.IsExtClient) { if peerI.Endpoint == nil && !(peerConf.IsAttachedExtClient || peerConf.IsExtClient) {
log.Println("Endpoint nil for peer: ", peerI.PublicKey.String()) log.Println("Endpoint nil for peer: ", peerI.PublicKey.String())
continue continue
} }

View File

@@ -42,17 +42,19 @@ func ExtractInfo(buffer []byte, n int) (int, string, string) {
} }
func StartSniffer(ifaceName string, extClient string) { func StartSniffer(ifaceName string, extClient string) {
log.Println("Starting Packet Sniffer for iface: ", ifaceName)
var ( var (
snapshotLen int32 = 1024 snapshotLen int32 = 1024
promiscuous bool = false promiscuous bool = false
err error err error
timeout time.Duration = 30 * time.Second timeout time.Duration = 1 * time.Microsecond
handle *pcap.Handle handle *pcap.Handle
) )
// Open device // Open device
handle, err = pcap.OpenLive(ifaceName, snapshotLen, promiscuous, timeout) handle, err = pcap.OpenLive(ifaceName, snapshotLen, promiscuous, timeout)
if err != nil { if err != nil {
log.Fatal(err) log.Println("failed to start sniffer for iface: ", ifaceName, err)
return
} }
defer handle.Close() defer handle.Close()

View File

@@ -60,13 +60,13 @@ func (p *Proxy) ProxyToRemote() {
} }
peers := common.WgIFaceMap[p.Config.WgInterface.Name] peers := common.WgIFaceMap[p.Config.WgInterface.Name]
if peerI, ok := peers[p.Config.RemoteKey]; ok { if peerI, ok := peers[p.Config.RemoteKey]; ok {
//var srcPeerKeyHash, dstPeerKeyHash string var srcPeerKeyHash, dstPeerKeyHash string
buf, n, _, _ = packet.ProcessPacketBeforeSending(buf, n, peerI.Config.LocalKey, peerI.Config.Key) buf, n, srcPeerKeyHash, dstPeerKeyHash = packet.ProcessPacketBeforeSending(buf, n, peerI.Config.LocalKey, peerI.Config.Key)
if err != nil { if err != nil {
log.Println("failed to process pkt before sending: ", err) log.Println("failed to process pkt before sending: ", err)
} }
// log.Printf("PROXING TO REMOTE!!!---> %s >>>>> %s [[ SrcPeerHash: %s, DstPeerHash: %s ]]\n", log.Printf("PROXING TO REMOTE!!!---> %s >>>>> %s [[ SrcPeerHash: %s, DstPeerHash: %s ]]\n",
// server.NmProxyServer.Server.LocalAddr().String(), p.RemoteConn.String(), srcPeerKeyHash, dstPeerKeyHash) server.NmProxyServer.Server.LocalAddr().String(), p.RemoteConn.String(), srcPeerKeyHash, dstPeerKeyHash)
} else { } else {
log.Printf("Peer: %s not found in config\n", p.Config.RemoteKey) log.Printf("Peer: %s not found in config\n", p.Config.RemoteKey)
p.Cancel() p.Cancel()

View File

@@ -2,6 +2,7 @@ package server
import ( import (
"context" "context"
"fmt"
"log" "log"
"net" "net"
"time" "time"
@@ -113,9 +114,9 @@ func (p *ProxyServer) Listen(ctx context.Context) {
if peerInfo, ok := common.PeerKeyHashMap[srcPeerKeyHash]; ok { if peerInfo, ok := common.PeerKeyHashMap[srcPeerKeyHash]; ok {
if peers, ok := common.WgIFaceMap[peerInfo.Interface]; ok { if peers, ok := common.WgIFaceMap[peerInfo.Interface]; ok {
if peerI, ok := peers[peerInfo.PeerKey]; ok { if peerI, ok := peers[peerInfo.PeerKey]; ok {
// log.Printf("PROXING TO LOCAL!!!---> %s <<<< %s <<<<<<<< %s [[ RECV PKT [SRCKEYHASH: %s], [DSTKEYHASH: %s], SourceIP: [%s] ]]\n", log.Printf("PROXING TO LOCAL!!!---> %s <<<< %s <<<<<<<< %s [[ RECV PKT [SRCKEYHASH: %s], [DSTKEYHASH: %s], SourceIP: [%s] ]]\n",
// peerI.Proxy.LocalConn.RemoteAddr(), peerI.Proxy.LocalConn.LocalAddr(), peerI.Proxy.LocalConn.RemoteAddr(), peerI.Proxy.LocalConn.LocalAddr(),
// fmt.Sprintf("%s:%d", source.IP.String(), source.Port), srcPeerKeyHash, dstPeerKeyHash, source.IP.String()) fmt.Sprintf("%s:%d", source.IP.String(), source.Port), srcPeerKeyHash, dstPeerKeyHash, source.IP.String())
_, err = peerI.Proxy.LocalConn.Write(buffer[:n]) _, err = peerI.Proxy.LocalConn.Write(buffer[:n])
if err != nil { if err != nil {
log.Println("Failed to proxy to Wg local interface: ", err) log.Println("Failed to proxy to Wg local interface: ", err)