File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,7 +39,9 @@ OPTIONS:
3939 -I Display list of network interfaces and exit
4040 -d Enable debug logging
4141 -nocolor Disable colored output
42- -auto Automatically set kernel parameters (Linux/Android) and network settings
42+ -auto Automatically set kernel parameters (Linux/Android) and network settings. When RA spoofing is enabled and no -rdnss flag
43+ is provided, RDNSS option is included in each packet with host IP as DNS server for targets. DNS server is setup using
44+ resolv.conf or Google DNS as fallback nameserver.
4345 -i The name of the network interface. Example: eth0 (Default: default interface)
4446 -interval Interval between sent packets (Default: 5s)
4547
@@ -51,9 +53,9 @@ OPTIONS:
5153
5254 RA spoofing:
5355 -ra Enable RA (router advertisement) spoofing. It is enabled when no spoofing mode specified
54- -p IPv6 prefix for RA spoofing (Example: 2001:db8:7a31:4400::/64)
56+ -p IPv6 prefix for RA spoofing (Example: 2001:db8:7a31:4400::/64). See RFC 4862 for more info
5557 -mtu MTU value to send in RA packet (Default: interface value)
56- -rlt Router lifetime value
58+ -rlt Router lifetime value. Tells targets how long router should be used as default gateway. See RFC 4682 for more info
5759 -rdnss Comma separated list of DNS servers for RDNSS mode (Example: " 2001:4860:4860::8888,2606:4700:4700::1111" )
5860 -E Specify IPv6 extension headers for RA Guard evasion. The packet structure should contain at least one fragment (F)
5961 that is used to separate per-fragment headers (PFH) and headers for fragmentable part. PFH get included in each fragment,
Original file line number Diff line number Diff line change @@ -42,7 +42,9 @@ OPTIONS:
4242 -I Display list of network interfaces and exit
4343 -d Enable debug logging
4444 -nocolor Disable colored output
45- -auto Automatically set kernel parameters (Linux/Android) and network settings
45+ -auto Automatically set kernel parameters (Linux/Android) and network settings. When RA spoofing is enabled and no -rdnss flag
46+ is provided, RDNSS option is included in each packet with host IP as DNS server for targets. DNS server is setup using
47+ resolv.conf or Google DNS as fallback nameserver.
4648 -i The name of the network interface. Example: eth0 (Default: default interface)
4749 -interval Interval between sent packets (Default: 5s)
4850
@@ -54,9 +56,9 @@ OPTIONS:
5456
5557 RA spoofing:
5658 -ra Enable RA (router advertisement) spoofing. It is enabled when no spoofing mode specified
57- -p IPv6 prefix for RA spoofing (Example: 2001:db8:7a31:4400::/64)
59+ -p IPv6 prefix for RA spoofing (Example: 2001:db8:7a31:4400::/64). See RFC 4862 for more info
5860 -mtu MTU value to send in RA packet (Default: interface value)
59- -rlt Router lifetime value
61+ -rlt Router lifetime value. Tells targets how long router should be used as default gateway. See RFC 4682 for more info
6062 -rdnss Comma separated list of DNS servers for RDNSS mode (Example: "2001:4860:4860::8888,2606:4700:4700::1111")
6163 -E Specify IPv6 extension headers for RA Guard evasion. The packet structure should contain at least one fragment (F)
6264 that is used to separate per-fragment headers (PFH) and headers for fragmentable part. PFH get included in each fragment,
Original file line number Diff line number Diff line change @@ -412,12 +412,7 @@ func NewNDPSpoofer(conf *NDPSpoofConfig) (*NDPSpoofer, error) {
412412 return nil , fmt .Errorf ("[ndp spoofer] failed creating DNS server on %s:53: %v" , nr .hostIP , err )
413413 }
414414 nr .gwConn = pconn .(* net.UDPConn )
415- var gwIPv4 netip.Addr
416- gwIPv4 , err = network .GetGatewayIPv4FromInterface (nr .iface .Name )
417- if err != nil {
418- gwIPv4 = netip .MustParseAddr ("8.8.8.8" )
419- }
420- nr .gwDNSAddr = & net.UDPAddr {IP : net .ParseIP (gwIPv4 .String ()), Port : 53 }
415+ nr .gwDNSAddr = nr .getResolver ()
421416 }
422417 if conf .PacketQuery != "" {
423418 ra := nr .newRAPacket (nr .rlt )
@@ -1222,3 +1217,18 @@ func (nr *NDPSpoofer) handleDNSConnection(conn *udpConn) {
12221217 return
12231218 }
12241219}
1220+
1221+ func (nr * NDPSpoofer ) getResolver () * net.UDPAddr {
1222+ if resolvers , err := network .GetSystemNameservers (); err == nil {
1223+ for _ , r := range resolvers {
1224+ if network .Is6 (r ) {
1225+ var zone string
1226+ if r .IsLinkLocalUnicast () {
1227+ zone = nr .iface .Name
1228+ }
1229+ return & net.UDPAddr {IP : net .ParseIP (r .String ()), Port : 53 , Zone : zone }
1230+ }
1231+ }
1232+ }
1233+ return & net.UDPAddr {IP : net .ParseIP ("2001:4860:4860::8888" ), Port : 53 }
1234+ }
Original file line number Diff line number Diff line change 11package ndpspoof
22
3- const Version string = "nf v0.0.6 "
3+ const Version string = "nf v0.0.7 "
You can’t perform that action at this time.
0 commit comments