У меня есть требование перехватывать данные, поступающие из приложения в базу данных Oracle. Я исследовал доказательство концепции, в которой у меня есть приложение Spring Boot, которое запрашивает и записывает некоторые данные в базу данных, а затем захватывает TCP-трафик c с помощью RawCap.
Цель состоит в том, чтобы уметь восстанавливать последовательность запросов из журнала TCP-трафика c и уметь рассуждать о том, как база данных изменилась с учетом этих запросов. Я знаю, что это звучит как проблема X / Y, но я подтвердил, что это процесс необходим - что эти данные должны быть захвачены, и что другого способа их захватить нет. Причина, по которой это необходимо, заключается в том, что я хочу выборочно захватывать трафик c: учитывая два приложения, A и B, которые подключаются к базе данных, я хочу только понять, как A повлиял на базу данных, и у меня не обязательно есть доступ к исходный код A, чтобы иметь возможность регистрировать там изменения.
Когда я смотрю на TCP-трафик c в Wireshark, я вижу много посторонних символов в журналах.
Например , учитывая CommandLineRunner
в моем приложении со следующей реализацией:
@Transactional(readOnly = true)
@Override
public void run(String... args) throws Exception {
System.out.println("\n4.findByEmailReturnStream(@Param(\"email\") String email)...");
try (Stream<Customer> stream = customerRepository.findByEmailReturnStream("333@yahoo.com")) {
stream.forEach(System.out::println);
}
}
Я вижу строку ниже в захвате Wireshark, соответствующую этому запросу.
**ÿÿÿ****************************select customer0_.id as id1_0_, customer0_.created_date as created_date2_0_, customer0_.email as email3_0_, customer0_.name as name4_0_ from customer customer0_ where customer0_.email=:1 ************€*********4*******i****
333@yahoo.com
Кто-нибудь может объяснить эти звездочки и другие необычные символы? Есть ли у меня канонический способ «очистить» этот трафик c, чтобы я мог извлекать только запросы?
Заранее спасибо.