Interface needs to be in monitor mode. This script can disrupt some wifi-tracking programs and can be extended to do some fuzzing on wifi-trackers.

probe_flood.py
Code:
import logging
import random
import time
from random import randint
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
from gen_ssid import gen_ssid

# [ Sources ]
### http://blog.packetheader.net/2014/01/sending-80211-packets-with-scapy.html
### https://www.centos.org/docs/5/html/5.2/Virtualization/sect-Virtualization-Tips_and_tricks-Generating_a_new_unique_MAC_address.html

def random_mac():
        mac = [ random.randint(0x00, 0xff),
                random.randint(0x00, 0xff),
                random.randint(0x00, 0xff),
                random.randint(0x00, 0xff),
                random.randint(0x00, 0xff),
                random.randint(0x00, 0xff) ]
        return ':'.join(map(lambda x: "%02x" % x, mac))

def transmit_probe_request(count=1,ssid='LOL'):
        conf.iface = "mon0"; # Interface
        dst = "ff:ff:ff:ff:ff:ff"; # Destination (broadcast)
        src = random_mac(); # Source
        bssid = random_mac(); # BSSID

        param = Dot11ProbeReq()
        essid = Dot11Elt(ID='SSID',info=ssid)
        rates = Dot11Elt(ID='Rates',info="\x01\x08\x82\x84\x8b\x96\x12\x24\x48\x6c")
        dsset = Dot11Elt(ID='DSset',info='\x01')
        pkt = RadioTap()/Dot11(type=0,subtype=4,addr1=dst,addr2=src,addr3=bssid)/param/essid/rates/dsset

        print '[*] 802.11 Probe Request: SSID=[%s], count=%d, source=%s' % (ssid,count,src)
        try:
                sendp(pkt,count=count,inter=0.01,verbose=0)
        except:
                raise


test = gen_ssid(mask_file='./us_ssids.masks')
test.load_mask_file()

while True:
        test.set_random_mask()
        transmit_probe_request(count=1,ssid=test.do_mask())
gen_ssid.py
Code:
import string
import random
import os.path
from random import randint

class gen_ssid:
        def __init__(self,mask='NO_MASK_SET_YET',mask_file=''):
                self.mask = mask
                self.buffer = ""
                if mask_file:
                        if os.path.isfile(mask_file):
                                self.mask_file = mask_file;
                                self.masks = []

        def do_mask(self):
                i = 0
                while i < len(self.mask):
                        if self.mask[i] == "?":
                                self.buffer = self.buffer + {'d' : str(randint(0,9)),
                                                        'l' : random.choice(string.ascii_lowercase),
                                                        'u' : random.choice(string.ascii_uppercase),
                                                        'a' : random.choice(string.ascii_lowercase + string.digits),
                                                        'A' : random.choice(string.ascii_uppercase + string.digits),
                                                        'x' : random.choice(string.hexdigits).lower(),
                                                        'X' : random.choice(string.hexdigits).upper(),
                                }[self.mask[i+1]]
                                i += 1
                        else:
                                self.buffer = self.buffer + self.mask[i]
                        i += 1
                result = self.buffer
                self.buffer = ""
                return result

        def set_random_mask(self):
                self.mask = random.choice(self.masks)

        def load_mask_file(self):
                with open(self.mask_file) as f:
                        self.masks = f.readlines()
                        for i in range(len(self.masks)):
                                self.masks[i] = self.masks[i].rstrip('\n')
us_ssids.masks
Code:
linksys
xfinitywifi
NETGEAR
belkin17e
belkin54g
FreeWifi
ATT?d?d?d
HOME-?X?X?X?X
HOME-?X?X?X?X-5
HOME-?X?X?X?X-2.4
2WIRE?d?d?d
NETGEAR?d?d
NETGEAR?d?d-5G