Jump to content

Konkurss 7


0xDEAD BEEF
 Share

Recommended Posts

  • Replies 80
  • Created
  • Last Reply

Top Posters In This Topic

  • kazarma

    5

  • binary

    12

  • bubu

    12

  • 0xDEAD BEEF

    11

Top Posters In This Topic

Posted Images

0xDEAD BEEF

Tā. Pagarinu kokursa beigu termiņu par 1nu dienu (lai jums nav garlaicīgi brīvdienās).

Tālāk - atbildot uz ielejas jautājumu par jautājumu - kā jau citi ir pamanījuši, un tas tiēšām ir acīmredzami, skatoties uz to bildi, tad bildē pixeļi bez pamata attēla ACĪMREDZAMI satur papildus informāciju (tur taču ir acīmredzams troksnis pa virsu). Attiecīgi - pirmā uzdevuma daļa ir iegūt šo extra informāciju, ar ko jūs jau esat tikuši galā. Nu un pēc tam.. es domāju, katram programmētājam ir jāzin šie pamati.

Beefs

P.S. bubu - droši ieliec savu risinājumu šovakar pēc 24:00 (pēc LV laika).

Link to comment
Share on other sites

(labots)

Otro daļu varēji jau priekšā neteikt, tā ir acīmredzama pēc pirmās daļas rezultāta izlasīšanas.

Labots - bubu
Link to comment
Share on other sites

0xDEAD BEEF

NU man jau arī tā liekas, bet te vismaz 4 ir tik tālu tikuši, bet tālāk netiek.

Beefs

Link to comment
Share on other sites

kirils

tas patiešām ir acīmredzami. acīmredzams nav algoritms. pēc bildes iedomājos blowfish, bet tas jau tāds vienvirziena pasākums.

Link to comment
Share on other sites

Uģis Lācis
[..]bet domāt ko kāds atsperpauris-sviestagalva domājis iedomāties

 

Nu, nu, nevajag tiešām mētāt tādu nepatiku rinķī apkārt.

 

Bet viens ir skaidrs, konkursi ir tiešām tendēti hakeriem/[tīriem ]programmētājiem. Pārējiem (kā man) tas ir jāsaprot, jāatsveicinās un jāiet cita taciņa. :D Jo šajā gadījumā, kad neredz izmantojamo metodi un algoritmu, tad laika izmaksas, izveidojot softu, sāk kļūt pārāk lielas.

 

Bet tā nu tas ir.

Link to comment
Share on other sites

binary
(labots)

http://hydra.02.lv/ (šito kirils taisa vai?)

Uzdevumus varēja jebkurš iesūtīt, es arī pirms 7 gadiem pacentos - http://hydra.02.lv/level/54134

 

edit: par to, vai kirils vai kāds cits - tur vietējā forumā figurē kaut kāds "wudu", kas to visu administrēja.

Labots - binary
Link to comment
Share on other sites

(labots)

Atrisinājums:

 

 

Tātad - kā es risināju.

Paņēmu ieseivoju bildi. Atvēru bildi IrfanView'ā.

Apskatījos RGB kanālus individuāli (Image->Show Channel->...)

Kā tie izskatās?

Red:

red.png

 

Green:

green.png

 

Blue:

blue.png

 

Acrīmredzami, ka visa sāls ir paslēpta Green kanālā. Ok skatīsimies uz to. Piezūmojot pikseļus var redzēt, ka tie ir gaiši un tumši. Intuīcija saka, ka tie ir biti. Krāsa pikselī tiek kodēta no 0 līdz 255. Pieņemsim, ka ja pikselis <128 (vidus), tad tā vērtība ir 0, bet ja tas ir >=128, tad tā vērtība ir 1.

 

Ok, ieseivojam zaļā kanāla bildi ar IrfanView raw formātā (File->Save As...->green.raw). Diemžēl irfanviews seivo tikai rgb bildes tapēc zaļais kanāls ir tagad duplicēts pa trīs baitiem. Bet nekas.

Rakstam pitona skriptu, kas izvilks no katra baitu trīnīša vērtību 0 vai 1 (vienu bitu). Un šos bitus pa 8 apvienos un rakstīs outputā pa baitiem. Nezinu kāpēc 0xDEAD BEEF izvēlējās bitus rakstīt big-endian'ā, bet nu ok (sākumā es raksīju little-endianā un brīnījos kāpēc nekas nesanāk :)

 

Reku skripts:

data = map(ord, open("green.raw","rb").read())

x = 0
i = 0
r = ""

for idx in xrange(len(data)/3):
 x += (data[3*idx]>>7)<<(7-i)
 i += 1
 if i==8:
r += chr(x)
i = 0
x = 0

open("out.bin", "wb").write(r)

 

Apskatamies out.bin failu FAR'ā:

far-1.png

 

Ko mēs redzam? Kautkādu tekstu "Mekle hintu attela. IV: cffee468b7d388a0850008951cc6b249, Izmers: 14464 ->" un tālāk dažādus baitus.

Ko mums intuīcija saka par simboliem "IV"? Pareizi - par CBC modes Initialization Vector.

Ir tikai divi jautājumi - kuru kriptofunkciju ņemt, un kāda ir atslēga?

Tā kā IV ir 16 baitu garš, tad runa ir noteikti par kautko, kas operē ar 16 baitu blokiem.

Man pirmā doma krita uz AES, jo 0xDEAD BEEF deva hintu "Skatieties uz bildi!" un out.bin failā rakstīts "Meklē hintu attēlā".

Un tā kābildē var redzēt tekstu SIAwhiteCryption - kas arī ir 16 baitu garš, kas visdrīzāk ir atslēga.

Tā kā AES-128 gan IV gan atslēga ir 16 baiti ar tiem es ilgi mēģinaju tā un šitā (big un little endiannessā, bet nekas ilgi nesanāca.Tad izrādījās ka bildē ir vēl viens hints un uz bildi ir jāskatās uzmanīgāk - bildē ir ZIVIS!! Un ir tāds kriptogrāfisks algoritms BlowFISH!! Diemžēl tas operē ar 8 baitu blokiem, tāpēc tam īsti nevar IV pielieto....

Pameklēju vēl un izrādās ir Twofish šifrēšanas algorithms.. Hm.. ko tu neteiksi... two un fish :)

Ok, meklējam Twofish realizācij (jo pēc specifikācijas ir slinkums rakstīt visu kriptofunkciju).

Pitonā uz ātro neatradu kodu, bet atradu C kodu - http://embeddedsw.ne...me.html#TWOFISH (jāvelk libObfuscateSrc/Derived_crypt_code/Twofish.* un kods ir Twofish.h/cpp failos).

 

Tagad jāizdomā ko tad īsti šifrēt vaļā un cik daudz. Pieņemot ka teksts "Izmers: 14464 ->" saka, ka izmērs ir 14464 baiti un jāsāk šifrēt aiz -> bultas, tad uzrakstam šādu C kodu kurš atšifrēs datus aiz bultas izmantojot Twofish algoritmu CBC modē:

#include <stdio.h>
#include "Twofish.h"

int main()
{
  const char key[] = "SIAwhiteCryption";

  TWOFISH_DATA d;
  Twofish_set_key(&d, (DWORD*)key, 128);

  char iv[] = {0xcf, 0xfe, 0xe4, 0x68, 0xb7, 0xd3, 0x88, 0xa0, 0x85, 0x00, 0x08, 0x95, 0x1c, 0xc6, 0xb2, 0x49};

  FILE* inf = fopen("out.bin", "rb");
  fseek(inf, 74, SEEK_SET);

  FILE* outf = fopen("atbilde.bin", "wb");

  int len = 14464;
  while (len > 16)
  {
     char out[16];

     char in[16];
     fread(in, 16, 1, inf);

     Twofish_decrypt(&d, (DWORD*)in, (DWORD*)out);

     for (int i=0; i<16; i++) fprintf(outf, "%c", out[i] ^ iv[i]);
     for (int i=0; i<16; i++) iv[i]=in[i];
     len -= 16;
  }

  fclose(outf);
  fclose(inf);
}

 

Pēc nelielas Twofish.cpp/h source pielabošanas, lai tas kompilētos ar GCC varam to palaist un iegūt atbilde.bin failu.

Te viss kods ar izpildāmo exe failu: http://dl.dropbox.co...7/challenge7.7z

 

Ko darīt ar atbilde.bin failu? Protams - apskatamies FAR'ā :)

far-2.png

 

Par ko liecina BM simboli faila sākumā? Pareizi - par BMP failu.

Reneimojam paplašinājumu uz atbilde.bmp un lasam un priecājamies, ko 0xDEAD BEEF mums ir gribējis pateikt: http://dl.dropbox.co.../k7/atbilde.bmp

 

Labots - bubu
  • Patīk 1
Link to comment
Share on other sites

Man patīk kā bubu skaidro risinājumu: kā priekš maziem bērniem.

Pietiktu arī tikai ar atsauci uz twofish.

Link to comment
Share on other sites

Sanchus

..nošauties. iesācējiem žēl būs izčakarētā laika.

Link to comment
Share on other sites

binary

Nezinu kāpēc 0xDEAD BEEF izvēlējās bitus rakstīt big-endian'ā, bet nu ok (sākumā es raksīju little-endianā un brīnījos kāpēc nekas nesanāk :)

Nu kā - lai "sākumā nekas nesanāk" :D

Link to comment
Share on other sites

0xDEAD BEEF

Cmon ko nozime little endiana? Es rakstiju bitus ta, ka tos raksta uz papira - no kreisas un labo, no vertigaka bita uz mazak vertigo. Manuprat - makes sense. :)

Piemeram, A = 0x41 - 01000001

Beefs

Link to comment
Share on other sites

kirils

es izrādās biju ticis gandrīz līdz beigām. to jau nevar zināt pirms patiešām tiek līdz beigām. :) no atbildes mani šķīra 6 simboli. "two" un "cbc". moš vajadzēja taisīt pilno pārlasi :D

 

<?
$td = mcrypt_module_open('twofish', '', 'cbc', '');
mcrypt_generic_init($td,'SIAwhiteCryption', "\xcf\xfe\xe4\x68\xb7\xd3\x88\xa0\x85\x00\x08\x95\x1c\xc6\xb2\x49");
file_put_contents("bilde3.ans",mdecrypt_generic($td, file_get_contents("bilde2.in")));
?>

Link to comment
Share on other sites

kazarma

Ok, laikam arī būs jāuzrīko kāds "konkurss".

 

Piemēram ko es "Kazarma" darīju pirms 3493 dienām. Hints: Skatījos ar kaut ko caur logu, bet ko es tur ieraudzīju?.

Atbilde būs aptuveni = skatījos caur teleskopu uz universitātes mikraskopa lēcu tur vēroju amēbas un citrusa ektrakta mijiedarbību.....

 

Nu skaidrs, ka konkurss nav tēmēts visiem, bet atkārtošos velreiz: kāda jēga to darīt tiem, kas ar to nodarbojas? Vai tiem kuri, ja grib to var atrisināt... Izrādīties tautai? Nu nez ,labāk patika pirmie, kur tiešām cilvēks no malas var atrisināt mazliet padomājot.

 

Tā jau nav nekas pretīm, bet reāli konkurs paliek aizvien "šaurākai" publikai, kas atņem visu prieku.

Link to comment
Share on other sites

binary

kazarma, a pa manam "cik ir 2 + 2 * 2 kvadrātā" tipa uzdevumi bija interesanti pirms 7-10 gadiem.

Link to comment
Share on other sites

0xDEAD BEEF

Nu iedod man piemeru tadam uzdevumam, kazarma. Ta, lai nebutu tik svarigi, vai tu izlasi konkursa uzdevumu 12:00 vai 12:30. Proti, uzdevumam butu jabut tadam, ko visi nesaprot, ka risinat, bet daudzi saprot, ka risinat neefektivi, bet tikai dazi zin, ka risinat atri, bet tikai dazi mak to ari atri izdarit. :)

Nu un, protams, ta, lai uzdevuma atibldi nevaretu atrast google un puse to vienkarsi nezinatu no galvas.

Seit interesants uzdevums -

Cietuma 50 cietumnieki. Sargs (psihopats) viniem uzstada ultimatu - visi cietumnieki tiks nolikti rinda, ta, ka pedejais redz visus, bet pirmais nevienu (attiecigi tu redzi tikai sev prieksa esosos). Talak visiem cietumniekiem uzliek galva sarkanu vai baltu (random) cepuri, kuras krasu vins pats neredz. Talak, sakot ar pedejo prasa pateikt, kada krasa ir cepure. Visi parejie dzird, kas notiek aizmugure (sarkans/balts/shaviens/nav shaviens). Cietumnieks drikst teikt tikai balsts/sarkans un nedrikst neka savadak nodot zinu citiem (piemeram kliegt sarkans vai cukstet sarkans). Cietumniekiem ir javienojas par strategiju, pirms sis speles.

Kada ir labaka (viss vairak survivori) strategija.

 

Kaut ari sis uzdevums ir akigs, tomer, diemzel, atbildi parak daudzi zin no galvas. Bet es pielauju, ka tu nezini, ta ka parekini. Sitas ir interesants!

Beefs

Link to comment
Share on other sites

Ja saprotu pareizi, konkursi ir beigušies.

Jautājums priekš beef: kādi secinājumi, vai bij no tā kāds labums?

Varbūt boot.lv nav īstā vieta izdevušos programmētāju meklēšanai.

Link to comment
Share on other sites

0xDEAD BEEF
(labots)

Nav tik slikti! :)

Es šo konkursu arī pareklamēju citur (pāris jauni boot lietotāji uz mana rēķina).

Protams, ka tieši tāds čalis, kurš mums viss labāk patiktu LV nemaz neeksistē.

Beefs

Labots - 0xDEAD BEEF
Link to comment
Share on other sites

kazarma

@BEEF jap šito nezinu, bet arī neizklāstīji korekti rodas daži jautājumi. Talak, sakot ar pedejo prasa pateikt, kada krasa ir cepure. Kam pašam? Ja tā ir un vienmēr atbilde ir jādod pašam par sevi sarkans/balts vārdu sakot vari pateikt vienu vārdu tad katram idzīvot iespēja 50%. Ja tu vari pateikt arī kādu tu redzi nākamajam cepuri tad nākamais var atbildēt tikkai pa sevi tad loģiski sākot no pēdējā mirst dzīvo mirst dzīvo. Bet ja jau tu man uzdod šādu jautājumu tad tik vienkārši nebūs. Tātad nosaucot priekšā esošā krāsu tu jau garantē, ka puse dzīvos, kā arī tev ir iespēja pašam, ka šāda krasa būs tātad vēl 50 uz 50. Nu atbilde laikam atbilde 75%. Bet varbūt ne tā sapratu. Jo, ja cietumnieks var pateikt ko redz priekšā un attiecīgi pēc tam no iepriekš dzirdēta atbildēt pats par sevi tad idzīvošanas iespēja palielinās vēl vairāk. Kā arī es pakļaujos taviem nosacījumiem, ja ir iespēja grozīties atliek visiem pagriezties pa 180 grādiem un mirušo vispār nebūs tā kā īsti nav skaidrs ko var ko nevar un kā viss notiek.

Link to comment
Share on other sites

0xDEAD BEEF
(labots)

Kazarma, Tu saprati pareizi uzdevumu, bet - ja katram bus jasaka prieksa esosa krasa, tad - ka gan vins pateiks savu krasu? Piemeram - sarkans melns sarkans. Katrs teiks pretejo un mirs visi (iznemot pirmo, kurs vares teikt pedejo dzirdeto). Protams - katrs var teikt tikai vienreiz (pats par sevi) un nekada grozisanas. Strategija, ka katrs otrais sauc prieksa stavosa krasu, bet katrs ne-otrais sauc ieprieks dzirdeto krasu, garante 50% izdzivosanu. Bet - Megini vel - si uzdevuma pareiza atbilde ir tada, ka izdzivo vismaz 49 no 50.

Beefs

Labots - 0xDEAD BEEF
Link to comment
Share on other sites

kazarma
(labots)

Tad ir tikkai viens variants, tu esi cipargalva tatad pienemu, ka runa iet par 0 un 1 ta ka 1+1=0 tad pienemu vienojas par krasu = attiecigi sarkana=1 balta=0 pedejais skatas kas prieksa saskaita visu un saka kas sanacis 0 vai 1, parejie jau pashi izkaukule, kas katram sanak pec ta pasha principa pasham pedejam protams izdzivoshana 50/50.

 

Nu ir interesants uzdevums :D

Labots - kazarma
Link to comment
Share on other sites

Uģis Lācis
[..]Protams, ka tieši tāds čalis, kurš mums viss labāk patiktu LV nemaz neeksistē.[..]

 

Nu tad tikai divi variatni:

a) Uztaisīt tādu čali, piedalīties apmācības procesā;

b) Importēt tādu čali par attiecīgām naudām.

Link to comment
Share on other sites

(labots)

Cmon ko nozime little endiana? Es rakstiju bitus ta, ka tos raksta uz papira - no kreisas un labo, no vertigaka bita uz mazak vertigo. Manuprat - makes sense. :)

Piemeram, A = 0x41 - 01000001

Beefs

Manuprāt nē - nemeiks sense.

Uz papīra tu skaitļus raksti no kreisās uz labo, jā. Bet kad tos glabā atmiņā (uz populārākās desktopa arhitektūras) tu visu griez riņķī un raksti no otra gala.

Arī kods tad sanāk vienkāršāks.

Nevis:

x += (data[3*idx]>>7)<<(7-i)

bet

x += (data[3*idx]>>7)<<i

 

Protams, te nav "pareizās" kārtības - viss ir tajā kas tev patīk labāk - big endianness vai little endianness.

 

 

kiril, shorttags are evil!

 

php is īsvīl - http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

:)

Labots - bubu
Link to comment
Share on other sites

kirils

es redzu, ka php aizvietos bashu attiecīgajos lietojumos. un man ļoti patīk bash.

Link to comment
Share on other sites

binary

bubu, nevajag jau pārspīlēt un ieslīgt galējībās ;) Citādi ātri vien nonāksim pie secinājuma "we are evil, we must free this world from ourselves"

Link to comment
Share on other sites

Es neieslīgstu galējībās. Par vairuma tekstu raksītu tajā linkā es pilnībā piekrītu no A līdz Z. Tur viss ir ar ļoti loģiskiem pamatojumiem.

Link to comment
Share on other sites

binary

Nu man palasot drusku, izskatās pēc slima murga suņiem, kas turklāt īsti tajā neorientējas. Piemēram, par fopen():

If allow_url_fopen is disabled in php.ini, this still won’t work. (How? No idea.)

It kā raksts mēnesi vecs, bet nu c'mon, dokumentācijā skaidri rakstīts, kā nofeilos. Tālāk viņš tur lamājas par to, ka "nekad jau nevar zināt, kur errors izdrukāsies" - muļķības, kur norādīs, tur arī drukās, un developerim IR jāzina, kādus settingus viņš izmanto.

 

Protams, ir tai valodā virkne stulbību, bet kurā gan tādu nav? Bet nu tai tekstā skaidri redzams, ka cilvēks, kurš raksta "languages are tools; they're supposed to work with me", neprot rīkoties ar konkrēto tooli un nodirš visu, kas viņam tādu vai citādu iemeslu dēļ nepatīk (bet kas tai pat laikā ir ļoti noderīgas fīčas, ja prot tās pielietot). TIk pat labi viņš var mēģināt ar urbi iedzīt naglu un teikt, ka "hey, this drill does not work with me!!1one".

 

Tur viss ir ar ļoti loģiskiem pamatojumiem.

IMHO tur ļoti daudzās vietās ir nevis "ļoti loģiski pamatojumi", bet činkstēšana no sērijas "es neprotu šito lietot tā, kā tas ir paredzēts, jo man, redz, gribētos, lai tas strādā citādāk".

Link to comment
Share on other sites

Es nesaku, ka piekrītu 100% tam, kas tur rakstīts. Bet gan "vairumam".

Un neprast rīkoties ar tūli ir viena lieta. Cita lieta, ka tūļa dizains ir līks no sākta gala (ja tāds vispār ir bijis). Neviens taču netaisa āmuru, kuram kātrs ir ar naglām pilns (ar asajiem galiem uz āru). Un kad kāds sūdzas par tādu āmuru (zini sāp roka, kad tādu āmuru tur rokā), tad viņam ko teikt - ka nevaino tūli jo nemāki to lietot?

Link to comment
Share on other sites

binary

[sarcasm] A ko, tādas naglas ļautu vieglāk noturēt āmuru :D [/sarcasm]

Nu nezinu par to vairumu. Pārāk jau nu pārspīlēts raksts.

Link to comment
Share on other sites

japets

Ja jau visi offtopiko :)

Izlasīju rakstu un arī piekrītu lielākajai daļai, tikai atsevišķi momenti šķita subjektīvas personīgas preferences.

Paldies bubu, būs ar ko pēhāpistus troļļot :)

Link to comment
Share on other sites

gatisl
(labots)

Jā, šī raksta dēļ, visa pasaule jūk prātā, tajā skaitā arī latviešu koderi: http://php.lv/f/topi...si-to-lietojam/

 

Sāk jau besīt katrs komentārs, kurā kāds izsaka savu viedokli par to cik lielā mērā piekrīt vai nepiekrīt php veltītajai kritikai.

Labots - gatisl
Link to comment
Share on other sites

0xDEAD BEEF

Nu, es personīgi arī esmu php hater klubiņā, bet tikai tādēļ, ka uzsaktu asp .net par tikrgus līderi biznesa aplikāciju izstrādei. + man ļoti nepatīk, ka cilvēki sāk mācīties programmēt uz php un iemācās galīgi nepareizus programmēšanas pamatprincipus. Cik nav redzēti php gabali, kuros sql pieprasījumi tiek veidoti php kodā, kāmēr biznesa orientētā vidē UI (php) drīkstētu izsaukt tikai SQL prodecedūru datu iegūšanai.

Beefs

Link to comment
Share on other sites

binary

0xDEAD BEEF, MySQL (phpistu iecienītā DBMS) ilgu laiku nesupportoja storētās procedūras, tā ka nebija daudz variantu. Arī tagad (nu vismaz pagājušgad) MySQL IMHO nebija derīgs nekam vairāk par insert/select/update/delete, ja vien negribējās daily PITA ar DB.

Link to comment
Share on other sites

  • 1 month later...

kx, vari labāk? Tad pierādi to!

Kā saka, gudri d*rst nav malku cirst.

Link to comment
Share on other sites

  • 11 months later...

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share


×
×
  • Izveidot jaunu...