Обнюхивание локальной сети: Java-программа Jpcap, кажется, только ловит мои пакеты - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно создать программу, которая нюхает локальную сеть для школы. Я решил работать с Java и обнаружил, что вы можете захватывать пакеты с помощью jpcap. Поэтому я хотел последовать одному из примеров, представленных в github jpcap, и мне кажется, что я могу найти только свои собственные пакеты.

Как я уже сказал, я посмотрел код и выбрал свой интерфейс Wi-Fi. Программа захватывает пакеты, и я поместил все исходные IP-адреса в текстовый файл для запуска некоторых тестов. Я также создал хэш-карту ip-адресов, которые я нашел, когда сделал arp -a. Из того, что я прочитал в сети, эта команда показывает вам IP-адреса в вашей сети. Я создал логическое значение со значением false, а затем приступил к выполнению цикла, который просматривает текстовый файл и проверил, был ли IP-адрес в hashMap: if один из адресов появился в hashmap, логическое значение будет изменено на true, и это будет означать, что мне удалось что-то перехватить. После запуска теста логическое значение оказалось ложным.

Вот пример кода

   ``public class PacketCaptor {
        private static final int INFINITE = -1;
        private static final int PACKET_COUNT = INFINITE; 
      /*
          private static final String HOST = "203.239.110.20";
          private static final String FILTER = 
          "host " + HOST + " and proto TCP and port 23";
      */

      private static final String FILTER = 
        // "port 23";
        "";

      public static void main(String[] args) {

        try {
          if(args.length == 1){
              PacketCaptor sniffer = new PacketCaptor(args[0]);
          } else {
        System.out.println("Usage: java Sniffer [device name]");
        System.out.println("Available network devices on your machine:");
        String[] devs = PacketCapture.lookupDevices();

        for(int i = 0; i < devs.length ; i++)
          System.out.println("\t" + devs[i]);
          }
        } catch(Exception e) {
          e.printStackTrace();
          }

      }

      public PacketCaptor(String device) throws Exception {
        // Initialize jpcap
        PacketCapture pcap = new PacketCapture();
        System.out.println("Using device '" + device + "'");
        pcap.open(device, true);
        //pcap.setFilter(FILTER, true);
        pcap.addPacketListener(new PacketHandler());

        System.out.println("Capturing packets...");
        pcap.capture(PACKET_COUNT);
      }
    }


    class PacketHandler implements PacketListener 
    {
        WritingClass writing = new WritingClass();

      public void packetArrived(Packet packet) {
        try {
          // only handle TCP packets

          if(packet instanceof TCPPacket) {
        TCPPacket tcpPacket = (TCPPacket)packet;
        byte[] data = tcpPacket.getTCPData();

        String srcHost = tcpPacket.getSourceAddress();
        String dstHost = tcpPacket.getDestinationAddress();
        String isoData = new String(data, "ISO-8859-1");

        System.out.println(srcHost+" -> " + dstHost + ": " + isoData);
        String datas = srcHost+"|"+dstHost+"|";

        writing.write(datas, this.writing.getFileName());

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

Может кто-нибудь помочь мне понять, почему это не работает? Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 12 июня 2019

Причина, по которой вы не можете перехватить больше пакетов, заключается в том, что вам нужен интерфейс в режиме promisc или raw, я советую вам использовать соответствующий анализатор, например wireshark, чтобы проверить, могут ли другие пакеты, которые не адресованы вам,быть захваченным.Если нет, значит, вам нужно применить метод mitm, потому что вы находитесь в коммутируемой сети.Для использования этого кода на Wi-Fi должно быть достаточно интерфейса в режиме монитора (проверьте пакет aircrack-ng).В GNU / Linux системах на основе Debian может использоваться команда iw dev wlan0 interface add mon0 type monitor (из пакета wireless-tools)

...