diff --git a/lib/msf/core/exploit/remote/ipv6.rb b/lib/msf/core/exploit/remote/ipv6.rb index 7102adcea174..fe15d5c3ea12 100644 --- a/lib/msf/core/exploit/remote/ipv6.rb +++ b/lib/msf/core/exploit/remote/ipv6.rb @@ -252,12 +252,14 @@ def ipv6_linklocaladdr(mac) # which is from DDniele Belluci def ipv6_soll_mcast_addr6(addr) h = addr.split(':')[-2, 2] - m = [] - m << 'ff' - m << (h[0].to_i(16) & 0xff).to_s(16) - m << ((h[1].to_i(16) & (0xff << 8)) >> 8).to_s(16) - m << (h[1].to_i(16) & 0xff).to_s(16) - 'ff02::1:' + [m[0,2].join, m[2,2].join].join(':') + m = [] + x = h[0] + x[0..1] = 'ff' + m << x + x = h[1] + x.sub!(/^0*/, "") + m << x + 'ff02::1:' + m.join(':') end # From Jon Hart's Racket::L3::Misc#soll_mcast_mac()