HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

Felvételt hirdet a CIA

2011.02.15. 09:51 nb

"...ez a módszer az egyik legrégibb és legismertebb. Hacsak a kulcs nem nagyon hosszú, a CIA vagy az NSA várhatóan egy napon belül megfejti file-unkat."

(Kernighan Brian W. és Plauger P. J. A programozás magasiskolája. Műszaki. 1982., a példa Java implementációja itt van: www.tankonyvtar.hu/informatika/javat-tanitok-1-1-1-080904-1)

A második labor "izometrikus-szöszmötölős" példája a Page Rank algoritmus megvalósítása volt, íme a harmadiké: törjünk fel saját C progival egy exoros titkos szöveget!

Aki nem ismeri, a fenti könyvben a részletes leírás, vagy itt a Java változathoz egy kis Móricka rajzot is készítettem anno: http://www.tankonyvtar.hu/informatika/javat-tanitok-1-1-1-080904-1 kb. a lap közepén a "1.12. példa - Titkosítás kizáró vaggyal" pont alatt.

S íme a C implementáció:

 

Ahogyan használd:

nbatfai@hallg:~/c$ more tiszta.szoveg
Nem tudok kimerítő leírást adni arról, hogy hogyan tudsz megtanulni
programozni -- nagyon összetett tudásról van szó. Egyet azonban
elárulhatok: a könyvek és tanfolyamok nem érnek túl sokat (sok,
valószínűleg a legtöbb hacker autodidakta). Aminek van értelme:
(a) kódot olvasni és kódot írni.

Hogyan lesz az emberből Hacker
http://esr.fsf.hu/hacker-howto.html

Kódolásnbatfai@hallg:~/c$ gcc e.c -o e -std=c99
nbatfai@hallg:~/c$ ./e kercerece <tiszta.szoveg >titkos.szoveg
nbatfai@hallg:~/c$ more titkos.szoveg
KRIKSZKRAKSZ bináris szemét
Dekódolás:

nbatfai@hallg:~/c$ ./e kercerece <titkos.szoveg
Nem tudok kimerítő leírást adni arról, hogy hogyan tudsz megtanulni
programozni -- nagyon összetett tudásról van szó. Egyet azonban
elárulhatok: a könyvek és tanfolyamok nem érnek túl sokat (sok,
valószínűleg a legtöbb hacker autodidakta). Aminek van értelme:
(a) kódot olvasni és kódot írni.

Hogyan lesz az emberből Hacker
http://esr.fsf.hu/hacker-howto.html

3 kisbajnokság

Ennyit kap, aki egy nap alatt (természetesen a saját maga írta C progijával) feltöri a következő titkos szöveget: www.inf.unideb.hu/~nbatfai/titkos.szoveg Határidő: feb. 18. 20 óra 00, perc, egy kommentben kérem a titkos kulcsot és a tiszta szöveget. Sokat segítek: 8 betű a titkos kulcs és minden betű számjegy (kvázi dupla PIN kód :)

1 kisbajnokság

Remek: gyorsan elvitték a hármat (lásd kommentek), jön itt további help, aki ennek alapján elsőre megtöri a következőt, annak is akad itt még egy kisbajnokság (természetesen, aki a hármasat törte, ezt már ne törje.)

Tekerj a tovább linkre a helpért:

Megint egyetlen állomány "darabjait" írva, s mivel most alakítjuk ki a gépelési-hibázási stílusunkat, szokásainkat, még mindig képben... a tiszta_lehet fgv. megtippeli, hogy a dekódolt szöveg a tiszta, vagy arra

 

az exor elvégzi majd a módosítást, ha beírod a logikai műveletet és a kulcson való lépegetést 

a main() beolvassa a titkos szöveget, nem használ két egyforma tárolót a kódolt és a dekódolt szövegnek, ezért idővel nem takarékos módon :) kétszer alkalmazza ugyanazt az éppen kipróbált titkos kulcsot: 

néhány ciklussal legyártjuk az összes lehetséges kulcsot

Ja, a törendő szöveg: www.inf.unideb.hu/~nbatfai/titkos.szoveg.2

Aki sirabizálta a tiszta_lehet által ontott potenciális töréseket, az tudja igazán értékelni a következő kis továbbfejlesztést:

 

 

 

 

 

 

 

 

 

 

 

 

 

amit a progpater.blog.hu/2011/02/14/kisbajnoksagok egyik 1 trófeás vadászatában is kamatoztathatsz :)

8 komment

Címkék: cia nsa kódtörés exor tiszta szöveg

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr162662328

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

xilard 2011.02.17. 22:44:26

a segitség tényleg sok volt, brute force-al pikkpakk megvan.

kulcs: 70034955

tiszta szöveg:

AZ ÚR
Ne kérdd
Tovább a titkot, mit jótékonyan
Takart el istenkéz vágyó szemedtől.
Ha látnád, a földön múlékonyan
Pihen csak lelked, s túl örök idő vár:
Erény nem volna itt szenvedni többé.
Ha látnád, a por lelkedet felissza:
Mi sarkantyúzna, nagy eszmék miatt,
Hogy a muló perc élvéről lemondj?

MADÁCH IMRE
AZ EMBER TRAGÉDIÁJA
mek.niif.hu/00800/00849/html/01.htm#15

nb · http://fersml.blog.hu 2011.02.18. 10:00:07

@xilard: remek! Légyszi, még dobd ide be a C forrást is és jöhet priviben név/labor, hogy könyvelhessem.

xilard 2011.02.18. 11:50:49

#include <stdio.h>
#include <string.h>

#define LOG_PERIOD 1000000

int main(int argc, char **argv)
{
int key;
char sKey[9];
char buffer[1024];
char newBuffer[1024];

int len = read(0, buffer, sizeof(buffer));
int threshold = (len * 71) / 100;

int logCnt = LOG_PERIOD - 1;

// 8 jegyu szam a kulcs: 00000000 - 99999999
for(key = 0; key < 100000000; key++)
{
int i;
int sum = 0;

sprintf(sKey, "%08d", key);

for(i = 0; i < len; i++)
{
char b = buffer[i] ^ sKey[i & 7];

newBuffer[i] = b;

// mivel a megoldas egy szoveg, ezert az ABC betuit + space-eket megszamoljuk
if (((b >= 'A') && (b <= 'Z')) || ((b >= 'a') && (b <= 'z')) || (b == ' '))
{
sum++;
}
}

// ha eleg nagy a szovegkarakterek szamanak aranya, kiiratunk egy megoldast
if (sum > threshold)
{
write(1, "Key: ", 5);
write(1, sKey, strlen(sKey));
write(1, "\n", 1);
write(1, newBuffer, len);
write(1, "\n\n", 2);
}

// idokent kiiratjuk az aktualis kulcsot, hogy tudjuk hol jarunk eppen a keresesben
if (++logCnt == LOG_PERIOD)
{
logCnt = 0;
printf("Act. key: %s\n", sKey);
}
}
}

master994 2011.02.21. 18:09:38

Csak hogy ne maradjon üresen:)
Órai algoritmus kb 50 perc + 20 perc keresés
Xilard 10 perc körül szöveg kereséssel együtt:) (gratula a készítőnek)

Kulcs: 79600545

Sem egy, sem más egér nincs kitűzve
Érezni macska-, vércse-körmöket,
S mely óvatos, ki is kerülheti,
Mint agg múlván ki házias körében.
De renditetlen törvény őrködik,
Hogy annyi jusson mégis ellenének,
Amennyi kell, hogy ezredek után

MADÁCH IMRE
AZ EMBER TRAGÉDIÁJA
mek.niif.hu/00900/00914/html/madach15.htm

nb · http://fersml.blog.hu 2011.02.21. 18:17:26

@master994: jöhet priviben a név/csoport, hogy könyveljem.

Az órait duplájára tudod gyorsítani, ha beveszel egy + buffert, mert most ugye dupla futási idővel megy az 1 buffer, 2 exor() hívás miatt.

A keresés kapcsán kiírtam egy újabb kisbajnokságot, ami a "keresési idő" minimalizálásáról szól.

nb · http://fersml.blog.hu 2011.02.22. 15:54:04

@master994: lekönyveltük a laboron Neked?

master994 2011.02.22. 20:21:21

Elméletben küldtem pm-t...lehetséges hogy nem érkezett meg ezen esetben újraküldöm.

master994 2011.02.22. 20:31:06

Laboron nem én vittem a kisbajnokságot:)
süti beállítások módosítása