Русский / Russian English / Английский

Сейчас на форуме: korober2, user99, delovoi, mrexodia (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› Модификация Java класса
Посл.ответ Сообщение

Ранг: 8.7 (гость)
Статус: Участник

Создано: 9 марта 2020 08:44 · Поправил: droidische New!
Цитата · Личное сообщение · #1

День добрый!
Наткнулся на проблему с классом в JAVA. При создании соединения с сервером, ява проверяет сертификат удалённого сервера и в случае если сертификат не совпадает, соединение разрывается. Очень хочется заглянуть в SSL обмен ПО и сервера. Я попробовал засунуть серт проксирующего сервера в CA certs JAVA не помогло. Залез в код поковырялся посмотрел что там происходит.
В итоге обнаружено:
trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
Certificate server = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(Base64.decodeBase64(<CERT>))
Сертификат сервера можно поменять в редакторе бинарном, но вот если длинна различная, что делать?
Подскажите пожалуйста, чем можно заменить сертификат на произвольный(с различной длинной сертификата) ?

Ранг: 43.3 (посетитель)
Статус: Участник

Создано: 9 марта 2020 09:42 New!
Цитата · Личное сообщение · #2

Помнится, я менял строки програмкой DirtyJoe

| Сообщение посчитали полезным: droidische


Ранг: 27.5 (посетитель)
Статус: Участник

Создано: 9 марта 2020 21:45 · Поправил: galenkane New!
Цитата · Личное сообщение · #3

измените true на false через какой-то AsmEditor в функции проверки сертификата

Ранг: 8.7 (гость)
Статус: Участник

Создано: 10 марта 2020 07:25 · Поправил: droidische New!
Цитата · Личное сообщение · #4

galenkane
Я тоже надеялсо, что будет просто
Там сложнее вариант. Там блок try ... except, если серти не проходит проверку то мы улетаем в эксепшен и вываливаемся.
_MBK_
Вроде правит и даже вроде класс живой, осталось проверить.

Ранг: 43.3 (посетитель)
Статус: Участник

Создано: 10 марта 2020 07:55 New!
Цитата · Личное сообщение · #5

А что мешает занопить проверку вообще

Ранг: 27.5 (посетитель)
Статус: Участник

Создано: 10 марта 2020 08:07 New!
Цитата · Личное сообщение · #6

return просто сделать надо

Ранг: 8.7 (гость)
Статус: Участник

Создано: 10 марта 2020 08:57 New!
Цитата · Личное сообщение · #7

так говорю, хочу подсмотреть что мне сервер возвращает.
Если я занопаю проверку, то не увижу ничего.
Code:
  1. try
  2.     {
  3.     SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, null).build();
  4.     SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] {
  5.    "TLSv1"
  6.     }, null, new DefaultHostnameVerifier());
  7.     RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(1000).setConnectTimeout(1000).setConnectionRequestTimeout(1000).build();
  8.     CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultRequestConfig(defaultRequestConfig).build();
  9.     HttpPost request = new HttpPost(url);
  10.     List formData = new ArrayList();
  11.     formData.add(new BasicNameValuePair("instanceId", instanceId));
  12.     formData.add(new BasicNameValuePair("activeCLIENT", (new StringBuilder()).append(si.getClients()).append("").toString()));
  13.     formData.add(new BasicNameValuePair("macCount", (new StringBuilder()).append(si.getMACCount()).append("").toString()));
  14.     formData.add(new BasicNameValuePair("version", NFTVersion));
  15.     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formData, Consts.UTF_8);
  16.     request.setEntity(entity);
  17.     HttpResponse response = httpclient.execute(request);
  18. }
  19. catch(KeyManagementException e)
  20.    {
  21.       throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  22.      }
  23.      catch(NoSuchAlgorithmException e)
  24.      {
  25.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  26.       }
  27.      catch(KeyStoreException e)
  28.      {
  29.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  30.       }
  31.        catch(ClientProtocolException e)
  32.        {
  33.           e.printStackTrace();
  34.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.NOT_REACHABLE);
  35.        }
  36. }
 eXeL@B —› Вопросы новичков —› Модификация Java класса

Видеокурс ВЗЛОМ