Список разделов Flyback.org.ru » не HV » программерство
Тему сейчас просматривают - зарегистрированных: 0, скрытых: 0 и гостей: 0
Зарегестрированные - Нет
тема: программерство
Ответить с цитатой

Николай
 


темы такой нету. а вообще нужна бы.


интересно, а можно ли в сях замутить такой изврат как в php - динамически создаваемые массивы\переменные с произвольными именами.

например в пхп
$a='ein';
$b='shit';
$var[$a]=$b;
echo $var['ein']; даст нам shit

очень хочется в сях такое.

пока пользуюсь извратами с хранением отдельно имени и значения в двухмерном массиве с его последующим перебором


очень хочется :D

Добавлено: Tue Jan 22, 2019 8:44 pm
Ответить с цитатой

perezx
 


Ну так вопрос - и отличие - в стадиях компиляции.
Но на самом деле все эти трюки радикально усложняют последующее обслуживание программы, так что стоит ли...

Добавлено: Tue Jan 22, 2019 9:05 pm
Ответить с цитатой

Ivani
 


Николай писал(а):
очень хочется в сях такое. Без менеджера памяти невозможно, я наоборот последнее время пытаюсь все переменные сделать глобальными и со строго фиксированными типами.

Добавлено: Tue Jan 22, 2019 9:36 pm
Ответить с цитатой

sergh
 


в сях-плюсях:


Добавлено: Tue Jan 22, 2019 10:37 pm
Ответить с цитатой

Николай
 


это малость не то.
скажем в пхп я читаю файл в котором строки имеют вид
name=value
делаю к каждой строке
$name=strtok($str,'=');
$value=strtok('\n');
$var[$name]=$value;
и имею созданые из файла переменные. их имена и значение, и количнство тоже неизвестны.
в сях это превращается в онанизм с насилием над файлами.
я понимаю, что интерпретатор и компилятор отличаются как мы с марсианами, но все же хочется динамических переменных. хотя бы массивов с символьеыми именами.
на худой конец динамических структур.
вот такие вот извращенные желания.

хотя похоже самым правильным будет менеджер памяти запилить, пусть он ведет индекс переменных, выделяет под них память, ищет по именам.

Добавлено: Tue Jan 22, 2019 11:18 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


ты что, нейросеть решил написать? Обычно там такие динамические штуки востребованы...

Добавлено: Tue Jan 22, 2019 11:43 pm
Ответить с цитатой

N1X
 


Ну есть конечно malloc, правда с именами он не работает.

Добавлено: Wed Jan 23, 2019 12:05 am
Ответить с цитатой

Николай
 


2Витек
нет. api к умному дому делаю. подключаем любой новый модуль в сеть, и его память подключается в общее адресное пространство, его переменные получают соответвующие имена. изменение перменной в управляющей программе изменяет ее в модуле, к которому она относится.
сейчас добиваюсь, чтобы конечный программер мог писать конструкции вида if ( module1.temp1 > control.temp1 ) module2.motor1=0;

в данный момент переменные надо вычитать из модулей конструкциями var=var_read(имя_модуля.имя_переменной) а после изменения сохранить var_write(имя_модуля.имя_переменой,var)
что превращает код в говно малочитаемое.

Добавлено: Wed Jan 23, 2019 12:24 am
Ответить с цитатой

Николай
 


конечно в сях не очень удобно через жопу гланды вырезать, но вроде сооружаются динамические переменные
конструкцию вида $_(имяпеременной)_$ можно пользовать как переменную.
при первоначальном обращении она создается и в дальнейшем уже пользуем ее по назначению.
пока сам блок управления переменными нуждается в причесывании. как более менее прилично по быстродействию и красоте кода будет - выложу, мож кому сгодится для извратов

а использование следующее
Код:


//имя можно как жестко задать
$_"foo"_$=12;

//так и взять из переменной
char name[]="bar";
$_(name)_$=13;

// и юзать как обычные переменные
$_"foobar"_$=$_"bar"_$+$_"foo"_$;

printf("%d\n",$_"foo"_$);
printf("%d\n",$_"bar"_$);
printf("%d\n",$_"foobar"_$);

на выходе дает
12
13
25


Добавлено: Wed Jan 23, 2019 1:51 am
Ответить с цитатой

sergh
 


не, с malloc - calloc никто не делает давно, если только твоя железяка только C без плюсов понимает.
Лехция про динамические массивы йобаный стыд , пароль - название транзистора с аватара русскими большими.

Про работу с файлами надо?

Добавлено: Wed Jan 23, 2019 10:38 am
10 Динамическая память.zip (1.33 Мб)
Ответить с цитатой

Николай
 


благодарствую


с malloc самое оно. обычно без плюсов пишу. привычка-с

портянку приводить не буду. суть в том что функция ведет индекс имен переменных и возвращает ее порядковый номер. первое обращение к несуществующему имени пишется в первую свободную ячейку этого массива. затем массив имен переменных и массив значений удлиняем realloc.

конструкция #define $(a) VAR[find_var((a))]

позволяет писать выражения типа if ($("foo")>$("bar")) $("shit")++;



отвратительное время доступа. поиск перебором это бээээ... но это потихоньку исправляю. хотя для сотни-другой переменных это сущие микросекунды

Добавлено: Fri Jan 25, 2019 1:22 am
Ответить с цитатой

Николай
 


а кто как относится к однократному гаммиррванию в деле криптографии мелких посылок?

берем сообшение, счииаем crc,дописываем его в конец, затем накладываем намму и плюем в эфир, на приемной стороне по сути реалтаймом дешифруем и проверяем crc.

думал тут над криптой - и подумал что для стобайтных посылок проще сто байт под гамму отвести во флеше, чем хэш вкорячивать

Добавлено: Fri Jan 25, 2019 10:32 pm
Ответить с цитатой

Warlock_Wolf
 


от чего защищаешься? кто тебя будет ломать?

Добавлено: Fri Jan 25, 2019 11:20 pm
Ответить с цитатой

Николай
 


взломщик ниже средней руки, способный скажем хайджечить сигналки машинные.
брутфорс отсечется программно - десяток кривых пакетов и модуль уйдет из как скомпрометированный.

стойкость должна быть достаточна, чтобы проще было дать по голове хозяину и зайти, чем ломать.

Добавлено: Sat Jan 26, 2019 11:22 am
Ответить с цитатой

sergh
 


3 кривых ввода и отрубить на пол-часа. Неделями не будет сидеть подбирать.

Добавлено: Sat Jan 26, 2019 11:34 am
Ответить с цитатой

Break_Neck
 


ну самое простое в автомобильных железках есть ) - табличное шифрование пакетов. В начале сообщения передается указатель на текущее слово или байт для маскирования ( в криптографии это обычный xor). На передаваемое сообщение накладывается маска, при приеме - по указателю сообщение расшифровывается. Незатейливо и быстро работает - табличку для шифрования-дешифрования любого размера можно сделать - скок не жалко места под нее в памяти ну и требования к стойкости. Без всяких аес-дес-мд-рипмд - если неизвестно сообщение и ключ Smile - да заебуться расшифровывать

Добавлено: Sat Jan 26, 2019 1:17 pm
Ответить с цитатой

Николай
 


да. я об ентом и говорю - это и есть гаммирование.

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

а автомобильные железки - редко встретишь приличную.все распространенные ломаются на ура.

наложение маски хорошо в полностью изменяемых сообщениях, в противном случае надо постоянно менять маску, что невозможно.

значит сообщение надо как-то перемешивать, или добавлять случайную последовательность, которую каким-то образом проверять

Добавлено: Sat Jan 26, 2019 1:29 pm
Ответить с цитатой

Break_Neck
 


Для этого у тебя набор масок - в случае 1го байта их теоретически 256 ) - но стоит выкинуть часть (0х00, 0хFF ) и случайный или псевдослучайный генератор для указателя. Можно шифровать сообщение по таблице статичной из 128байт например просто указывая адрес начала в таблице. То биш - в начале сообщения длинной пусть 20 байт - указывается не номер маски, а случайное-псевдослучайное начальное смещение в таблице ксоров, и каждый следующий байт в сообщении шифруется и дешифруется (i++). Ну и так как сообщение и его содержание неизвестно гипотетическому злоумышленнику - то для того что бы скомпрометировать данный тип шифрования нужно знать и таблицу и содержание и формат исходного сообщения.

Добавлено: Sat Jan 26, 2019 1:47 pm
Ответить с цитатой

Николай
 


формат сообшений известен. он может купить точно такойже девайс (но с другой есесно маской) и посмотреть формат сообшений. в ыормате есть неизменяемые байты. я выше писал, что так как смещение по маске случайны, то набрав много пакетов мы можем увидеть изменения этого неизменяемого байта, и восстановить всю маску.

тут надо добиться чтобы сообшение было всегда разным, даже при одинаковых данных

Добавлено: Sat Jan 26, 2019 2:07 pm
Ответить с цитатой

Break_Neck
 


ну если хочется криптостойкости и ты параноиш - тогда вариант такой - ключ шифррования пусть 8 байт, и функция хеширования - указатель - количествоо шагов хеша по например алгоритму MD или для простоты битового сдвига всего массива. Похешив энное кол-во раз - этой маской и ксорим пакеты. Или/и изобрести свою контрольку-хеш на сообщение и им просто подписывать открытое сообщение. Вариантов полно - другой вопрос надо ли Smile

Добавлено: Sat Jan 26, 2019 3:38 pm
Ответить с цитатой

Ivani
 


1 Для получения текущей маски из массива можно использовать еще и битовый сдвиг(позволит сделать из 8 КБ массива 64 КБ маски при 16 бит адресе начала).
2 Для получения стартового адреса+бита маски можно использовать CRC связки случайное число+ключ, случайное число передавать.
3 Это все равно не защитит от перехвата пары посылок и их последующего использования.
4 Для гарантированной защиты нужны или часы или двухсторонняя связь...

Добавлено: Sat Jan 26, 2019 3:45 pm
Ответить с цитатой

Break_Neck
 


~200тысяч хешей по алгоритму RipeMD64 можно хранить в еепроме так что бы не молотить все 200тыс шагов от основания - а разбив на куски равные с указазателем на нужную область в текущий момент и используя от 64 до 128 байт памяти (еепром или флеш - тут уже на вкус и цвет) - и 8ми битный проц на 4х мегагерцах делает это достаточно шустро. Подписывать можно хешем этим или шифровать ) - каждое следуещее сообщение например текущий хеш минус 1(нечно подобное в мерседесе с их ключами рыбками).
з.ы. 64 битные хеши реверсятся через построение радужных таблиц или таблиц хелмана, но это время даже используя видюхи современные а ля майнинг. На лету - хуй Smile Ток построить таблички надо - а для этого нужен сам алгоритм хеша.

Добавлено: Sat Jan 26, 2019 3:51 pm
Ответить с цитатой

Warlock_Wolf
 


генериш ключ 32 бита.(данные с ADC или еще как то) потом по протоколу Диффи — Хеллмана обмениваешься. это начало гаммы. iran.

потом генератор шума.
u8 Radom(){
iran=(iran*(u32)4096+(u32)150889)%(u32)714025;
return iran/0xfff;
};
получаешь гамму.

если 3 4 декодирования не прошло(где то съехал счетчик). то инициируешь новую смену ключей.

Добавлено: Sat Jan 26, 2019 4:27 pm
Ответить с цитатой

Break_Neck
 


да и сщас процы есть с аппаратным аесом на борту Smile

Добавлено: Sat Jan 26, 2019 4:54 pm
Ответить с цитатой

Ivani
 


У него проц в брелке и времени на пересчет доли секунды.

Добавлено: Sat Jan 26, 2019 5:41 pm
Список разделов Flyback.org.ru » не HV » программерство
На страницу 1, 2, 3, 4, 5, 6, 7  След.     Просмотр темы целиком



Лицензионное соглашение

(c)Flyback.org.ru
Российское общество любителей высоких напряжений.
Использование материалов с данного сайта и форума возможно только с разрешения администрации.