Как не жестко кодировать строку в программном обеспечении?

Мне интересно, как можно не жестко кодировать строку, например, IP-адрес в каком-то программном обеспечении или в программном обеспечении для удаленного подключения.

Я слышал об эксперте по кибербезопасности, который нашел IP-адрес человека, взламывавшего людей в его программном обеспечении, и с помощью этого они выследили его.

Итак, как я могу избежать жесткого кодирования моего IP в программном обеспечении, и как люди найдут мой IP, если я его жестко запрограммирую?


person Minege    schedule 28.11.2016    source источник
comment
Этот вопрос очень широк на данный момент, не могли бы вы попытаться сузить его?   -  person MooingRawr    schedule 28.11.2016
comment
Передайте строку в командной строке или попросите пользователя ввести ее или прочитать ее из файла конфигурации...   -  person kindall    schedule 28.11.2016
comment
Ну для начала что ты пытаешься сделать? Что вы имеете в виду, говоря, что не жестко кодируете строку? Если вы беспокоитесь о том, что кто-то отследит ваш IP, почему бы не получить прокси-сервер? Почему нужно скрывать свой IP в первую очередь? Ваша программа должна загружать данные с вашего IP-адреса или сообщать о чем-то этому IP-адресу? Там нет подробного ответа, только все общие ответы. Да, и если ваша программа подключается к IP-адресу, нам не нужно читать источник, мы можем просто увидеть, к чему подключен наш компьютер, и при необходимости отследить этот IP-адрес.   -  person MooingRawr    schedule 28.11.2016
comment
Или я даже на правильном пути в том, что вы хотите. Вы хотите, чтобы кто-то не знал специальный str в вашей программе? или значение формулы?   -  person MooingRawr    schedule 28.11.2016
comment
Я не делаю никаких программ, я просто интересуюсь этим. главный вопрос в том, как скрыть строку или переменную в программе. IP был конкретным примером. конечно можно использовать прокси, впн и т.д. но это не вопрос   -  person Minege    schedule 28.11.2016
comment
Тогда ваш ответ - нет. нет способа скрыть строковое значение от кого-то, кто может запустить ваш код. Либо они могут получить ваш исходный код, либо запустить его строка за строкой и выяснить, с чем вы его сравниваете, а с чем нет. И почему вы хотите скрыть это в первую очередь. если ваш код имеет дело с конфиденциальными данными, люди, которым вы не доверяете, не должны иметь доступ к этому коду (запускать его).   -  person MooingRawr    schedule 28.11.2016
comment
Я не делаю никаких программ, я просто интересуюсь этим. Это может быть опасно, например, для ключей шифрования RSA.   -  person Minege    schedule 28.11.2016


Ответы (4)


Есть несколько способов скрыть жестко закодированную строку. Одним из самых простых является XOR битов с другой строкой или повторяющейся константой. Таким образом, у вас может быть два жестко запрограммированных коротких массива, которые при объединении XOR вместе создают строку, которую вы хотите скрыть.

person mpez0    schedule 28.11.2016
comment
Благодарю вас ! Это реально реализуемо. - person Minege; 28.11.2016

Вы можете сделать любое из этих действий: 1) прочитать строку из файла, 2) прочитать строку из базы данных, 3) передать строку в качестве аргумента командной строки

person Steve    schedule 28.11.2016
comment
Я не думаю, что это то, что ищет ОП. ОП хочет знать, как замести следы в программе. То есть, если он дал вам программу для запуска, он не хочет, чтобы его IP просочился... - person MooingRawr; 28.11.2016
comment
Но если вы читаете из любой базы данных, она показывает учетные данные БД в вашей программе (и ее можно прочитать?), если вы читаете строку из файла, вам нужен, например, зашифрованный файл, и для его расшифровки вы нужен ключ расшифровки в вашей программе (и его можно прочитать?) - person Minege; 28.11.2016
comment
MooingRawr, нет, не знаю. Я хочу скрыть строку или вообще программу от чтения, особенно для закрытого ключа IP и RSA. - person Minege; 28.11.2016

Один из вариантов — использовать асимметричное шифрование, вы можете запросить частную строку с сервера, использующего его (см. SSL/TLS). Если вы хотите сделать это локально, вы должны писать/читать в файл (ОС должна позаботиться об авторизации посредством доступа пользователя)

person Cristóvão Trevisan    schedule 28.11.2016
comment
Благодарить. Может ли ключ или любая строка, запрошенная SSL/TLS с сервера, перехватываться, когда он поступает в память и используется программным обеспечением? - person Minege; 28.11.2016
comment
Нет, если правильно реализованный SSL сначала подтверждает, что сервер является тем, кем он себя называет (используя асимметричное шифрование, через центр сертификации), то ваша программа и сервер обмениваются симметричным ключом для шифрования с использованием того же асимметричного шифрования (это означает только владелец сервера может расшифровать информацию, также известную как симметричный ключ). Вся связь после этого использует симметричный ключ для шифрования данных, поэтому его невозможно перехватить (пока алгоритм шифрования обновлен). - person Cristóvão Trevisan; 04.12.2016
comment
Хорошо, ключ не может быть перехвачен в сети, например, с помощью MIM-атаки, но когда дело доходит до памяти, это похоже на то, если мы определим переменную ip = myip ? - person Minege; 20.12.2016
comment
Зависит от языка, который вы программируете, если это скомпилированный язык (например, C или Java), переменная будет только в памяти, на которую ссылается указатель, поэтому ее почти невозможно прочитать. В интерпретируемых языках (таких как JavaScript) можно прочитать переменную, но это должно быть очень сложно, если переменная не находится в доступной области, а ваш код не читается человеком (например, если вы используете Uglify). - person Cristóvão Trevisan; 21.12.2016

Если вы хотите скрыть это, зашифруйте это, вы часто видите это на github, где люди случайно публикуют свои ключи aws или что-то еще не на github, потому что они не использовали это как «секрет». всегда шифруйте важные данные, никогда не используйте жестко закодированные значения, такие как ip, так как его можно легко изменить, какой-то DNS-преобразователь может помочь вам оставаться на маршруте. в этом конкретном случае вы упомянули, что использование DNS для указания на прокси-сервер поможет замаскировать IP-адрес конечной точки.

person Asaf Fridman    schedule 09.05.2017