0
- 1
- 2
- 3
https://github.com/moscow-technologies/blockchain-voting/tree/voting2020/elec2020/ballot
https://github.com/moscow-technologies/blockchain-voting/blob/voting2020/elec2020/ballot/public/js/forms/mgik/LeavingPageCheckerInit.js
https://github.com/moscow-technologies/blockchain-voting/blob/voting2020/elec2020/frontend-library-source/crypto-lib/src/util/numberFromLeBytes.js
Как и всё в этой стране, обнуление написано на PHP, jQuery и (да-да) местами Rust, а управляется supervisord, ибо для редактирования юнитов systemd нужно sudo, который не дали.
Какой блокчейн )))
Запостил:
Fike,
30 Июня 2020
cообщают «Открытые медиа» https://openmedia.io/news/n3/eksperty-u-organizatorov-elektronnogo-golosovaniya-est-texnicheskaya-vozmozhnost-podtasovyvat-rezultaty/
https://github.com/moscow-technologies/blockchain-voting/blob/voting2020/elec2020/ballot/resources/views/election/show.tpl#L14-L16
какой секьюрити )))
POST https://elec.2020og.ru/#complete
Cookie: laravel_session=abcdef123
ответ: HTTP/2 302 Found
location: https://elec.moscow/election/check/ длинная-длинная-цепочка-из-букв-и-цифр=
(на самом деле тут скрыт ваш номер бюллетеня, допустим, 777-ggg-aaa. Как проверить: вставить эту длинную цепочку на сайт https://www.base64decode.org/, раскодировать, потом взять из результата url и еще раз раскодировать. Нас наперстками не проведешь!)
Именно поэтому я за «PHP».
НЕ
ВЫ
НО
СИ
МО
а нахуй был нужен блокчейн без этой функции?
Анонимность уровня /dit.mos.ru/
И это неустранимый недостаток веба.
тогда ванишд
я просто жопой прочитал
И тебе нужны либо автономная хтмлка либо опенсурсная прога чтобы избавиться от влияния сервака и иметь возможность поревьючить код.
Дык не анонимное то вообще тупо. Подписываешь свой голос смарткартой да кидаешь в урну.
Например, блондинистый распиздяй может прийти и сказать, что он первый распиздяй, который сегодня голосует и получить бюллетень.
Рыжий распиздяй попробует так сказать, но бюллетень уже не получит, как и блондинистый не-распиздяй. Тогда он перейдет к следующему атрибуту, но если кроме "рыжий" и "распиздяй" у него есть третий атрибут, его всё еще невозможно идентифицировать.
Да, это позволит abc проголосовать сразу за двоих, но не все сразу же, я просто демонстрирую возможность нечеткой идентификации
Ты генеришь уникальный ключ. Сервак проверяет твою личность и вслепую, не видя этого ключа, подписывает его (по сути там 2 слоя RSA).
Теперь ты просто ждёшь несколько часов, подписываешь свой голос этим ключом и отправляешь его на сервак.
З.Ы. Но это, наверное, уже никак не решить.
А потом сервак публикует лог всех, кто получал "бюллетени". И если ты не голосовал, но внезапно нашёл в этом списке себя, то сервак в жопе - у него нет пруфа с твоей подписью.
Сервак с урной тоже публикует лог. Поэтому ты можешь проверить, что голосов в сумме не больше, чем получавших бюллетени. И можешь найти в этом логе свой голос и проверить его.
Чем больше народу сделает такие проверки - тем больше вероятность, что никто никого не наебал. Как-то так.
Поскольку голосование анонимное, ты кроме своего голоса или отказа ничего проверить не можешь.
Если ты голосовал, то ты можешь проверить, что твой голос учтён правильно.
Если тебе похуй - то за тебя могут приписать что угодно. И без твоей помощи никто это не проверит т.к. голосование анонимное.
Смарт-картой наверное. Других способов я не вижу. Смски и пароли - хуйня без неотрекаемости.
> запомнить
Дык алгоритм слепой подписи. Он не знает, какой именно ключ он подписал формируя твой бюллетень.
А в общем случае слепой подписи ты серваку кидаешь тыщу документов. И он просит дать ключи от 999 из них чтобы убедиться, что в них не хуйня. А потом вслепую подписывает оставшийся. Очень тяжёлый алгоритм, на самом деле.
Ну само собой "документ" - это не вордовский файл. Осмысленный документ вслепую не подписать.
Это скорее про какие-нибудь ключи, сертификаты и прочую криптографическую хуйню.
Я серваку даю 100 рублей и мешок таких чеков. Он 999 из них вскрывает и убеждается, что там действительно написано "100 рублей". А последний вслепую подписывает.
Теперь я могу этот чек засунуть в какой-нибудь блокчейн для защиты от повторов и анонимно получить товар или услугу.
Он не может его расшифровать.
Но он может запомнить этот набор байт.
Или он потом не сможет по нему расшифровать мой бюллитень?
мокака поняла
нужно зашифровать сообщение, и послать его на подпись, а затем убрать шифр.
Не самый простой для понимания прот
- в сову играл штоле?
--Мне знакомый сервер сломал
--Хакер?
--Да нет, мудак..
«На один из форумов уже выложили базу паспортов (серия/номер) граждан, зарегистрировавшихся для участия в электронном голосовании по поправкам в Конституцию! Конверт в Cronos в свободном доступе», — написали авторы канала. Судя по опубликованному ими скриншоту, в файле также указан регион выдачи паспорта и сведения о том, был ли действителен документ в день голосования.
https://meduza.io/feature/2020/07/09/vlasti-fakticheski-vylozhili-v-otkrytyy-dostup-personalnye-dannye-vseh-internet-izbirateley
https://web.archive.org/web/20200701074010/checkvoter.gosuslugi.ru/degvoter.zip
Обратите внимание на домен.
У мну за три минуты hashcat на видюхе перебрал всё (60 MH/s).
Офтопик. Почему нелегальные базы данных чаще всего распространяются в формате файловой СУБД «Cronos Plus»?
Подтверждаю этот оффтопик. Тоже удивлён, зачем использовать проприетарное тормозящее дерьмо вместо нормального «SQLite» или вообще «CSV».
https://xss.is/threads/39453/
obnulenie.rar, ха-ха-ха.
https://github.com/occrp/cronosparser
https://xss.is/threads/39445/#post-241723
5 метров в архиве, 20 после распаковки.
1 190 720 записей.
Для скачивания нужна регистрация на форуме. Регистрация у меня заняла меньше минуты.
Стоит единица - воспользовался возможностью проголосовать
Если за/против - был бы пиздец.
Это стихийное говно произошло из-за того, что сначала всем было похуй, а потом друг оказалось, что пресса проводит эксперименты и пытается голосовать на разных участках и комбинировать дистанционное с реальным. Чтобы избежать такой возможности спровоцировать себя в СМИ, сделали базу тех, кто зарегистрировался на Эл. Голосование, чтобы на реальных участках смотреть, не голосовал ли уже человек, и имеет ли право.
Эм, а это точно база зареганных, а не вообще всех жителей?)
Голый номер паспорта никому не интересен так то. Без привязки к какой-то ещё инфе.
Разбери устройство CRT, тогда поймёшь.
Какой компилятор интересует? «MSVC»? Тогда у штатного линкера (link.exe) есть ключик /ENTRY:pituh, который назначает точкой входа метку pituh; ключик /NODEFAULTLIB игнорирует список библиотек по умолчанию. У cl.exe ключик /link передаёт аргументы линкеру.
По дефолту у «MSVC» точка входа нацелена на символ _mainCRTStartup, лежащий в crt0.obj или в crtexe.obj, который упакован в стандартную библиотеку. Можешь посмотреть, что эта функция обычно делает.
https://docs.microsoft.com/ru-ru/cpp/build/reference/entry-entry-point-symbol?view=vs-2019
https://stackoverflow.com/questions/22934206/what-is-the-difference-between-main-and-maincrtstartup
С божественной сишечкой в принципе можно работать, но без argc, argv — их придётся доставать через API (GetCommandLine), без SEH.
С крестами будет жопа. Тебе придётся писать свою CRT.
Реальный пример точки входа из CRT (после препроцессирования, чтобы влезло в 2 к символов):
Да, именно отсюда зовётся main: А что происходит перед его вызовом, ты видишь.
Кстати, код __security_init_cookie я нашёл. Там снимаются все подряд параметры системы и ксорятся друг с другом, чтобы получилась труднопредсказуемая питушня:
Я показал фрагменты из какой-то древней студии, последнюю не копал.
Где ещё такое чудо, где ещё такой прогресс?
Ты можешь на основе текстового файла сгенерить сишку, расставить в ней #line со ссылками на исходный текстовик, и прекрасно дебажить его и бряки ставить.
Если я пишу на чистом си, то я как-то ожидаю в стандартной библиотеке тоже видеть только си, не?
ABI соблюдается, сишные хедера тебе выдали. Остальное - деталь реализации, на которую всем пофиг.
Теперь будет работать быстрее.
scanf подождёт непустого ввода
лучше буквы ввести
UPD: на ванишед ответил
Там ещё есть тонкости, связанные с многопоточной и однопоточной версией, с отладочной и релизной, с гуёвой и соснольной, с уникодной и восьмибитной. Но примерно цепочка вызовов такая.
Думай, много или мало времени это может отнять.
pitux time?
Для практических задач это не имеет смысла, имхо. Будешь потом жить без деления и т.п.У MS нет четкого разделения между CRT и либой поддержки конпелятора как в том же гцц. Хотя на 64-битке с этим наверное полегче будет чем на 32-битке.
Причём конпелятор их сам юзает иногда чтобы структуры чистить. Или если цикл подходящий по смыслу увидит. Поэтому он может их позвать даже если их в коде явно нигде нет.
А список особо и не нужен. Популярные довольно быстро понадобятся, а остальные скорее всего никогда.
Это мы предупреждаем компилятор, что будем реализовывать memset, чтобы он в рекурсию не свалился?
https://docs.microsoft.com/en-us/cpp/preprocessor/function-c-cpp?view=vs-2019
А заодно вот это:
https://docs.microsoft.com/en-us/cpp/preprocessor/intrinsic?view=vs-2019
И в «Шланге» по идее можно провернуть такой же трюк. А вот у прочих компиляторов («Борманд Си», «Ватком Си», «Цифровой Марс») библиотека монолитная, так что для её кастомизации придётся попердолиться.
В гцц кстати у меня получалось даже поддержку исключений прикрутить. Она там неплохо отвязана от рантайма и прочей сишности.