Задать вопрос
@Sushkov
">alert("yohoho")

Как вшить ключ?

Решил попробовать сделать что-то вроде уникального идентификатора для каждой копии программы. Файл не подходит, потому что легко редактируется. Можно ли в Go вшить ключ в программу во время запуска?
  • Вопрос задан
  • 550 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Полностью согласен с Владимир Грабко

Константы вам в помощь, пихайте туда всё вплоть до файлов :)

Когда писал себе оповещатель стоимость PLEX в EveOnline то так собственно и поступил с иконкой игры.

const(
 EVE_ICON_SOURCE = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAY...."
 ICON_PATH  = "/tmp/eve.png"
)

// Check and export icon file from source
func iconExport() {

	var _, err = os.Stat(ICON_PATH)
	// Check exist icon file
	if os.IsNotExist(err) {
		// iconfile exist? Create
		file, err := os.Create(ICON_PATH)
		checkError(err)
		defer file.Close()

		// Open new iconfile
		iconFile, err := os.OpenFile(ICON_PATH, os.O_RDWR, 0644)
		checkError(err)
		defer iconFile.Close()

		// Decode Base64 string in bytecode
		iconSource, err := base64.StdEncoding.DecodeString(EVE_ICON_SOURCE)
		checkError(err)
		// Write bew icon
		_, err = iconFile.Write(iconSource)
		checkError(err)
		iconFile.Close()

	}
}


А в случае ТС даже запариваться с экспортом не нужно :)
Ответ написан
2ord
@2ord
"Вшить" можно сгенерированный PGP ключ, закодированный в строке, скажем, в представлении Base64.
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
Работающий бинарник сам в себя писать не может. Вам понадобится внешний бинарник, который будет подписывать первый.

1. Создайте в бинарнике уникальную статическую константу. Например, кучу букв A подряд.
2. Откройте бинарник hex-редактором и найдите смещение этой константы от начала файла.
3. Напишите на Go программу, которая откроет файл, и впишет по этому смещению нужные байты.

В качестве же ключа лучше всего использовать sha256 от файла с программой - так будет труднее подменить ключ.
Ответ написан
VGrabko
@VGrabko
Golang, Php, Js
мда.

const (
  keygen string = "ваш ключ"
)
Ответ написан
@FireGM
А чем не подходит файл? Может вам подойдёт просто генерация на основе среды, в которой запускается файл? Тогда ключ будет каждый раз генерироваться и будет неизменным, только если не поменяешь винду/внутренности компа. И вряд ли встретится 2 одинаковые среды.
Ответ написан
Комментировать
@ivahaev
Программист, связист и просто хороший человек
Если имелось ввиду "во время запуска компиллятора", то вот так, например, я прописываю время сборки и короткий хэш гит комита:

go build -ldflags "-X main.buildTime=`date +%Y-%m-%d:%H:%M:%S` -X main.gitHash=`git rev-parse --short HEAD`"


Собственно, в пакете main устанавливаются две переменные buildTime и gitHash. Дальше я вывожу их, в том числе, по ключу -v, т.е. в отображении версии.
Во время запуска модифицировать бинарник как-то странно...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы