LINUX.ORG.RU
решено ФорумTalks

Смеха ради: недостатки школокода

 , ,


0

1

Набрел на гитхабе, поделие юного фрилансера.

https://github.com/da411d/Crypto228/blob/master/crypto228.php

Собственно сабж. Какие у этого говнокода функции «шифрования дешифровки» строк есть явные, кричащие недостатки?

Понятное дело, что к рассмотрению не принимается тот очевидный факт, что это php и говнокод 18-20-летнего пацана :-)

Но вдруг мне когда-нить таким придется код ревью делать, а я не знаю к чему придраться :-D

★★★★★

Последнее исправление: Pinkbyte (всего исправлений: 2)

1) Хардкод

2) Поехавшее форматирование

3) Security by Obscurity

4) for вместо foreach (но в данном случае спорно).

А так пойдёт.

bodqhrohro_promo
()

Смеха ради: недостатки школокода

Прочитал как

недостатки шоколада

Очень удивился.

mandala ★★★★★
()

явные, кричащие недостатки

NIH.

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

hippi90 ★★★★★
()

secret = md5(«VIKA»).md5(«ONE»).md5(«LOVE»)

Это уже смешно.

sphericalhorse ★★★★★
()

Поправив баг
Сильне обновлення
Update crypto228.php
Update README.md
Update crypto228.php
Update crypto228.php
Update README.md

Баги выправляют, а не поправляют.
А по поводу обновлення, я с детства говорил, что суржик — мій рідний язик.

А так да, если смеха ради, то действительно смешно.

sphericalhorse ★★★★★
()
Ответ на: комментарий от hippi90

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

bodqhrohro_promo
()
Ответ на: комментарий от theNamelessOne

Непонятно только, где тут велосипед, если всё зиждится на готовых криптофункциях. Так и 100-кратный md5 в движке ЛОРа можно NIH и велосипедом обозвать.

bodqhrohro_promo
()
Ответ на: комментарий от mandala

до этого комментария не мог понять, какая связь между шоколадом и php. про цвет думал, но ТС сказал, что к этому апеллировать низя.

billic ★★
()
Ответ на: комментарий от bodqhrohro_promo

pp.ua — это укоз

pp.ua предоставляет бесплатные домены третьего уровня для частных лиц. Официальных конструкторов сайтов и хостинга не предоставляет. И с uCoz никакой связи.

Если моя информация устарела — буду рад освежить её по предоставленным ссылкам.

барабанщик — это русизм

Это слово есть в словарях СУМ-11 и СУМ-20. Его употребление не является ошибкой. Можно говорить как «барабанщик», так и «барабанник».

Pravorskyi ★★★
()

И зачем это сюда тащить? Тут и так есть этот как его там со сложным ником, солнцеликий.

fornlr ★★★★★
()

явные, кричащие недостатки?
к чему придраться

Вот этого уже достаточно

Самопальний криптографічний алгоритм

TheAnonymous ★★★★★
()

Так и что с того? Такого на Githab тысячи. И это еще не самый худший пример. Хотя конечно казалось бы, куда хуже.

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

О причинах и следствиях такого явления можно говорить и холиварить долго. Но есть факт - таких программистов - очень и очень много.

Во многом это и породило мнение о PHP как о говноязыке, хотя, на самом деле, он, ИМХО, неплох в своей нише.

ilinsky ★★★★★
()
Последнее исправление: ilinsky (всего исправлений: 1)
Ответ на: комментарий от bodqhrohro_promo

Ну ты не в курсе, что ли, что pp.ua — это укоз

Мне это незачем знать.

а барабанщик — это русизм?

Вот что ты несешь?

ggrn ★★★★★
()
Ответ на: комментарий от pacify

Программки на Delphi затерялись в дебрях прошлого 10-летия ;-)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Увидел ставку чувака на freelancehunt.com, зашел на его GitHub, посмотреть на уровень молодёжи. В принципе, все не так печально как могло быть, но как тут уже упоминали, такой подход приучает к в корне неправильным способам решения задач.

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от mogwai

Не угадал, мои знакомые давно пишут для Ынтырпрайза под NDA, хотя ссылку гляну, раз пошла такая пьянка))

Twissel ★★★★★
() автор топика
Ответ на: комментарий от DELIRIUM

Поправил, будет новый тег.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от mandala

недостатки шоколада

Ага. Я подумал про негров тема. Только из твоего коммента понял, что про школокод :)))

Puzan ★★★★★
()
Ответ на: комментарий от hippi90

Согласен на 146%.

Просто думал может я что-то пропустил, с чего можно словить лулзов, но в целом кричащих ошибок нет. Кроме одной концептуально ошибки: Использовать свои «криптографические» алгоритмы в серьёзных проектах — зло в чистом виде.

Лучше сразу вдоль.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ilinsky

Что-то он в последнее время скатился до уровне демотивашки: одни матюкливые школьники.

Twissel ★★★★★
() автор топика
Ответ на: Ъ от mogwai

Канэшна хадыл, но не видел там

У одного мого друга є програма, ось її код

Twissel ★★★★★
() автор топика

Known-plaintext attack:

https://repl.it/repls/UnfortunateOldElectricity

"""
print _crypt($secret_msg, $key)."\n";
print _crypt("known plaintext", $key)."\n";

HFx1Ybl4D8Zr9_ux
O3NPWJQQX-Rf1dCWj0DK
"""

from base64 import b64decode

ctxt1 = list(b64decode("HFx1Ybl4D8Zr9_ux", altchars="-_"))
ctxt2 = list(b64decode("O3NPWJQQX-Rf1dCWj0DK", altchars="-_"))
msg2 = list(bytes("known plaintext", encoding="ascii"))

binkey = [a ^ b for a, b in zip(ctxt2, msg2)]
msg1 = [a ^ b for a, b in zip(binkey, ctxt1)]
print(bytes(msg1))

Спасибо за упражнение :)

deadNightTiger ★★★★★
()
Последнее исправление: deadNightTiger (всего исправлений: 1)
Ответ на: комментарий от pacify

Хотя нет, специально для тебя

Осторожно MFC!

//simpwin.cpp
 
 	#include <afxwin.h>
 	#include <string.h>
 	#include "simpwin.hpp"

 	// Создание одного и только одного экземпляра
 	// приложения
 
 	CApp App;
 
 	// Реализация
 
 	BOOL CApp::InitInstance()
 	{
 
 	// Создание главного окна приложения и его
 	// отображение.
 
 	// Член CApp::m_pMainWnd - это указатель на объект
 	// главного окна.
 
 	m_pMainWnd = new CMainWin;
 	m_pMainWnd->ShowWindow(SW_RESTORE);
 	m_pMainWnd->UpdateWindow();

 	// Сигнализируем MFC об успешной инициализации
 	// приложения. 
 
 	return TRUE;
 	}
 
 	CMainWin::CMainWin()
 	{
 	// Создание окна с заголовком. Используется
 	// встроенный в MFC
 
 	// класс окна, поэтому первый параметр 0.
 	this->Create(0, "Приложение на MFC",WS_OVERLAPPEDWINDOW);
	strcpy_s(str,100," ");	}
 
 	afx_msg void CMainWin::OnPaint()
 	{
 	CPaintDC paintDC(this);
 	paintDC.TextOut(310, 220, CString("Hello,World!!!"));
 	paintDC.TextOutA(210,260,CString("Это пример динамического изменения системного меню окна."));
	paintDC.TextOutA(280,280,CString(str));
    };
	afx_msg void CMainWin::OnLButtonDown(UINT Flags, CPoint point)
	
	{
	CMenu *pSysMenu = GetSystemMenu(FALSE);
	pSysMenu->ModifyMenuA(MF_BYCOMMAND,MF_GRAYED,SC_CLOSE);
	CMainWin::ModifyStyle(WS_MAXIMIZEBOX,0);
	CMainWin::ModifyStyle(WS_MINIMIZEBOX,0);
	CMainWin::DrawMenuBar();
	strcpy_s(str,100,"Щёлкни правой кнопкой мыши!");
	CMainWin::InvalidateRect(0);
    };
	afx_msg void CMainWin::OnRButtonDown(UINT Flags, CPoint point)
	
	{CMenu *pSysMenu = GetSystemMenu(TRUE);
     CMainWin::ModifyStyle(0, WS_MAXIMIZEBOX);
	 CMainWin::ModifyStyle(0,WS_MINIMIZEBOX);
	 CMainWin::DrawMenuBar();
	 CMainWin::InvalidateRect(0);
	 strcpy_s(str,100,"Щёлкни левой кнопкой мыши!");
	 CMainWin::InvalidateRect(0);
	};
		 // Реализация карты сообщений
 	BEGIN_MESSAGE_MAP(CMainWin /*класс окна*/, CFrameWnd /*класс-предок*/)
 	ON_WM_PAINT() 
 	ON_WM_LBUTTONDOWN()
 	ON_WM_RBUTTONDOWN()
    END_MESSAGE_MAP()

05/27/2007

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от mogwai

Не, я уже слишком стар для таких развлечений, так что точно не угадал.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от deadNightTiger

Пожалуйста :-)

Рад, что не зря это сюда притащил.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от mandala

Очень удивился.

Ха-ха! Тоже некоторое время размышлял, на что намёк: на цвет, консистенцию или какие-то глубокие аллюзии. :)

baka-kun ★★★★★
()

явные, кричащие недостатки

Если говорить о коде, то:

1. копипаста

2. всё прибито гвоздями

3. нет комментариев

no-such-file ★★★★★
()
Ответ на: комментарий от hippi90

За криптографические велосипеды надо сразу бить по рукам

По рукам нужно бить тимлиду, а не студенту.

Если человек писал код сам для себя, то непонятно в чём претензия к учебному алгоритму.

no-such-file ★★★★★
()
Ответ на: комментарий от Twissel

На самом деле тут все придираются к алгоритму, что шифрование так делать не надо. Но как раз в этом смысле я ничего страшного не вижу. Человек ведь этот код разметил, наверное, как пример своего скила. И даже при таком коде, уже как минимум можно сказать, что человек знает с какой стороны подходить к git - уже плюс для студента. В общем смеяться тут не над чем, но есть что серьёзно посоветовать. Избавиться от копипасты, накинуть абстракций, прикрутить комментарии в phpdoc - и потенциальный работодатель не будет смотреть на алгоритм, он будет смотреть на культуру кода.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: Хотя нет, специально для тебя от Twissel

05/27/2007

Вечером, если будет время, закину сюда свои исходники 1994 года на Паскале и ассемблере, учился в 9-10-м классе. Исходники 6-го класса, увы, не сохранились - это был ZX-совместимый «Дельта-С» чебоксарского завода «Элара».

А ты, судя по стилю оформления, по какой-то книжке писал? Или пользовался лишь справочником? Или уже результат гуглежа?

pacify ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.