algoritmi.1nbatocanin,
Zna li neko tačan algoritam po kome se obrađuju tekući računi u
bankama? Kada se računa datum realizacije čeka, kako se i kada računa
kamata i te stvari.
algoritmi.2nboskovic,
*> Zna li neko tačan algoritam po kome se obrađuju tekući
*> računi u
Koliko se meni čini tu nema nikakve zakonitosti :) već to
rade kad im pristignu čekovi i kad stignu da ih ubace u
terminale.
(c) klap
nikola
algoritmi.3dejanr,
>> Koliko se meni čini tu nema nikakve zakonitosti :) već to
>> rade kad im pristignu čekovi i kad stignu da ih ubace u
>> terminale.
Mislim da zakonitosti ima, ali ima i grešaka. Smatra se da je
ček naplaćen onoga dana kada je STIGAO u banku, jer je tada
banka (kao) dala pare. Dakle, nije bitno što se to proknjiži
dan-dva (tri, četiri... ;) kasnije, bitan je datum dolaska čeka.
algoritmi.4dsoskic,
> Smatra se da je ček naplaćen onoga dana kada je STIGAO u banku,
> jer je tada banka (kao) dala pare. Dakle, nije bitno što se to
> proknjiži dan-dva (tri, četiri... ;) kasnije, bitan je datum
> dolaska čeka.
Da li to važi za sve banke? "Valuta datum" je datum kad je
stigao ček u banku ili negde drugde ili onaj što piše na čeku.
Ako neko zna ovo 100% tačno da mi odgovori, može i u drugu temu,
na pr. Extra (biznis).
p.s. radi se o tužbi koju je pokrenulo jedno fizičko lice protiv
banke...
algoritmi.5dejanr,
>> Da li to važi za sve banke? "Valuta datum" je datum kad je
>> stigao ček u banku ili negde drugde ili onaj što piše na čeku.
Da, to je datum kada je stigao u banku, što je jednako datumu koji
piše na čeku samo ako banka ima on-line obradu podataka i ako u ekspozituri
unovčiš ček. "Beobanka" ima on-line obradu, i jedna je od retkih.
U svim drugim situacijama datum stizanja čeka je neki dan posle datuma
koji piše na njemu.
Nekada (pre "neprijatelja" Ante Markovića) se računalo prema datumu obrade
čeka, i onda je za vreme one velike inflacije krajem 1989 (onda smo mislili
da je velika, sad vidimo da je mala-malecka ;>) bilo silnog nošenja para
iz jedne banke u drugu i pokrivanja minusa. Posle su da bi to sprečili
uveli pomenuti mehanizam.
Ne znam kojim je to zakonom regulisano itd, ali znam da se tako radi u
većim bankama, u Beobanci sigurno.
algoritmi.6nbatocanin,
> Koliko se meni čini tu nema nikakve zakonitosti :) već to
> rade kad im pristignu čekovi i kad stignu da ih ubace u
> terminale.
Meni više ljudi rekoše za Beobanku da je datum skidanja čeka sa
računa datum na čeku, a ne datum realizacije, što je čista pljačka po
meni ;((
algoritmi.7nboskovic,
*> Meni više ljudi rekoše za Beobanku da je datum skidanja
*> čeka sa računa datum na čeku, a ne datum realizacije, što
*> je čista pljačka po meni ;((
Koliko mi se čini, na izvodima koji se dobijaju od banke
piše datum obrade za svaki ček koji je na izvodu. S obzirom
da imam tekući, nisam primetio da se datum obrade poklapa
sa datumom izdavanja čeka, sem u slučaju kad sam uspevao da
dignem keš u samoj beobanci, kada je ček odma obrađen.
(c) klap
nikola
algoritmi.8snemcev,
>> Meni više ljudi rekoše za Beobanku da je datum skidanja čeka sa
>> računa datum na čeku, a ne datum realizacije, što je čista pljačka po
>> meni ;((
Ovo važi za sve banke. Tako ti retroaktivno mogu obračunati kamatu, ili
je pak stornirati ako se pokaže da neka uplata nije bila proknjižena.
Onaj datum obrade nema veze sa životom. To mu dođe čisto informativno.
Verovatno su u pitanju stari obrasci, pa zbog vertikalne
kompatibilnosti...
algoritmi.9spantic,
> Meni više ljudi rekoše za Beobanku da je datum skidanja
> čeka sa računa datum na čeku, a ne datum realizacije, što
> je čista pljačka po meni ;((
To valjda važi za novac dignut u banci? A ne za one realizovane u
trgovinama?
algoritmi.10dejanr,
>> Koliko mi se čini, na izvodima koji se dobijaju od banke
>> piše datum obrade za svaki ček koji je na izvodu. S obzirom
>> da imam tekući, nisam primetio da se datum obrade poklapa
>> sa datumom izdavanja čeka, sem u slučaju kad sam uspevao da
>> dignem keš u samoj beobanci, kada je ček odma obrađen.
I kod mene je isti slučaj. Vodi se neki "međudatum". To je dan
kada je banka stvarno dala pare tj. kad joj je ček stigao.
algoritmi.11dsoskic,
> imam tekući, nisam primetio da se datum obrade poklapa
> sa datumom izdavanja čeka, sem u slučaju kad sam uspevao da
Ne pamtim kad sam napisao datum, a sam realizovan ček nisam
nikad ni video da bih mogao da uporedim.
U svakom slučaju kad sam u kafani pitao kad su mi pustili ček
oni su rekli za dva dana, na tekućem ga nije bilo oko 15-ak
dana, kao šatro bio sam u plusu, međutim posle, u izvodu stvarno
videh da su u pitanju samo dva dana tj. iz plusa od 15-ak dana
vrate u pređašnje stanje pre realizacije čeka, pa ako nije bilo
dovoljno para na tekućem oni te uteraju u minus i vode te u
minusu sve da prve uplate i tako za svaki ček koji je bez
pokrića (u tom trenutku) izdat. Naravski posle nema ni positivne
kamate koju si dobijao u istom periodu, što i nije bitno.
algoritmi.12broker,
> Meni više ljudi rekoše za Beobanku da je datum skidanja
> čeka sa računa datum na čeku, a ne datum realizacije, što
> je čista pljačka po meni ;((
Isto rade i u JIK banci.
algoritmi.13nbatocanin,
>> Meni više ljudi rekoše za Beobanku da je datum skidanja
>> čeka sa računa datum na čeku, a ne datum realizacije, što
>> je čista pljačka po meni ;((
>
> To valjda važi za novac dignut u banci? A ne za one
> realizovane u trgovinama?
Jok :( Pitao ja u Beobanci: 3 nezavisna uzorka službenica su mi rekla
da se *uvek* računa datum na čeku.
algoritmi.14dejanr,
>> Jok :( Pitao ja u Beobanci: 3 nezavisna uzorka službenica su mi rekla
>> da se *uvek* računa datum na čeku.
Vrlo čudno. Meni se N (a N je solidno veliki broj ;) puta desilo da napišem
ček(ove) danas (za kupovinu u nekoj radnji) a da onda pare uplatim ne sutra,
nego kroz 2-3 dana. I nikad mi nije knjiženo da sam u minusu (kuc, kuc...).
Takođe znam neke koji su u dane žiralnog otkupa pisali čekove danas (i to
ne velike sume, čak i za kupovinu nekog aparata itd), pa onda sutra nosili
marke da prodaju kod Interplasta ili negde drugde, pa je opet bilo u redu.
algoritmi.15nbatocanin,
> Vrlo čudno. Meni se N (a N je solidno veliki broj ;) puta
> desilo da napišem ček(ove) danas (za kupovinu u nekoj
> radnji) a da onda pare uplatim ne sutra, nego kroz 2-3
> dana. I nikad mi nije knjiženo da sam u minusu (kuc,
> kuc...).
Isti slučaj, do poslednjeg izvoda. Kazali su mi da ovaj sistem
primenjuju od skora.
algoritmi.16dejanr,
žini mi se da se i ovde povremeno pojavljivalo pitanje "šta su to regularni
izrazi". Možda će nekima koje to zanima koristiti ova mala rasprava sa
BIX-a, u povodu regularnih izraza na Archie-u
==========
internet/telnet #156, from rcarta, 581 chars, Sat Aug 7 10:35:33 1993
Comment(s).
----------
TITLE: A note on regular expressions.
In the course of learning to use archie servers, I found that the most
powerful means of specifying the search string was via regular expressions.
The manpage at archie.au contains an excellent reference on regular
expressions. After reading this document, I did have one question, however.
How does one specify the empty string (denoted by epsilon or lamda in most
texts on the subject)?
I sent mail to archie-admin@archie.au asking that question.
His answer was that the empty string is generally specified by a pair
of double quotes ("").
==========
internet/telnet #158, from bbayer, 171 chars, Sat Aug 7 10:48:40 1993
Comment to 156. Comment(s).
----------
ok...for us unix illiterates....
what is a Regular Expression?
(i've been waiting to ask that for the last couple of months,
and finally found the appropriate context).
==========
internet/telnet #159, from rcarta, 4351 chars, Sat Aug 7 12:23:34 1993
Comment to 158. Comment(s).
----------
Regular expressions are pretty neat, and they are a powerful thing,
but it's hard to sum them up in one breath.
(An good explanation of regular expressions can be obtained by
telneting to archie.au, logging in as archie, and typing manpage at
the archie.AU> prompt.)
I was first introduced to regular expressions in an attempt to study
compilers. Regular expressions are a definitional mechanism with
which you can specify any collection of strings. They are used in
the "scanner" section of a compiler to get valid tokens from a source
file (for instance, in C, valid tokens are any C keyword, C operator,
identifier, number, etc.).
Since regular expressions denote a collection of strings, a sort of
set notation is used.
The operations are concatenation (this and that), alternation (this
or that), positive closure (one or more of this), and Kleene closure
(zero or more of this).
Concatenation is implied, for instance ab means "a followed by b".
Here are the most basic regular expressions and the strings they
match:
Expression Matches
-------------------------------------
ab ab
a|b a
b
a+ a
aa
aaa
etc.
a* (nothing)
a
aa
aaa
etc.
One special case is the empty string, denoted by epsilon in most
texts, or by lambda in others. On archie servers, it's denoted by
"". Why would you want to use the empty string? An illustration:
letting D stand for any digit, give a regular expression for a
FORTRAN style floating-point literal.
(A number with no decimal point, a number followed by a decimal
point, a number with a decimal point in the middle, or a decimal
point followed by a number. Examples are 5, 5., 5.5, .5, and 0.5.)
(D+(""|.))|(D*.D+)
This translates to "one or more digits followed by nothing or a
decimal point, OR zero or more digits followed by a decimal point
followed by one or more digits."
In the above example, since D stands for all digits (range 0-9), D is
called a character class. The archie server uses a bracket mechanism
to specify character classes. [abc] means "one of a, b, or c".
You can also put a range in brackets. [a-z] means "one of a, b, c,
..., or z." The above regular expression would be written as
([0-9]+(""|.))|([0-9]*.[0-9]+)
for most archie servers. (It probably wouldn't find a match, though,
because not many filenames are floating-point numbers.)
(Note: To use regular expressions with an archie server, type "set
search regex" at the archie server prompt.)
A note on the use of regular expressions on an archie system:
archie systems use the period (.) as a wildcard character ("match
anything"). Therefore, the expression .* means "zero or more of
anything." When you specify your search string, it is considered to
have .* at the front and back. For instance, if I typed "find a",
the system would interpret this as "find .*a.*", meaning "find
anything, followed by an a, followed by anything." This means that
*any* occurrence of my string, if found at the beginning, in the
middle, or at the end of anything in the database, will match. There
are two special characters, ^ and $, which modify this. "find ^cat"
means "find anything beginning with cat, followed by zero or more
occurrences of anything." Matches are cat, catx, catcc, etc. "find
cat$" means "Find zero or more occurrences of anything, followed by
cat". Matches are cat, acat, xxcat, but not catx. "find ^cat$"
directs the archie system to find the string cat and nothing else.
Note: Each symbol in a regular expression is case-sensitive. In a
regular expression this may be overcome with character classes. For
instance, [Mm] matches one of M or m.
The string [Mm][Ss]-*[Dd][Oo][Ss] means
"Find zero or more of anything, followed by M or m, followed by S or
s, followed by zero or more -, etc."
Matching strings are MSDOS, MSdos, MS-DOS, ms-dos, Ms--dOs, etc.
I hope this helps. The concept of regular expressions is just one of
those things that's simple once you understand it, but attaining the
understanding can be real difficult. It was for me.
==========
internet/telnet #160, from bbayer, 101 chars, Sat Aug 7 15:58:38 1993
Comment to 159. More refs to 159.
----------
argh!
and i had to ask.
OK! I'll download the above, print it out, and study.
Thanks for the help.
==========
internet/telnet #161, from paulr, 171 chars, Sat Aug 7 16:12:47 1993
Comment to 159. Comment(s). More refs to 159.
----------
That is a very nice explanation! I'm going to save that one. I may
file the serial numbers off and make use of next time someone asks that
question. :) :)
-Paul
==========
internet/telnet #163, from thefuzz, 2558 chars, Sat Aug 7 18:51:35 1993
Comment to 159. Comment(s). More refs to 159.
----------
To further the confusion, here is a portion of the GNU grep/egrep
manual page. Archie, and most regular expression matchers use
the "egrep" syntax:
REGULAR EXPRESSIONS
(grep) (egrep) (explanation)
c c a single (non-meta) character
matches itself.
. . matches any single character except
newline.
\? ? postfix operator; preceeding item
is optional.
* * postfix operator; preceeding item
0 or more times.
\+ + postfix operator; preceeding item 1
or more times.
\| | infix operator; matches either
argument.
^ ^ matches the empty string at the
beginning of a line.
$ $ matches the empty string at the end
of a line.
\< \< matches the empty string at the
beginning of a word.
\> \> matches the empty string at the end
of a word.
[chars] [chars] match any character in the given
class; if the first character after
[ is ^, match any character not in
the given class; a range of charac-
ters may be specified by first -
last; for example, \W (below) is
equivalent to the class [^A-Za-z0 -
9]
\( \) ( ) parentheses are used to override
operator precedence.
\digit \digit \n matches a repeat of the text
matched earlier in the regexp by
the subexpression inside the nth
opening parenthesis.
\ \ any special character may be pre-
ceded by a backslash to match it
literally.
Now to make life much easier for archie users, a simple string
like "kermit" will match any string with the word kermit in it.
So, from archie "prog kermit" is a valid search term.
thefuzz
==========
internet/telnet #164, from rcook, 70 chars, Sat Aug 7 19:27:41 1993
Comment to 159. Comment(s).
----------
>. . .hard to sum them up in one breath.
Wildcards on steroids?
--RC
==========
internet/telnet #165, from rcarta, 325 chars, Sat Aug 7 23:48:49 1993
Comment to 163.
----------
In a not-so-special case as that, it's even better just to enter
'set search sub' before 'prog kermit'. That will search for 'kermit'
as a case-insensitive substring (if case sensitivity is desired, use
'set search subcase'). In the event that you know *precisely* what you
are looking for, you can use 'set search exact'.
algoritmi.17ratman,
Kako bi izgledao program koji izracunava vrednost matrice preko
minor-vrednosti. Taj pgm. svakako koristi rekurziju (dok ne
stigne do 1x1 matrice), ali mi nekako ne polazi za rukom da ga
napisem, jer mi rekurzivne stvari inace nekako ne polaze za
rukom.
Ako neko zna kako bi se ovo moglo uraditi, ili vec ima program
neka mi uploaduje -najbolje u Pascal-u, a moze i u Clipper-u
(doduse moze i u QBASICU -rekurzije i tu isto funkcionisu!)
Evo sta sam ja napravio (ali ne radi!)
(Naravno, i meni je samom vrlo zamlatno gledati sta nije u redu,
al' ako se ipak desi da neko primeti...)
DECLARE FUNCTION minor! (mat(), z!, y!)
OPTION BASE 1
OPEN "i", 1, "matrix3"
INPUT #1, n
DIM m(n, n)
FOR lin = 1 TO n
FOR kol = 1 TO n
INPUT #1, m(lin, kol)
NEXT kol, lin
rese = 0
PRINT minor!(m(), 1, 1)
FUNCTION minor (mat(), re, ko)
mdim = UBOUND(mat, 1) - LBOUND(mat, 1) + 1
IF mdim = 2 THEN
minor = mat(1, 1) * mat(2, 2) - mat(2, 1) * mat(1, 2)
ELSE
sum = 0
DIM newm(mdim - 1, mdim - 1)
FOR i = 1 TO mdim
REDIM newm(mdim - 1, mdim - 1)
kk = 1
FOR k = 1 TO mdim
IF k = re THEN k = k + 1
jj = 1
FOR j = 1 TO mdim - 1
IF j = 1 THEN j = j + 1
newm(k - 1, jj) = mat(k, j)
jj = jj + 1
NEXT j
kk = kk + 1
NEXT k
sum = sum + (-1) ^ (1 + i) * minor(newm(), 1, 1)
NEXT i
minor = sum
END IF
END FUNCTION
Pozdrav,
Dejan.
algoritmi.18m.hristodulo,
>> Kako bi izgledao program koji izracunava vrednost
>> matrice preko
Evo ti jedne funkcije, sa primerom, koja
izračunava vrednost determinante zadate matrice do
4x4 (školski zadatak, zato je ograničen). Malo
debilno izgleda, ali radi. Ako me ne bude mrzelo,
"ulepšaću" kod, pa ću ti baciti.
determin.zipalgoritmi.19ndragan,
/ p.s. radi se o tužbi koju je pokrenulo jedno fizičko lice protiv
/ banke...
E najzad nekom da pukne film. Mnogo sreće i živaca mu želim.
Elem, ja sam radio to za par banaka, i sistem je da se uzima datum
valute, tj datum kada je ček prošao kroz banku. Drugo je pitanje šta u
tom datumu piše. Imao sam primer još pre pet godina (ili kad mi je ono
poslednji put Banatska banda... banka dostavila kamatni list), da je
nekoliko čekova, koji su prema izvodu doobro kasnili, naknadno dobilo
neke realnije datume. Verovatno se radilo o tome da su proknjiženi na
zbirni konto (banke se izrazito trude da im zbirovi budu dnevno tačni),
pa tek posle rasknjižavani po partijama, te da je na izvode stigao datum
rasknjižavanja, a ne datum zbirnog knjiženja, ili neki drugi zez. Ne bih
se čudio ni da su retroaktivno propustili prepravku datuma za neke
serije čekova (kriterijumi su za gledanje u pasulj - koje čekove, kako
su znali dokle da ih vrate itd).
Princip je da se svaki put sve računa ispočetka - ako je nešto naknadno
proknjiženo, pod nekim starijim datumom, to naknadno utiče i na kamatu i
naravno obračunava se kamata prema najnovijem obračunu, skida se
prethodno obračunata kamata i iskazuje se samo razlika. Tako sam i ja
imao na svom tekućem nekakvu storno kaznenu kamatu (jedna plata je malo
zalutala).
Ono čega se ne drže sve banke je da je datum koji se pojavio na izvodu
_zakon_, tj. jednom kad ga vlasnik računa vidi odštampanog, nepromenljiv
je, osim ako vlasnik interveniše.
algoritmi.20janko,
> Kako bi izgledao program koji izracunava vrednost matrice
> preko minor-vrednosti. Taj pgm. svakako koristi rekurziju
> (dok ne stigne do 1x1 matrice), ali mi nekako ne polazi za
> rukom da ga napisem, jer mi rekurzivne stvari inace nekako
> ne polaze za rukom.
Nemoj ni da pišeš, ako ti je potrebna samo vrednost same
determinante.
Rekurzivno izračunavanje determinante je NAJSPORIJI i NAJDUčI
način koji je meni poznat. Zgodan je samo za poneko matematičko
dokazivanje, ali ne i za primenu.
algoritmi.23drassa,
Alo? Ima li koga?
Imam jedan problemčić, tačnije pitanjce...
Evo ovako:
Uz pomoć objtools i dobio sledeći rezultat OBJ fajla
kompajlirane naredbe SHELL "kvakva":
Filename : C:ĐRADNIĐOBJTOOLSĐSHELL.OBJ
Module : C:ĐRADNIĐQSOURCEĐSHELL.BAS
Language : Microsoft QuickBASIC Compiler 4.0
Library : BCOM40
Type : Sub module with starting address
Externals:
$AC
$DAC
B$CENP
b$seg
B$SSHL
Da li postoji mogućnost da se Externals i Public vide sa
pozivnim parametrima?
Ako postoji, kako?
Ako ne postoji, zašto?
Bye, Drassa
algoritmi.24drassa,
Još jedno pitanje:
Kakva je razlika u strukturi OBJ naspram LIB ?
Bye, Drassa
algoritmi.25.obj,
> Kakva je razlika u strukturi OBJ naspram LIB ?
Razlika je, sa jedne strane - mala, a sa druge strane - velika. ;)))
Naime, možda ti je poznato da .obj ;) datoteke imaju vrlo jednostavnu
strukturu: podeljene su u slogove ("records") - svaki od njih na
početku ima identifikator tipa ;) sloga, dužinu istog, CRC istog i telo
(tj. podatke) istog. Primer:
Bajtovi (hex) Komentar ;)
80 Slog tipa THEADR - zaglavlje modula
05 00 Dužina sloga - 0005h bajtova
03 41 41 41 Telo sloga. Njegova struktura zavisi od tipa sloga. Kod
THEADR, to je paskal-string - ime modula. 03 41 41 41 je
string 'AAA'.
00 CRC sloga. Nula = bez kontrole.
Sad, da vidimo pitanje - u čemu se ovakva ogranizacija razlikuje od
organizacije lib datoteke? U ničemu. ;)) Skoro. Jer, postoje i dodatni
tipovi slogova (u odnosu na obj), npr. LHEADR za zaglavlje biblioteke.
Glavna razlika je, međutim, u tabeli koja se koristi za superbrzo
pretraživanje biblioteke.
Dobar linker će neki simbol XYZ vrlo brzo naći pomoću tabele koja, BTW,
obično stoji na kraju lib datoteke (lseek offset stoji u zaglavlju
lib-a, LHEADR).
Eto. Nadam se da ti je sad malo jasnije kako izgledaje to objektne
datoteke. Vrlo prosto. A ni lib-ovi nisu ništa komplikovanije.
Ou bi džej
algoritmi.26drassa,
>> Dobar linker će neki simbol XYZ vrlo brzo naći pomoću
>> tabele koja, BTW,
Hm, da sada je malo jasnije...
Međutim, kako da .LIB ili .OBJ za koji nemam ng ili help, pregledam
i vidim da li ima nešto interesantno i primenljivo?
I kako da saznam koji parametri su potrebni za poziv nekog dela .LIB
iz mog programa?
Bye, drassa
algoritmi.27furlani,
Hi:)
Znam da ova poruka ne pribada ovoj grupi ali je procitajte
mozda neko moze da mi pomogne.
Trebaju mi scriptovi za TM . Zato sto ne znam da napravim ono
kad nazovem bbs da me pita da li hocu da se logujem na peru
ili ziku.Znaci kad se logujem dobijam pitanje:"Hocete da se
logujete na:"
"1.Peru"
"2.Ziku"
Ali pri tome ja da kucam samo za peru 1 a za ziku 2
znaci ako otkucam 1 logujem se na peru a ako otkucam 2 logujem
se na ziku.
Ako neko ne zna da mi resi ovo nek mi barem posalje neke
njegove scriptove da nekako provalim onaj help mi nicemu
nesluzi jer ga ne razumem najbolje sve je vrlo
komplikovano.Ako nekoga interesuje slican je rad kao u pascalu
(ali ja ne znam pascal) pa bi moga da proba.
Da mi nebi postavljali silna pitanja scriptovi sluze da se
lakse logujete na bbs (kratko receno).Pa barem probajte da
napravite.
Puno Pozdrava od Ceda.Hvala unapred
algoritmi.28.obj,
> I kako da saznam koji parametri su potrebni za poziv nekog dela .LIB
> iz mog programa?
Pa što ne pitaš nekoga? ;) Šalim se, od kompajlera koji sam video
jedino C++ može da ubacuje parametre u objektnu datoteku (naravno,
mislim na slučaj kada se pri kompajliranju ne generiše Debugging
Information). Za Quick BASIC ne znam.
Ukratko, u objektnu datoteku se najčešće ne ubacuju informacije o
parametrima, pa mislim da na ovaj način nećeš moći da saznaš nešto više
o funkcijama biblioteke koja te zanima. :(
Ou bi džej
algoritmi.29robert,
>> Međutim, kako da .LIB ili .OBJ za koji nemam ng ili help, pregledam
>> i vidim da li ima nešto interesantno i primenljivo?
Hm, baš mi i nije najjasnije šta ti hoćeš ali ako želiš da vidiš
šta sve ima u nekoj .LIB datoteci možeš je pozvati (ovo pričam za
Borlandov lib manager: TLIB) sa:
tlib <ime.lib> , <ime list datoteke>
pa će ti ta list datoteka sadržati sve simbole i njihove veličine po
modulima koji se sadrže u .LIB fajlu. Recimo:
tlib mathl.lib , math
generiše math.lst datoteku. Probaj pa vidi jeli to ono što tebi treba.
algoritmi.30zsiz,
Dali je neko izračunao nove koeficijente i limite za
proračun plate? Na osnovu Službenog lista, izračunao
sam (a nisam siguran da sam dobro izračunao):
NETO BRUTO
<=7,833,766,000 NETO*1.923077
7,833,766< <=60,862,338,000 (NETO-3,012,987,000)*3.125
>60,862,338,000 (NETO-12,051,948,000)*3.703704
Ovo gore je za S=23% (stopa doprinosa za rad)
Pozdrav.
algoritmi.31rpausic,
Šaljem ti f-ju u clipper-u. Nemam vremena za više objašnjenja.
Valjda ćeš se snaći.
net_brut.prgalgoritmi.32dr.grba,
Verovatno ste primetili da je nastala prilična gužva zbog odluke SPPFN
da izvrši dopunu svakog žiro računa dodatnim kontrolnim brojem.
U tusvrhu sam doživeo najtraumatičnije iskustvo u životu u radu sa
Službenim listovima. Sve u svemu, SPP šalje korisnicima obaveštenje
u kome objavljuje kontrolni broj i novi izgled žiro računa. Poziv
na referencu je SLužbeni list SR Jugoslavije 24/93.
Postoji i dopuna/izmena u Sl. listu SRJ 57/93. čiji naslov je
"UPUTSTVO o izmenama i dopunama uputstva o obliku, sadržini i upotrebi
instrumenata platnog prometa za plaćanja u zemlji", strana 1157.
Ne trudite se da pronađete ovo. Toliko je nerazumljivo da nisam ni
uz pomoć okorelog čitaoca Sl. listova (moja matora) uspeo da raskukuljim.
Evo algoritma po kome će svako od vas moći da smlati programče, i na kraju
da ručno izvede kontrolni broj žiro računa :
čiro račun najpre treba proširiti na formu od striktno 18 cifara, i to
tako da se broj partije (desni broj) popuni levim krompirima.
primer : 65500-601-2986 ---> 65500-601-0000002986
Sada se dobijeni broj ponderiše brojevima 2, 3, 4, ....., 18, 19
ZDESNA ULEVO.
6 5 5 0 0 6 0 1 0 0 0 0 0 0 2 9 8 6
* * * * * * * * * * * * * * * * * *
19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2
-----------------------------------------------------------------------
114+ 90+ 85+ 0+ 0+ 84+ 0+ 12+ 0+ 0+ 0+ 0+ 0+ 0+ 10+ 36+ 24+ 12 = 467
Dobijeni zbir pondera (467) se celobrojno deli sa 11 i lokalizuje
se ostatak :
467 : 11 = 42, ostatak 5
Ostatak se oduzima od 11:
11 - 5 = 6
i dobijeni broj je kontrolni broj. Ukoliko je dobijeni broj 10 ili 11, za
kontrolni broj se usvaja broj 0.
Ovaj algoritam, koji je daleko jednostavniji nego što je to napisano u
SL.L.SRJ, sam na mišiće izbunario od nekih prijatelja u banci. Nadam se
da će moj trud oko pisanja ove poruke nekome biti na korist.
algoritmi.33dr.grba,
>> primer : 65500-601-2986 ---> 65500-601-0000002986
...
>> 11 - 5 = 6
>>
>> i dobijeni broj je kontrolni broj. Ukoliko je dobijeni broj 10 ili
>> 11, za kontrolni broj se usvaja broj 0.
Izmena - dopuna :
Dobijeni kontrolni broj se u žiro račun dodaje između drugog i trećeg
broja, dakle
65500-601-2986 ----> 65500-601-6-2986
Izvinjavam se zbog ove omaške u 1.32.
algoritmi.35nbulatovic,
▀skinuo sam neke fajlove sa EZ-INFO-a pa evo jednog; recite da li vas
interesuje pa da saljem jos (ima jedno 2mb slicnih)
ovo je inace program za neuronske mreze koji je pisao neki
programer iz nase. sve je toliko dokumentovano da ce vas zbuniti!
nasanets.zipalgoritmi.36snemcev,
>> Verovatno ste primetili da je nastala prilična gužva zbog odluke
>> SPPFN da izvrši dopunu svakog žiro računa dodatnim kontrolnim brojem.
Još da napomenem da su samo "normalni" žiro računi dobili kontrolni
broj. Porezi i ostali računi koji su već imali četiri grupe cifara u
broju računa nisu dirani.
algoritmi.37snemcev,
>> ▀skinuo sam neke fajlove sa EZ-INFO-a pa evo jednog; recite da li vas
Ajd baci u KOM:jupak broj EZ Info-a. Bio bih jako zainteresovan da ga
nazovem.
algoritmi.38dejanr,
>> čiro račun najpre treba proširiti na formu od striktno 18 cifara, i to
>> tako da se broj partije (desni broj) popuni levim krompirima.
Hvala na interesantnoj poruci - ja sam i sam "dešifrovao" ovaj checksum,
i to po analogiji po kontrolnom broju koji se dodavao na broj fakture i
koji se računa na identičan način. Međutim, ovo dopunjavanje nulama je
zanimljiva pojava - polje žiro-računa je, za firme, do sada dimenzionisano
na 15 znakova, ovo je novitet da se ide na 18! Sa druge strane, ni 18
cifara nije dovoljno da se upisuju žiro računi privatnih lica, zanatskih
radnji, agencija itd. Kako li će tu biti sa checksum-om i da li će ga
uopšte biti?
algoritmi.39dr.grba,
>> na 15 znakova, ovo je novitet da se ide na 18! Sa druge strane, ni
>> 18 cifara nije dovoljno da se upisuju žiro računi privatnih lica,
>> zanatskih radnji, agencija itd. Kako li će tu biti sa checksum-om i
>> da li će ga uopšte biti?
Mislim da je tolika zbunologija u pitanju, da stvarno više nema smisla.
Te ovakav, te onakav ponder, te sleva, te zdesna. Pa fondovi koji već
imaju četiri javne grupe nemaju potrebu za kontrolnom cifrom, pa trte-mrte...
A znate li kako je dosad izgledao kontrolni broj individualne partije?
Posmatrajte samo poslednji broj žiro računa :
65500-601-2986
Cifra 6 u 2986 je kontrolna cifra. Dobijena je na sledeći način:
298 popuniti levim krompirima do šest cifara : 000298
Dobijeni broj ponderisati brojevima od 0 do 5 SLEVA NADESNO i zbir
provući kroz modul 11 po poznatom obrascu:
0 0 0 2 9 8
* * * * * *
0 1 2 3 4 5
----------------------
0+ 0+ 0+ 6+ 36+ 40 = 82 82 : 11 = 7, ostatak 5.
11 - 5 = 6, i to je kontrolni broj. I sad je ceo broj partije 2986.
Brojevi kod kojih je dobijen rezultat 11 imaju kontrolni broj nula,
a brojevi kod kojih je dobijen rezultat 10 ne mogu se upotrebiti kao
broj individualne partije.
...I tako suzbismo liticu...
Za kraj ove priče, ako baš hoćete da ugradite totalnu kontrolu žiro
računau svoje programe, osim algoritama koje sam dosad opisao, preostaje
i poređenje operativnog broja službe (prvi broj žiro računa) i naziva
filijale/ekspoziture/poslovnice SPPFN, kao i šifre opštine (skriveni broj,
piše se samo interno) sa tabelom objavljenom u Sl. listu SRJ 24/93, strane
481-484. Postoji i oznaka vrste žiro računa (ili kako se već zove), drugi
vidljivi broj (601, 678, 605......) za koje ne znam referencu, ali znam samo
da je objavljeno u nekom Službenom listu u toku 1993.
Što se tiče broja opštine, on se proširuje tek unutar transakcija SPPFN.
Za Kikindu je to broj 215, pa puni žiro račun moje firme potreban za
finansijsku transakciju sad glasi : 65500-215-601-6-2986. Postoje još
neke oznake, ali tu već zalazim u domen koji ne poznajem dobro. Možda
neko zna, pa neka me dopuni, e da dođemo do kompletne priče.
algoritmi.40dejanr,
Što se tiče broja žiro računa građana i kontrolnih cifara, stvar izgleda (bar
kod Beobanke) stoji ovako: kontrolni broj se pravi samo za sam račun od
Beobanke, dakle ono 60811-620-16. Po pravilima koja su ovde opisana, kontrolni
broj je 1, dakle čitav broj postaje 60811-620-1-16. Ono iza toga, što je žiro
račun čoveka u okviru banke, nema kontrolni broj, i prosto se nadodaje na ovo,
dakle broj nekog računa privatnog lica (51) u ekspozituri 353 (to je ona kod
Londona) mogao bi da bude 60811-620-1-16-51-353-5555555.
E sad, još ostaje pitanje da i ovaj drugi deo nema svoj checksum, tj. da recimo
ono zadnje 5 u 51-353-5555555 nije nekakav checksum.
algoritmi.41snemcev,
>> E sad, još ostaje pitanje da i ovaj drugi deo nema svoj checksum, tj.
>> da recimo ono zadnje 5 u 51-353-5555555 nije nekakav checksum.
Za Beobanku ne znam, ali Vojvođanska banka sigurno nema checksum. Sa
druge strane, Jugobanka i Investbanka ih imaju i na brojevima tekućih
računa, pa zašto ih nebi bilo i na brojevima žiro računa.
algoritmi.42dr.grba,
>> Beobanke, dakle ono 60811-620-16. Po pravilima koja su ovde
>> opisana, kontrolni broj je 1, dakle čitav broj postaje
>> 60811-620-1-16. Ono iza toga, što je žiro
Potvrđeno je kao tačno.
>> E sad, još ostaje pitanje da i ovaj drugi deo nema svoj checksum,
>> tj. da recimo ono zadnje 5 u 51-353-5555555 nije nekakav checksum.
E, pa trebalo bi da jeste, ali ne znam po kom ključu.
algoritmi.43snemcev,
>> E sad, još ostaje pitanje da i ovaj drugi deo nema svoj checksum, tj.
>> da recimo ono zadnje 5 u 51-353-5555555 nije nekakav checksum.
Za Beobanku ne znam, ali Vojvođanska banka sigurno nema checksum. Sa
druge strane, Jugobanka i Investbanka ih imaju i na brojevima tekućih
računa, pa zašto ih nebi bilo i na brojevima žiro računa.
algoritmi.44oduz,
>**> ovo je inace program za neuronske mreze koji je pisao neki
>**> programer iz nase. sve je toliko dokumentovano da ce vas
>**> zbuniti!
Ovo je iz readme fajla iz nasanets.zip:
"...format. Finally, note that NETS comes with a complete User's Guide
to help you get started with neural network technology..."
Moje pitanje je:
Where is the User's guide ? :)
Ogi
algoritmi.45slom,
Kako se obicno resava sledeci problem ?
Imam na ekranu jedan prozorcic u kome se nalazi neki tekst.
Tekst treba pomocu strelica,PgUp,PgDn,Home i End tastera pomerati,
skrolovati levo-desno, gore-dole, slicno kao u editoru.
Dakle, kako na brz i jednostavan nacin realizovati skrolovanje ?
sm
algoritmi.46vitez.koja,
#=> Dakle, kako na brz i jednostavan nacin realizovati
#=> skrolovanje ?
Za skrolovanje gore-dole imaš dovoljno brze bios funkcije. Ako ti treba i
pomeranje levo-desno, onda je bolje da sam napišeš funkcije koje će baratati
direktno sa video memorijom.
algoritmi.47peca.st,
!-> Dakle, kako na brz i jednostavan nacin
!-> realizovati skrolovanje ?
Pucaš direktno u video memoriju.
(recimo da si je predstavio matricom 80*25 od po dva bajta)
Na primer, ako hoćeš da pomeriš dole, onda
u jednoj for petlji j+1 nizu dodeliš j niz, a na
početak (prvi red prozora) ubaciš string koji se do
tada nije video. (njega čitaš iz, recimo, liste)
Slično je i za levo, i za gore, i za desno...
Peđa.
algoritmi.48janko,
> Kako se obicno resava sledeci problem ?
>
> Imam na ekranu jedan prozorcic u kome se nalazi neki
> tekst. Tekst treba pomocu strelica,PgUp,PgDn,Home i End
> tastera pomerati, skrolovati levo-desno, gore-dole, slicno
> kao u editoru.
>
> Dakle, kako na brz i jednostavan nacin realizovati
> skrolovanje ?
Na pravim operativnim sistemima, i pravom hardveru, pozivom
rutine operativnog sistema.
Ako je reč o tekst modu, na MS DOS-u postoji BIOS rutina koja
ume da skroluje tekst (ako se sećam, i manji deo ekrana).
Lično, na pisiju ne bih, kada bih pisao program koji treba da
bude brz, čak, ni koristio skrolovanje već ponovni ispis
promenjenog sadržaja! Zašto? Jer je brzina video memorije, osim
na VL pločama, daleko manja od memorije. Skrol troši za svako
slovo po dva pristupa sporoj memoriji, a ponovni ispis samo po
jedan. Razlika je ogromna.
algoritmi.49zolika,
Molio bih nekoga ko bi mogao da mi pomogne, da mi navede neki
algoritam koji transformiše lozinku zadatu kao ASCII tekst u nekoliko brojeva
(tj. bajtova). Transformacija bi, po mogućnosti, trebalo da dâ bar 4-bajtni
rezultat. Ne bih objašnjavao za šta mi je ovo potrebno, mislim da će se mnogi
dosetiti i sami... :-))))))
algoritmi.50nbulatovic,
> Ovo je iz readme fajla iz nasanets.zip:
>
> "...format. Finally, note that NETS comes with a complete
> User's Guide to help you get started with neural network
> technology..."
>
> Moje pitanje je:
>
> Where is the User's guide ? :)
ne treba ti user's gide; samo pogledaj fajl PROP.C i razumeces
kako radi.
algoritmi.51peca.st,
!-> Transformacija bi, po
!-> mogućnosti, trebalo da dâ bar 4-bajtni
!-> rezultat. Ne bih objašnjavao za šta mi je
!-> ovo potrebno, mislim da će se mnogi
!-> dosetiti i sami... :-))))))
4 bajta = 32 bita
Sve mi ovo smrdi na CRC-32 i tvoj BBS. ;)
Imaš u knjizi PC Modemske komunikacije detaljno opisan CRC
algoritam, iz njega se sve jasno vidi...
Peđa.
algoritmi.52robert,
>> Sve mi ovo smrdi na CRC-32 i tvoj BBS. ;)
>> Imaš u knjizi PC Modemske komunikacije detaljno opisan CRC
Ali Zoliki treba verovatno jednosmeran aloritam kao na UNIX-u a to
bih voleo i ja da vidim. To je prilično korisna stvarčica :).
Znači algoritam koji kodira neki alfanumerički niz u neki drugi
alfanumerički niz fiksne dužine a da pri tome transformacija postoji
samo u smeru kodiranja ali ne i dekodiranja. Dakle potrebna je neka
funkcija koja nema inverznu funkciju ako sam u pravu :).
algoritmi.53dr.grba,
>> Molio bih nekoga ko bi mogao da mi pomogne, da mi navede neki
>> algoritam koji transformiše lozinku zadatu kao ASCII tekst u
>> nekoliko brojeva (tj. bajtova). Transformacija bi, po mogućnosti,
>> trebalo da dâ bar 4-bajtni
Nešto vrlo jednostavno za implementaciju, a simpatično i primenljivo je
napravio moj mladi koleza snemcev, a to je transformacija stringa u broj
koji se dobija kao zbir funkcije svakog sloa lozinke, a to je ASCII vrednost
puta broj mesta slova u stringu, dakle:
broj("dr.grba") = asc("d")*1 + asc("r")*2 + asc(".")*3 + asc("g")*4 +
asc("r")*5 + asc("b")*6 + asc("a")*7 =
= 100*1 + 114*2 + 46*3 + 103*4 + 114*5 + 98*6 + 97*7 =
= 100 + 228 + 138 + 412 + 570 + 588 + 679 = 2715
E, sad, ako neko provali da u lozinki 2715 piše "dr.grba", onda nazdravlje.
Za belosvetsku upotrebu ne dovoljno, nego sasvim dovoljno. A jednostavno za
ugradnju u CFG fajlove (;
algoritmi.54a.kircanski,
_-=> broj("dr.grba") = asc("d")*1 + asc("r")*2 + asc(".")*3 +
_-=> asc("g")*4 + asc("r")*5 + asc("b")*6 + asc("a")*7 =
_-=> = 100*1 + 114*2 + 46*3 + 103*4 + 114*5 + 98*6 + 97*7 =
_-=> = 100 + 228 + 138 + 412 + 570 + 588 + 679 = 2715
hmmm, thanks, ovo dugo tražim :-)
algoritmi.55peca.st,
!-> Dakle potrebna je neka
!-> funkcija koja nema inverznu funkciju ako
!-> sam u pravu :).
Pa CRC nema inverznu funkciju!
To je baš ono što tebi (i njemu) treba.
Peđa.
algoritmi.56kale,
>> Nešto vrlo jednostavno za implementaciju, a simpatično i primenljivo je
>> napravio moj mladi koleza snemcev, a to je transformacija stringa u broj
>> koji se dobija kao zbir funkcije svakog sloa lozinke, a to je ASCII vrednost
>> puta broj mesta slova u stringu, dakle:
Jednostavno jeste, ali ne odgovara za šifrovanje lozinki. Jeste da se
iz onog broja ne može rekonstruisati "dr.grba", ali je izuzetno lako naći
(čak i bez računara!) neki ASCII string koji će da da isti rezultat. Smisao
tražene funkcije je da onome ko dođe u priliku da pročita njene rezultate
bude *jako* teško da ih upotrebi za generisanje password-a koji će "da prođe".
>> Za belosvetsku upotrebu ne dovoljno, nego sasvim dovoljno.
Ni blizu!
Pozdrav!
algoritmi.57mjova,
> Ali Zoliki treba verovatno jednosmeran aloritam kao na
> UNIX-u a to bih voleo i ja da vidim. To je prilično
> korisna stvarčica :).
CRC nije potrebno raditi za tako kratke reči. najbolji predlog je da
pogledate po 'mojoj školi C-a' tamo je zz dao primer jednostavne
zavrzlame jednog smera.
algoritmi.58dr.grba,
>> _-=> = 100 + 228 + 138 + 412 + 570 + 588 + 679 = 2715
>>
>> hmmm, thanks, ovo dugo tražim :-)
Zahvaliti autoru algoritma, snemcevu.
algoritmi.59dr.grba,
>> Jednostavno jeste, ali ne odgovara za šifrovanje lozinki. Jeste da
>> se iz onog broja ne može rekonstruisati "dr.grba", ali je izuzetno
>> lako naći (čak i bez računara!) neki ASCII string koji će da da
>> isti rezultat. Smisao
Slažem se da je algoritam rudimentaran, i ja ga svakako ne bih upotrebljavao
da kriptujem nešto što interesuje neku stranu obaveštajnu službu (al' sad
se**m, k'o da ja baratam takvim stvarima (: )...
...ali zar nisi razmišljao o mogućnosti zapetljavanja algoritma,
a njega da NE objavljuješ. Šta misliš, kako sam došao do
password("dr.grba") = 110704 ili password("SeZaM") = 90567 ?
Naravno, lupao sam bez veze, ne traži ključ, samo da ti ilustrujem
šta se sve može. Normalna je stvar da shodno nivou i potrebi zaštite
sledi i prikladno projektovanje iste. Daleko je ta problematika odmakla
od proste funkcijice smišljene za tri minuta. U kojoj poruci pre, spomenut
je CRC algoritam kao jedna od tekovina istraživanja u ovoj oblasti...
algoritmi.60prvul,
Ů...ali zar nisi razmišljao o mogućnosti zapetljavanja algoritma,
Ůa njega da NE objavljuješ. Šta misliš, kako sam došao do
Ůpassword("dr.grba") = 110704 ili password("SeZaM") = 90567 ?
Ů▄▄
Pa ako neko uspe da pročita te snimljene brojeve, nije zgoreg
pretpostaviti da će doći i do kopije programa. A onda treba par
desetina minuta dibagovanja i eto algoritma.
Ukratko, pouzdan algoritam mora ostati pouzdan čak i ako je
poznat onome ko provaljuje šifru.
algoritmi.61salex,
Kako Beobanka racuna kamate na dug po tekucem racunu ?
Predpostavljam da je u pitanju jedan od dva obrasca koja prilazem .
Mesecna kamatna stopa STOPA ( 400%)
Iznos duga DUG
Broj dana do izmirenja duga DANI
Algoritam 1.
KAMATA = DUG * ( STOPA / 30 * DANI )
Proporcionalno broju dana .
Algoritam 2.
KAMATA = DUG * ( EXP( LN( 1 + STOPA ) / 30 ) ^ DANI - 1 )
Izracunavanjem dnevne stope , pa kamatom na kamatu za dane .
Salex
algoritmi.62niklaus,
(:> Jednostavno jeste, ali ne odgovara za šifrovanje lozinki.
(:> Jeste da se iz onog broja ne može rekonstruisati "dr.grba",
(:> ali je izuzetno lako naći (čak i bez računara!) neki ASCII
(:> string koji će da da isti rezultat. Smisao
Ma grba je (valjda) dao samo (naivnu) ilustraciju.
Upravo je fora da se zolika sam namuči (more tu uopšte nema muke),
i da niko drugi ne zna algoritam...
Ovo me podseća na algoritme, koje koriste simulatori realnih
(prirodnih) procesa, tipa neke igre (fudbal menadžeri)...
(:niklaus:)
algoritmi.63d.petrovic,
Ă>>> Za belosvetsku upotrebu ne dovoljno, nego sasvim dovoljno.
Ă>
Ă> Ni blizu!
Dovoljno, samo malo izmeni funkciju da bi bila unikat, tj. sad je
lako generisati password, ali ne mozes generisati password za moju
slicnu funkciju.
algoritmi.64d.petrovic,
Ă> Pa ako neko uspe da pročita te snimljene brojeve, nije zgoreg
Ă> pretpostaviti da će doći i do kopije programa. A onda treba par
Ă> desetina minuta dibagovanja i eto algoritma.
Koliko pari desetina? Pre će naći proveru password-a pa je isključiti
nego što će naći algoritam, ali kad se to uvrne 2-3 puta može manijak
i da odustane. Osim toga da raspravljamo o apsolutnoj zaštiti ili da
se odmah složimo da je nemoguća.
algoritmi.65ndragan,
/ Jednostavno jeste, ali ne odgovara za šifrovanje lozinki. Jeste da se
A onda se stvar malo zakomplikuje nekom elementarnom operacijom nad
bajtom pre množenja, naprimer umesto asc("r")*6, ubaci se
shr(asc("r")),mod(6,16))*6, gde umesto "r" i 6 dođu odgovarajuće
vrednosti iz stringa. Ne usporava previše, a dovoljno ga komplikuje.
Umesto shr, može shl, rl (ovo je iz Z80, ne znam kako izgleda na 8*86),
xor ili čak minus.
Imam jedno pravilo: sistem treba da je dovoljno zamumuljen da obeshrabri
diletante i umereno bistre hakere, a ko ga razbije, dobrodošao za
saradnika.
algoritmi.66bojt,
>> Algoritam 2.
>> KAMATA = DUG * ( EXP( LN( 1 + STOPA ) / 30 ) ^ DANI - 1 )
Da nije KAMATA = DUG*( (1+STOPA/100)^(DANI/30) - 1 ) ???
BTW, zna li ko posle kog nedozvoljenog minusa se blokira
t.račun?
algoritmi.67janko,
> A onda se stvar malo zakomplikuje nekom elementarnom
> operacijom nad bajtom pre množenja, naprimer umesto
> asc("r")*6, ubaci se shr(asc("r")),mod(6,16))*6, gde
> umesto "r" i 6 dođu odgovarajuće vrednosti iz stringa. Ne
> usporava previše, a dovoljno ga komplikuje.
Ech, NDragane i DPetroviću.
Nije dovoljno (čak, ni poželjno!) zamumuljivati tako napamet,
jer to ne daje dobre rezultate. Cilj algoritma je da broj
pokušaja za provaljivanje (ako neko ne zna šifru, naravno) bude
što veći. Ovo sve, pri ovakvim transformacija, zadire u teoriju
grupa, i "prostor" po kome se razbacuju predstavnici šifara.
Cilj je da predstavnici šifara budu ravnomerno razbacani po
prostoru, i da je prostor dovoljno velik, da postane iluzorno
"peške probati."
Ukratko, ako neko hoće da radi tako nešto, od srca mu savetujem
da malo čita literaturu. Npr. Knuta.
algoritmi.68snemcev,
>>>> _-=> = 100 + 228 + 138 + 412 + 570 + 588 + 679 = 2715
>>>> hmmm, thanks, ovo dugo tražim :-)
>> Zahvaliti autoru algoritma, snemcevu.
Nisam siguran da nisam izmislio toplu vodu. Ovo koristim negde od '89. i
zasad je bilo sasvim dovoljno da otera one koji bi da čačkaju po programu.
algoritmi.69snemcev,
>> Kako Beobanka racuna kamate na dug po tekucem racunu ?
>> KAMATA = DUG * ( EXP( LN( 1 + STOPA ) / 30 ) ^ DANI - 1 )
>> Izracunavanjem dnevne stope , pa kamatom na kamatu za dane .
Ne znam za Beobanku, ali Jugobanka koristi ovaj drugi.
algoritmi.70dr.grba,
>> Pa ako neko uspe da pročita te snimljene brojeve, nije zgoreg
>> pretpostaviti da će doći i do kopije programa. A onda treba par
>> desetina minuta dibagovanja i eto algoritma.
Evo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
onaj opisani algoritam iz moje poruke.
logon.exealgoritmi.71zolika,
>> Imaš u knjizi PC Modemske komunikacije detaljno opisan CRC
Da, ali nemam knjigu :-(((((
algoritmi.72zolika,
>> Ali Zoliki treba verovatno jednosmeran aloritam kao na UNIX-u a to
>> bih voleo i ja da vidim. To je prilično korisna stvarčica :).
Tačno. Kao na UNIXu. Ili na VMSu. Ili na SEZAMu. Ili na bilo kojem
sistemu kome se pristupa pomoću lozinke.
algoritmi.73dejanr,
>> Ali Zoliki treba verovatno jednosmeran aloritam kao na UNIX-u a to
>> bih voleo i ja da vidim. To je prilično korisna stvarčica :).
Mislim da ćemo najlakše to naći ako neko izvadi odgovarajući deo koda
iz source-a za neki PD Unix. Valjda je "dovučeno" par takvih, pa šteta
da trunu. Trebalo bi da je taj deo koda razmerno lako naći.
Ja danas gledao ima li u nekom od manuela VMS-a koji se polinom tačno
koristi, sve mi se nešto činilo da sam to nekada video. Ali ne nađoh :(
algoritmi.74kale,
>> ...ali zar nisi razmišljao o mogućnosti zapetljavanja algoritma,
>> a njega da NE objavljuješ.
Smisao transformacije password-a u neki broj je da ne postoji jednostavna
inverzna transformacija čak i ako je algoritam kodiranja poznat "provalniku".
Ovo je osnovna stvar. Nije ideja sakriti algoritam kodiranja, već učiniti
njegovo poznavanje nekorisnim. Ti računaš na tajnost tvog algoritma kodiranja
što ne odgovara polaznoj pretpostavci, a i u praksi se nije pokazalo kao
dobra _osnovna_ zaštita.
algoritmi.75kale,
>> Ma grba je (valjda) dao samo (naivnu) ilustraciju.
>> Upravo je fora da se zolika sam namuči (more tu uopšte nema muke),
>> i da niko drugi ne zna algoritam...
žovek je tražio savet, i dobio loš savet. Sad ti kažeš da savetodavac
nije hteo da mu kaže rešenje nego da ga inspiriše. Pošto nije sasvim
očigledno da je savet loš (a jeste loš), neki ljudi mogu da poveruju da je
dobar i da ga koriste ubeđeni u njegovu pouzdanost. Nije nam cilj da neko
nauči nešto loše, a možda i da pretrpi štetu zbog neznanja, zar ne?
algoritmi.76kale,
>> Evo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
>> onaj opisani algoritam iz moje poruke.
Gde je lozinka?
odgovor i na 1.63 d.petrovic
>> Dovoljno, samo malo izmeni funkciju da bi bila unikat, tj. sad je
>> lako generisati password, ali ne mozes generisati password za moju
>> slicnu funkciju.
Tvoj logon.exe samo pišti, a ne daje broj na izlazu. Ajde napravi
(ne bilo ti zapoveđeno) verziju koja umesto pištanja ispiše broj koji je
rezultat transformacije. Poželjno je da program nekad prestane da se
izvršava da bi moj program mogao da ga pozove (da ne moram da kucam). Nemoj
da mi postavljaš domaći tipa "otkrij algoritam" jer to nije ono što je
traženo. Zadrži se na linearnoj transformaciji k1*z1+k2*z2+... (gde su k-ovi
koeficijenti a z-ovi ASCII kodovi password-a). Zauzvrat, ja ću tebi da
pošaljem sors programa koji će to da razbije "in no time". Naravno, zadaj i
neki broj za koji treba naći password koji će da prođe.
Pozdrav, Kale
algoritmi.77kale,
>> Nisam siguran da nisam izmislio toplu vodu. Ovo koristim negde od '89. i
>> zasad je bilo sasvim dovoljno da otera one koji bi da čačkaju po programu.
A ko su bili ti što bi čačkali po programu (korisnici, programeri,
hakeri)? Primeti samo jednu "sitnicu" u tvom algoritmu:
Neka lozinka ima najviše 8 znakova (malih i velikih slova i cifara).
Broj lozinki je 62^8 što je preko 2 E 14. Broj koji je rezultat
transformacije je >= 36 * asc("0") = 1728 i <= 36 * asc("z") = 4392. Pošto
neke vrednosti između ova dve ekstremne vrednosti ne mogu da se dobiju, to je
broj različitih rezultata manji od 2664. Ovako mali broj mogućnosti čini ti
algoritam ranjivim čak i na nasumično probanje.
Pozdrav, Kale
algoritmi.78snemcev,
>> Evo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
>> onaj opisani algoritam iz moje poruke.
Izbi mi argument iz ruke. ;) A baš sam ovo hteo da pošaljem.
algoritmi.79peca.st,
!-> Imam jedno pravilo: sistem treba da je
!-> dovoljno zamumuljen da obeshrabri
!-> diletante i umereno bistre hakere, a ko
!-> ga razbije, dobrodošao za saradnika.
a) Izgleda da mnogi ovde nisu dobro shvatili šta je zolika hteo.
b) Izgleda da ja nisam dobro shvatio šta je zolika hteo.
If a) Then
Zolika je pomenuo da mu treba nešto što će od LOZINKE (koja ima
recimo n karaktera) napraviti 4bajtni "otisak". To znači, da kad
neko unese lozinku, ona prolazi kroz isti taj algoritam, tako dobijeni
otisak se proverava sa originalnim (koji je verovatno na disku) i ako
je provera prošla Ok, korisnik lozinke se pušta dalje. Svi ovde pomenuti
algoritmi (osim CRCa) imaju suviše veliki propusni opseg. Recimo, onaj
algoritam što je poslao dr.grba daje istu vrednost za "dr.grba" i za
"fs.grba" (napamet sam računao, nadam se da sam pogodio). Procenat
takvih mogućnosti je ogroman, zato takvi algoritmi nisu pogodni za ovu
situaciju. (za neke druge jesu)
Else Izvinjavam se.
Peđa.
algoritmi.80dr.grba,
>> Nisam siguran da nisam izmislio toplu vodu. Ovo koristim negde od
>> '89. i zasad je bilo sasvim dovoljno da otera one koji bi da
>> čačkaju po programu.
'Ajde onda, objasni nevernim Tomama koliki je efekat ovakvih kriptova.
algoritmi.81snemcev,
>> Tvoj logon.exe samo pišti, a ne daje broj na izlazu.
žini mi se da je taj logon.exe dovoljno blizu realne situacije. Takva
provera se recimo nalazi na ulazu u program. Ti nemaš pojma koji je broj
rezultat koje ulazne lozinke, a treba da provališ u sistem.
>> Naravno, zadaj i neki broj za koji treba naći password koji će da
>> prođe.
Kad se zna broj, nije problem. Problem je što (zasad) ne znaš broj.
algoritmi.82snemcev,
>> Ovako mali broj mogućnosti čini ti algoritam ranjivim čak i na
>> nasumično probanje.
Nisam rekao da sam pronašao Ameriku i sasvim sam svestan nedostataka
ovog algoritma, ali je vrlo jednostavan za implementaciju. Prednost je
što se ne zna ni dužina lozinke, ni tačna transformacija, a ni broj koji
je rezultat transformacije za pojedine lozinke.
Btw, voleo bih da neko nađe lozinku za onaj logon.exe pa da nastavimo
diskusiju sa nečim konkretnim u rukama.
algoritmi.83nkbog,
> Evo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
> onaj opisani algoritam iz moje poruke.
Provaljuju:
CBAN
EAAN
BABN
BBTA
PELA
MEMA
DRBE
i sve one koje zadovoljavaju:
1*K1+2*K2+3*K3+4*K4 = 706 (2C2h), gde su K1 do K4 ASCII kodovi slova (važe
velika slova).
NB.
p.s. Program je bio PKLITE-ovan, pisan u nekakvom Borlandovom paketu (paskalu?)
p.p.s. Nešto posle 12h sam završio poziv Sezama, u 12:40 pišem ovu poruku,
ukupno vreme do nalaženja prve lozinke je ispod pola sata (nisam imao digitron
pri ruci, inače bi bilo brže) već sam nažvrljao program u QBasicu koji brute-
force nalazi sve lozinke... toliko o sigurnosti ovakve zaštite ;)... Za svaku
vrednost preko 5 DM u ovoj zemlji je ovakva zaštita slaba...
algoritmi.84a.kircanski,
_-=> iz source-a za neki PD Unix. Valjda je "dovučeno" par
_-=> takvih, pa šteta
Hm, gde ima da se nađe taj PD unix?
algoritmi.85niklaus,
(:>>> Ma grba je (valjda) dao samo (naivnu) ilustraciju.
(:>>> Upravo je fora da se zolika sam namuči (more tu uopšte nema
(:>>> muke), i da niko drugi ne zna algoritam...
(:>
(:> žovek je tražio savet, i dobio loš savet. Sad ti kažeš da
(:> savetodavac nije hteo da mu kaže rešenje nego da ga
(:> inspiriše. Pošto nije sasvim očigledno da je savet loš (a
(:> jeste loš), neki ljudi mogu da poveruju da je dobar i da ga
(:> koriste ubeđeni u njegovu pouzdanost. Nije nam cilj da neko
(:> nauči nešto loše, a možda i da pretrpi štetu zbog neznanja,
(:> zar ne?
Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku njihovog
srećnog programerskog života, tražiti da naprave algoritam za sigurno čuvanje
šifara, bi trebalo da su dovoljno inteligentni da pronađu dovoljno siguran
algoritam, ili da su jednostavno u stanju da od ponuđenih algoritama, nađu
onaj sa najmanjom verovatnoćom za "provalu".
(:niklaus:)
algoritmi.86niklaus,
(:> a) Izgleda da mnogi ovde nisu dobro shvatili šta je zolika hteo.
(:> b) Izgleda da ja nisam dobro shvatio šta je zolika hteo.
(:> If a) Then
(:> Else Izvinjavam se.
begin
If ( a) and b) ) then
reci_peci(' dr.grba je dao samo ilustrativan primer.');
exit(0); š Dosta o CRCovima, please (; ć
end.
(:niklaus:)
algoritmi.87peca.st,
!-> Btw, voleo bih da neko nađe lozinku za
!-> onaj logon.exe pa da nastavimo diskusiju
!-> sa nečim konkretnim u rukama.
Ako je u logon.exe korišćen onaj algoritam, moraš nam dati
koji je broj zapamćen, to jest za koji broj da tražimo šifru.
Jer, cilj je bio da se iz otiska ne može naći šifra koja će
dati takav otisak!
Peđa.
algoritmi.88peca.st,
!-> Kad se zna broj, nije problem. Problem je
!-> što (zasad) ne znaš broj.
Kad se zna broj dobijen posle CRC algoritma, opet je problem
(i to praktično iste težine kao da ne znaš taj broj).
Ovako kako ti kažeš, bilo ko ko pristupi disku BBSa (jer ovde
pre svega o tome govorimo) svejedno mu je dal će naći fajl sa
originalnim šiframa ili fajl sa otiscima šifara. Jer, ako ima
otisak - i sam kažeš da nije problem naći šifru koja prolazi.
Poenta je da NIKO (ni sysop, pa ni onaj ko je pisao softver)
ne može da zna šifru korisnika.
To je mana algoritma za ovaj slučaj, u nekim drugim slučajevima
verovatno bi poslužio.
Peđa.
algoritmi.89peca.st,
!-> Btw, voleo bih da neko nađe lozinku za
!-> onaj logon.exe pa da nastavimo diskusiju
!-> sa nečim konkretnim u rukama.
Ako je u logon.exe korišćen onaj algoritam, moraš nam dati
koji je broj zapamćen, to jest za koji broj da tražimo šifru.
Jer, cilj je bio da se iz otiska ne može naći šifra koja će
dati takav otisak!
Peđa.
algoritmi.90peca.st,
!-> Kad se zna broj, nije problem. Problem je
!-> što (zasad) ne znaš broj.
Kad se zna broj dobijen posle CRC algoritma, opet je problem
(i to praktično iste težine kao da ne znaš taj broj).
Ovako kako ti kažeš, bilo ko ko pristupi disku BBSa (jer ovde
pre svega o tome govorimo) svejedno mu je dal će naći fajl sa
originalnim šiframa ili fajl sa otiscima šifara. Jer, ako ima
otisak - i sam kažeš da nije problem naći šifru koja prolazi.
Poenta je da NIKO (ni sysop, pa ni onaj ko je pisao softver)
ne može da zna šifru korisnika.
To je mana algoritma za ovaj slučaj, u nekim drugim slučajevima
verovatno bi poslužio.
Peđa.
algoritmi.91kale,
>> >> Evo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
>> >> onaj opisani algoritam iz moje poruke.
>> Izbi mi argument iz ruke. ;) A baš sam ovo hteo da pošaljem.
Onaj ne prođe baš dobro, samo ti pošalji. ;>
algoritmi.92kale,
>> >> Nisam siguran da nisam izmislio toplu vodu. Ovo koristim negde od
>> >> '89. i zasad je bilo sasvim dovoljno da otera one koji bi da
>> >> čačkaju po programu.
>> 'Ajde onda, objasni nevernim Tomama koliki je efekat ovakvih kriptova.
Pazi, ako je njegov sistem izdržao 10 godina, to ne znači da je dobar.
Sistem bez zaštite je savršeno siguran ako niko neće da ga napada. To je
sasvim druga tema.
algoritmi.93kale,
>> >> Tvoj logon.exe samo pišti, a ne daje broj na izlazu.
>> žini mi se da je taj logon.exe dovoljno blizu realne situacije. Takva
>> provera se recimo nalazi na ulazu u program. Ti nemaš pojma koji je broj
>> rezultat koje ulazne lozinke, a treba da provališ u sistem.
Ajde da ponovim još jednom: smisao funkcije za transformaciju lozinke
je da se onome ko je došao do njenih rezultata maksimalno oteža nalaženje
lozinke koja će da prođe.
Ako možeš da sakriješ rezultate transformacija korisničkih
lozinki, mogao si umesto rezultata transformacije da sakriješ originalne
lozinke. Korišćenjem funkcije si samo smanjio potreban broj nasumičnih
pokušaja da bi se provalilo u sistem, dakle oslabio si zaštitu.
>> >> Naravno, zadaj i neki broj za koji treba naći password koji će da
>> >> prođe.
>> Kad se zna broj, nije problem. Problem je što (zasad) ne znaš broj.
Znači, zaštita tvog sistema se sastoji u tome što se ne zna gde su
brojevi? Jedna od najslabijih zaštita, takođe neprimenljiva na nekim
sistemima.
žovek nije pitao da li i gde da sakrije lozinke i algoritam, nego je
tražio funkciju.
algoritmi.94kale,
>> Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku
>> njihovog srećnog programerskog života, tražiti da naprave algoritam za
>> sigurno čuvanje šifara, bi trebalo da su dovoljno inteligentni da pronađu
>> dovoljno siguran algoritam, ili da su jednostavno u stanju da od ponuđenih
>> algoritama, nađu onaj sa najmanjom verovatnoćom za "provalu".
Trebali da budu dovoljno inteligentni??? žovek je bio dovoljno
inteligentan da zatraži savet. Najbolje mu možemo pomoći ako mu damo dobar
algoritam ili bar ukažemo na slabosti nekog algoritma. Najviše mu možemo
odmoći ako ga uverimo da je neki loš sistem dobar. Pokazalo se da se u ovoj
oblasti lako desi da ono što deluje kao sigurna zaštita ispadne "mačji
kašalj". Ja na osnovu (samo) ovih stvari ne bih sudio o nečijoj
inteligenciji.
Od ponuđenih algoritama za sada znamo da je jedan slab, a za drugi (CRC)
još ne znamo kakav je.
Kad bih ja imao potrebu za takvom funkcijom, ja bih se isto prvo
raspitao za algoritam, probao da nađem neku funkciju koja se već koristi na
ozbiljnim OS. Ako je ne bih našao gotovu, smislio bih svoju i pitao druge
šta misle o njoj.
algoritmi.95snemcev,
>> Recimo, onaj algoritam što je poslao dr.grba daje istu vrednost za
>> "dr.grba" i za "fs.grba"
Fora je u tome da prvo treba da provališ da je u pitanju taj algoritam,
pa tek onda možeš da konstatuješ za koje lozinke daje iste izlazne
brojeve.
Još jednom ponavljam: "provali" onaj logon.exe što ga je Grba poslao, pa
onda možemo da diskutujemo o tome da li je takva zaštita dovoljna da
znatiželjnike zadrži na odstojanju.
algoritmi.96snemcev,
>> Ako je u logon.exe korišćen onaj algoritam, moraš nam dati
>> koji je broj zapamćen, to jest za koji broj da tražimo šifru.
>> Jer, cilj je bio da se iz otiska ne može naći šifra koja će
>> dati takav otisak!
Ne, nemoram. Ni uz jedan paket nisi dobio papirić na kome piše "Ulazna
lozinka kao rezultat transformacije daje broj 908213-3126".
Btw, logon.exe je provaljen (svaka čast). Oćel' ovo pomoći?
;Name CRC32.ASM
;Author (C) 1986 Gary S. Brown. No restrictions apply.
;1992.04.19 Rewrite - Bruce Gavin Translated C -> ASM.
;1992.11.3 Rewrite - Terry Carmen re-wrote to be callable
; from Clipper S'87 or 5.01
; CRC32 takes a single argument as a string, and returns
; the CRC32 to Clipper as an 8 digit character string
; Returns NIL if called with incorrect arguments or an empty string
; CRC32 polynomial is edb88320h, and will produce identical CRCs as PKIZP
algoritmi.97prvul,
ŮĂ> pretpostaviti da će doći i do kopije programa. A onda treba par
ŮĂ> desetina minuta dibagovanja i eto algoritma.
ŮKoliko pari desetina? Pre će naći proveru password-a pa je isključiti
Ůnego što će naći algoritam, ali kad se to uvrne 2-3 puta može manijak
Ůi da odustane. Osim toga da raspravljamo o apsolutnoj zaštiti ili da
Ůse odmah složimo da je nemoguća.
Ů▄▄
Pišem o razbijanju šifri na BBS-u. Dakle, šta će hakeru razbijena
verzija BBS softvera? Da je podmetne na ciljni BBS? ;)
A par desetina je deset minuta do dva sata, što i nije strašno...
I kada se "registruje" neki program, poželjno je ne samo napraviti
"razbijenu" verziju, već i naći algoritam za registraciju. Ipak
sam mirniji kada ne moram da mislim na to da li mi je promakla još
neka provera zaštite koja se ko zna kada manifestuje... zato kada
god mogu nađem reg. broj i registrujem program na "legalan" način.
algoritmi.98prvul,
Ů>> desetina minuta dibagovanja i eto algoritma.
ŮEvo, pokušaj da se proslaviš i razbij ovu lozinku. Korišćen je tačno
Ůonaj opisani algoritam iz moje poruke.
Ů▄▄
:) Ne verujem da bih se proslavio razbijajući fajl od 4k ;)
A ono sa objavljivanjem algoritma nisam ja smislio već je to
u krugovima koji se bave kriptografijom opšte prihvaćena stvar.
Još jednom, nisam tvrdio da lozinka može da se provali, već da
sigurnost zaštite nije mnogo povećana time što je algoritam sakriven,
jer se on može (a uz odgovarajuću motivaciju) "izvući" iz koda, pa
zaštita koja se zasniva na tajnosti algoritma nije preporučljiva.
Dobro, za BBS-ove ima jedna olakšavajuća okolnost: onaj ko zna da
"izvuče" neki komplikovan algoritam iz koda verovatno ima pametnija
posla nego što je to provaljivanje šifri na nekom tamo BBS-u.
Na primer, sedeći non-stop u chatu sam pročitao masu šifara a razne
BBS-ove koje ljudi jedni drugima kažu jer misle da su sami... i nikada
nisam imao želju da ma koju zapamtim - šta će mi... a to je ipak lakše
nego provaljivati program...
algoritmi.99debelijencija,
!=?> Ovo me podseća na algoritme, koje koriste simulatori realnih
!=?> (prirodnih) procesa, tipa neke igre (fudbal menadžeri)...
Nekada davno, ja i burazer smo planirali tako nešto... :)
Ako znaš nešto više o tome, ili imaš nešto i napismeno, bio bih ti
vrlo zahvalan da me uputiš... žisto da, možda, ostvarim tu davnu ideju.
Ala sam nostalgičan! :)
algoritmi.100dr.grba,
>> žovek je tražio savet, i dobio loš savet. Sad ti kažeš da
>> savetodavac nije hteo da mu kaže rešenje nego da ga inspiriše.
I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU....
>> dobar i da ga koriste ubeđeni u njegovu pouzdanost. Nije nam cilj
>> da neko nauči nešto loše, a možda i da pretrpi štetu zbog neznanja,
>> zar ne?
Ne vidim moguću štetu, osim one da se ova zaštita ugradi na neprikladnom
mestu. Kakav algoritam ti predlažeš? 'Ajde da ga vidimo.
algoritmi.101dr.grba,
>> Tvoj logon.exe samo pišti, a ne daje broj na izlazu. Ajde napravi
>> (ne bilo ti zapoveđeno) verziju koja umesto pištanja ispiše broj
Moj (nije moj, ali 'aj'cad) logon.exe radi onako kako bi trebalo da
radi program za lozinku. Da je na nekoj komunikacionoj vezi, posle trećeg
promašaja korisnik bi bio izbačen sa veze.
>> izvršava da bi moj program mogao da ga pozove (da ne moram da
>> kucam). Nemoj da mi postavljaš domaći tipa "otkrij algoritam" jer
>> to nije ono što je traženo. Zadrži se na linearnoj transformaciji
>> k1*z1+k2*z2+... (gde su k-ovi
Ne, algoritam nije diran. Upravo je onaj koji ti opisuješ. Da ti pomognem,
max lozinka je 20 chars (:
>> pošaljem sors programa koji će to da razbije "in no time".
>> Naravno, zadaj i neki broj za koji treba naći password koji će da prođe.
Ove muzičke želje mi nisu jasne. Radi se o tvojoj nameri da razbiješ
program tako da nađeš šifru koja je ugrađena u source programa. Dobio
si tačno onaj program koji stoji na mom disku. Kad ga razbiješ, ako ti
uspe, sa zadovoljstvom ću priznati da si majstor. Lozinku slobodno
objavi ovde.
algoritmi.102dr.grba,
>> Neka lozinka ima najviše 8 znakova (malih i velikih slova i
>> cifara). Broj lozinki je 62ž8 što je preko 2 E 14. Broj koji je
>> rezultat transformacije je >= 36 * asc("0") = 1728 i <= 36 *
>> asc("z") = 4392. Pošto
'Ajde da uzmemo 64 umesto 62:
64**8 = (2**6)**8, a to je 2**48, a ne 2**14, pošto ovo nije
(2**6) * (2**8), što bi stvarno bilo 2**14
Gadan previd, a?
Izvini na izlišnimzagradama, ovako je preglednije, kao i ** umesto ž
P.S. 2**48 je.... koliko ono beše?... A, da, 2.81474977*(10**14)
žas posla za razbiti (:
algoritmi.103dr.grba,
>> algoritam što je poslao dr.grba daje istu vrednost za "dr.grba" i
>> za "fs.grba" (napamet sam računao, nadam se da sam pogodio).
Nisam proverava, nije ni bitno. Jasno je da algoritam ne daje jednoznačne
rezultate. Naravno, ako se lozinka koja prođe pronađe, priznajem i nju.
algoritmi.104dr.grba,
>> 1*K1+2*K2+3*K3+4*K4 = 706 (2C2h), gde su K1 do K4 ASCII kodovi
Da, tačno je.
>> p.s. Program je bio PKLITE-ovan,
Da, tačno je.
>> pisan u nekakvom Borlandovom paketu (paskalu?)
Turbo Pascal 6.0 (:
>> p.p.s. Nešto posle 12h sam završio poziv Sezama,
>> u 12:40 pišem ovu poruku, ukupno vreme do nalaženja prve lozinke je
Skidam kapu i priznajem poraz. Razbi čovek program k'o Panta pitu.
P.S. A valjanost programa branim i dalje, shodno potrebi. I
shvatite već jednom šta sam hteo time da kažem.
P.P.S. 'Ajde da bar nešto da svi izvučemo pouku. Da li si u razbijanju
koristio znanje o algoritmu transformacije? Da li si išao redom
od dužine 1, pa 2, pa 3, pa našao na 4 (lozinka zbilja ima 4 znaka,
ali nije nijedna od navedenih; baš bi bilo zanimljivo istražiti
koliko ih ima, kao išta bi se desilo da je funkcija case sensitive)?
Koliko bi razbijač radio da je lozinka zbilja bila duga 20 karaktera?
Pozdrav, Grba
algoritmi.105dr.grba,
>> Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku
>> njihovog srećnog programerskog života, tražiti da naprave algoritam
>> za sigurno čuvanje šifara, bi trebalo da su dovoljno inteligentni
>> da pronađu dovoljno siguran algoritam, ili da su jednostavno u
>> stanju da od ponuđenih algoritama, nađu onaj sa najmanjom
>> verovatnoćom za "provalu".
Valjda imam poznanike matematičare od kojih bih tražio da mi naprave
valjan matematički model.
algoritmi.106dr.grba,
>> Jer, cilj je bio da se iz otiska ne može naći šifra koja će
>> dati takav otisak!
Nije tačno.
algoritmi.107m.hristodulo,
>> Mislim da cemo najlakse to naci ako neko izvadi
>> odgovarajuci deo koda iz source-a za neki PD
>> Unix.
386BSD je PD Unix, dakle besplatan je, ali
se zabranjuje njegov izvoz izvan granica USA,
zapravo njegov algoritam za kriptovanje lozinki.
Ipak, u BG postoji jedan takav BSD, ali ne bih smeo
reci kod koga.
algoritmi.108spantic,
> 386BSD je PD Unix, dakle besplatan je, ali
> se zabranjuje njegov izvoz izvan granica USA,
Zanimljivo je da se ni na samom Internetu, na kome teoretski važe
američka pravila igre to niko ne poštuje. Podršku za mnoge zabranjene
stvari iz Amerike se može naći na dosta mesta.
algoritmi.109peca.st,
!-> Ne, nemoram. Ni uz jedan paket nisi dobio
!-> papirić na kome piše "Ulazna lozinka kao
!-> rezultat transformacije daje broj
!-> 908213-3126".
Meni se sve čini da ti ne znaš o čemu se diskutuje ovde. :(
Ako ne mogu da dođem do rezultata transformacije, onda transformacija
nema efekta, čak ima kontra efekat! Jer, ako se rezultat tako dobro
sakrije da ne mogu da dođem do njega, zašto onda original nije tako
dobro sakriven? Još jednom: poenta je da _NIKO_ ko zna rezultat transformacije,
pa čak i onaj ko zna algoritam koji je korišćen, ne može lako da dođe
do originala koji daje isti takav rezultat.
Što se tiče provaljivanja logon.exe on je već provaljen i bez rezultata
transformacije, verovatno tako što je u samom programu nađen taj rezultat.
Ti si u logon.exe morao da zapamtiš rezultat pa da ga porediš kasnije,
tako da si nam ipak dao ono što smo tražili. :) A kako se ispostavilo da je
traženi original sastavljen samo od četiri karaktera, čak nije bilo potrebno
znati rezultat, moglo se ispitati i "buldožer" metodom.
Peđa.
algoritmi.110peca.st,
!-> Nije tačno.
Ajd mi argumentuj zašto nije tačno.
Ja sam argumentovao zašto mislim da je tako,
pa bih voleo da čujem i suprotnu argumentaciju.
Peđa.
algoritmi.111peca.st,
!-> Nisam proverava, nije ni bitno. Jasno je
!-> da algoritam ne daje jednoznačne
!-> rezultate. Naravno, ako se lozinka koja
!-> prođe pronađe, priznajem i nju.
Algoritam koji daje jednoznačne rezultate imao bi i inverzan
algoritam, tako da ne bi imao smisla.
Međutim, problem ovog algoritma je što je procenat broja mogućih
lozinki koji prolaze preveliki!
Primerom koji sam naveo hteo sam da pokažem da algoritam daje isti
rezultat za neke vrlo slične šifre, koje u sebi ne sadrže nikakve
"egzotične" znake. Recimo CRC algoritam daje iste rezultate najčešće
za neke totalno "leve" znake (nešto nalik na đubre) koji nemaju veze
sa onim pravim (osim što daje isti otisak :), a opet najčešće
takvi "levi" znaci uopšte nisu dozvoljeni u šifri, pa bi se uslovno
moglo reći da je CRC algoritam "jednoznačan" a (naravno) ne postoji inverzan
algoritam. Hoću da kažem da ćeš teško naći dva stringa sastavljena od
(recimo) samo malih slova i tačke koji posle CRCa daju isti otisak.
Postoji "ogroman" broj stringova (sastavljenih od malih slova i tačke)
koji posle sume a(i)*i daju isti otisak.
Peđa.
algoritmi.112zolika,
>> If a) Then
>> Zolika je pomenuo da mu treba nešto što će od LOZINKE (koja ima
>> recimo n karaktera) napraviti 4bajtni "otisak". To znači, da kad
>> neko unese lozinku, ona prolazi kroz isti taj algoritam, tako dobijeni
>> otisak se proverava sa originalnim (koji je verovatno na disku) i ako
>> je provera prošla Ok, korisnik lozinke se pušta dalje. Svi ovde pomenuti
Tačno! Dobro si razumeo. Treba mi neka transformacija za lozinku na...
da ne pričam, već i vrapci znaju za šta.
algoritmi.113zolika,
>> Upravo je fora da se zolika sam namuči (more tu uopšte nema muke),
>> i da niko drugi ne zna algoritam...
Hm, pošto poruke čitam "na preskok" (zbog tel. računa) - OK, nema problema,
meni nije teško da nažvrljam neku petljicu punu XORovanja, ORovanja i ostalih
logičkih zavrzlama eda bi od ASCII lozinke napravio nekih 2-4 bajtova. No,
drugi princip programiranja koji smo naučili na prvoj godini studija bio je:
2. NE IZMIŠLJATI TOPLU VODU.
Ako neko zna algoritam, a neće da mi kaže - u redu, ne mogu ga puškom natera-
ti. Ali, mislio sam da bi možda bolje bilo da se malo manje mučim tu, a malo
više na nekom drugom mestu.
P.S.: Prvi princip programiranja koji smo naučili bio je:
2. KORISNIK PROGRAMA JE STANDARDNI IDIOT. (zainteresovanima nudim na
uvid beleške iz predmeta "Uvod u programiranje" sa prve godine studija na
informatičkom smeru PMF-a u Novom Sadu).
Da bi zabava bila potpuna - profesor koji nam je to predavao je
moj g-din mentor - kod njega rfadim diplomski...
algoritmi.114pedjak,
> ;Name CRC32.ASM
Hajde, pošalji.
algoritmi.115niklaus,
(:> Hm, gde ima da se nađe taj PD unix?
Na kioscima "Borbe"! (;
Nego ozbiljno - pitaj ljude sa FFSa...
(:niklaus:)
algoritmi.116niklaus,
(:> Trebali da budu dovoljno inteligentni??? žovek je bio
(:> dovoljno inteligentan da zatraži savet. Najbolje mu možemo
(:> pomoći ako mu damo dobar
Ma ništa ja njemu ne poričem. Inteligenciju i njegov integritet
valjanog programera ponajmanje...
Jednostavno je dobio okvirni algoritam i odgovarajuća objašnjenja
vezano za tebu, i dalje će sigurno znati sam...
Problem je što mi Srbi o'ma' se poprimamo i tražimo mane u nečijoj
ideji (konkretno u dr.grbinoj formuli za izradu CRCa). Zato smo ga i tupili
dobrih 50 poruka. (;imam blagi osećaj da ima još)
(:niklaus:)
algoritmi.117niklaus,
(:> Valjda imam poznanike matematičare od kojih bih tražio da mi
(:> naprave valjan matematički model.
Ma samo reci... (: (mada nisi imao mene na umu)
(:niklaus:)
algoritmi.118niklaus,
(:>! =?> Ovo me podseća na algoritme, koje koriste simulatori
(:>! realnih =?> (prirodnih) procesa, tipa neke igre (fudbal
(:> menadžeri)...
(:>
(:> Nekada davno, ja i burazer smo planirali tako nešto... :)
Ma šta je problem?
Najpre definišeš sve parametre, koji utiču na izlaznu vrednost nekog
procesa (konkretno rezultat utakNice), i to je poželjno što više takvih para-
metara zbog veće realnosti i manje verovatnoće da ti se nešto "učini poznatim".
Nakon toga sedneš i odrediš odnose (verovatnoće) svakog procesa pojedinačno,
turiš u jednadžbu i eto - Smrt fašizmu, sloboda:rad 1:0!
(:niklaus:)
algoritmi.119dr.grba,
>> ! -> Nije tačno.
>>
>> Ajd mi argumentuj zašto nije tačno.
>> Ja sam argumentovao zašto mislim da je tako,
>> pa bih voleo da čujem i suprotnu argumentaciju.
Tačno je ako pričamo o PGP algoritmu ili CRC... U predmetnom logon.exe
se nije pričalo o takvoj transformaciji, već o predmetnosti i kvalitetu
zaštite tim algoritmom.
Banalna stvar nas dovede u veom žučnu raspravu. Valjda nešto i naučimo
usput...
algoritmi.120kale,
>> Fora je u tome da prvo treba da provališ da je u pitanju taj algoritam,
>> pa tek onda možeš da konstatuješ za koje lozinke daje iste izlazne
>> brojeve.
Kada se procenjuje kvalitet nekog metoda šifrovanja, UVEK se
pretpostavlja da razbijač razbija baš taj sistem. Zašto? Zato što se
procenjuje kvalitet metoda šifrovanja, a ne razbijača, te se pretpostavlja
da će sistem da napadne (i) najbolji. Pod tom pretpostavkom se procenjuje
najveće potrebno računarsko vreme da se šifra razbije. Argumenata tipa "niko
ovoga neće da se seti" nema u ozbiljnim analizama. Pretpostavlja se da
razbijač napada baš dati metod šifrovanja čiji se kvalitet procenjuje.
algoritmi.121kale,
>> Ne, nemoram. Ni uz jedan paket nisi dobio papirić na kome piše "Ulazna
>> lozinka kao rezultat transformacije daje broj 908213-3126".
Naprotiv, u vrlo ozbiljnim paketima kao što su operativni sistemi
velikih računara dobiješ knjižurine u kojima piše i gde su rezultati
transformacije. Ni jedan komercijalni program/paket ne može računati na
tajnost mesta gde se ovi rezultati čuvaju; jednostavno, promeniš lozinku i
negde se neki fajl promeni. Vidiš koji i gotovo je sa tajnošću mesta gde se
to čuva.
algoritmi.122kale,
>> Ne vidim moguću štetu, osim one da se ova zaštita ugradi na neprikladnom
>> mestu. Kakav algoritam ti predlažeš? 'Ajde da ga vidimo.
A vidiš li moguću štetu na sistemu bez ikakve zaštite osim ako nije na
neprikladnom mestu? ;>>>
Najbolje što mi trenutno pada na pamet je CRC koga bih po izračunavanju
pregazio (XOR) originalnim password-om. Ovaj XOR zato što su CRC polinomi
pravljeni u druge svrhe (za utvrđivanje greške u podacima) i bojim se (ne
tvrdim) da se za broj koji bi bio čisti CRC jedan od odgovarajućih passworda
može brzo generisati. Posle XOR na sistemu ne bi bilo ni originalnog
password-a ni iz njega dobijenog CRC-a. To mi izgleda pouzdano.
Pozdrav!
algoritmi.123kale,
>> Moj (nije moj, ali 'aj'cad) logon.exe radi onako kako bi trebalo da
>> radi program za lozinku. Da je na nekoj komunikacionoj vezi, posle trećeg
>> promašaja korisnik bi bio izbačen sa veze.
Izvinjavam se autoru i tebi zbog greške, nije bilo namerno.
Mi ovde ispitujemo algoritam koji treba da onemogući/oteža generisanje
lozinke na osnovu rezultata njenog kodiranja. Rasprava o ostalim metodima
i merama zaštite (sakrivanje algoritma, onemogućavanje logovanja posle par
neuspešnih pokušaja,...) svakako ima smisla, ali je veoma široka tema.
>> >> Naravno, zadaj i neki broj za koji treba naći password koji će da prođe.
>> Ove muzičke želje mi nisu jasne. Radi se o tvojoj nameri da razbiješ
>> program tako da nađeš šifru koja je ugrađena u source programa. Dobio
>> si tačno onaj program koji stoji na mom disku.
Reč je o programu koji treba da generiše broj na osnovu password-a.
Potom se tako dobijeni broj testira sa zapamćenim brojem za odgovarajućeg
korisnika. Da bi to bilo moguće, neophodno je da se na sistemu za svakog
korisnika (i njegovu lozinku) čuva odgovarajući broj. Brojevi dobijeni
funkcijom transformacije postoje na sistemu. Moja "muzička želja" je
sasvim normalan zahtev. logon.exe ne daje broj na izlazu i neupotrebljiv
je za sisteme koji imaju više od jednog korisnika.
algoritmi.124kale,
>> >> Broj lozinki je 62^8 što je preko 2 E 14.
>> 'Ajde da uzmemo 64 umesto 62:
>> 64**8 = (2**6)**8, a to je 2**48, a ne 2**14, pošto ovo nije
>> (2**6) * (2**8), što bi stvarno bilo 2**14
>> Gadan previd, a?
Stvarno si me neprijatno iznenadio. Notacija "mantisa e eksponent" je
uobičajena za "floating point" brojeve (BASIC, Pascal, FORTRAN, C,...).
Operator stepenovanja ("^" ili "**") uopšte ne postoji u standardima Pascala
i C-a. Bilo kako bilo, podrazumevao sam da svi koji čitaju moju poruku znaju
da protumače ono što piše, pa ovo je konferencija PC.PROG, zar ne? Videvši da
ti ne znaš, pretpostavio sam da si ili vrlo mlad ili da koristiš računar za
obradu teksta, grafike ili nešto drugo što nema veze sa programiranjem.
Glavno iznenađenje dolazi kad sam ti pogledao resume. Inženjer informatike,
pa još radi na EI-Bull mastodontu kao "sysop"! Zaista me zanima (nije mi
želja da te uvredim) u kojoj školi si postao inženjer informatike? Koje
programske jezike ste tamo učili? Ja ne znam Clipper, ali mi se čini da
ima "floating point" brojeve. Kako se pišu? Je li moguće da se u nekom
programskom jeziku piše 2*10**14 i da ne sme pisati 2e14 (eventualno 2.0e14)?
>> Izvini na izlišnimzagradama, ovako je preglednije, kao i ** umesto ž
Ja sam tolerantan prema formi, ne smeta mi ni višak zagrada ni manjak
blankova.
>> P.S. 2**48 je.... koliko ono beše?... A, da, 2.81474977*(10**14)
>> žas posla za razbiti (:
Nije tačno! 2**48=281474976710656
Specijalno za tebe: 62**8=218340105584896
Za ostale ću i dalje da pišem 62^8 je preko 2 E 14, da ne mučim ljude
brojanjem cifara.
Toliki broj password-a je skoro nemoguće isprobati. Srećom po razbijače
ti si preporučio funkciju koja ovaj broj degradira na manje od 3000.
algoritmi.125kale,
>> Skidam kapu i priznajem poraz. Razbi čovek program k'o Panta pitu.
>> P.S. A valjanost programa branim i dalje, shodno potrebi. I
>> shvatite već jednom šta sam hteo time da kažem.
:)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Shvatio sam, konačno! Pa ti se zapravo šališ!
>> Koliko bi razbijač radio da je lozinka zbilja bila duga 20 karaktera?
1*a(1)+2*a(2)+3*a(3)+...+20*a(20)=x(20)
Minimalni zbir za prvih k ASCII kodova je m(k)=k*(k+1)/2*MINASCII,
maksimalni zbir za prvih k ASCII kodova je M(k)=k*(k+1)/2*MAXASCII, gde su:
a(i) ASCII kodovi prvog, drugog,..., dvadesetog znaka lozinke,
x(i) broj dobijen transformacijom prvih i znakova lozinke,
MINASCII najmanji ASCII kod dozvoljen u lozinci,
MAXASCII najveći ASCII kod dozvoljen u lozinci.
Biranje počneš od ASCII koda uz najveći koeficijent (ovde 20, znači a(20) ).
Moraš izabrati takav znak a(20), odnosno u opštem slučaju a(i) da važi
sledeća nejednakost:
( x(i) - m(i-1) ) / i <= a(i) <= ( x(i) - M(i) ) / i, važi za i=2, 3, 4, ...
i na kraju
a(1)=x(1)
Jedan od načina izbora je da izabereš minimalnu dozvoljenu vrednost iz
skupa vrednosti znaka. Ako kasnije ispadne da bi neki a(j) gde je j<i
morao da uzme nedozvoljenu vrednost da bi jednačina bila zadovoljena, onda
povećavaš a(j+1) na najbližu veću dozvoljenu vrednost dok ne dobiješ priliku
da za a(j) izabereš dozvoljenu vrednost. Eventualno bi ovde bila potrebna i
rekurzija (promena a(j+2), a(j+3),...) što zavisi od izbora dozvoljenih
vrednosti za znake lozinke.
Za lozinku od 20 slova ti treba _otprilike_ 5 puta više vremena za
razbijanje nego za lozinku od 4 slova.
algoritmi.126kale,
>> Valjda imam poznanike matematičare od kojih bih tražio da mi naprave
>> valjan matematički model.
Baš si drug! Tvoje znanje je dobro za druge, a kad bi tebi trebalo
ti bi pitao nekog ko zna.
algoritmi.127zolika,
>> žovek nije pitao da li i gde da sakrije lozinke i algoritam, nego je
>> tražio funkciju.
Sve mi se čini, Kale, da si ti jedan od retkih koji me razumeju, al', eto,
ne dâ mi se da dođem do preko mi potrebne funkcije... :-)))))
algoritmi.128zolika,
>> Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku njihovog
>> srećnog programerskog života, tražiti da naprave algoritam za sigurno
>> čuvanje šifara, bi trebalo da su dovoljno inteligentni da pronađu
>> dovoljno siguran algoritam, ili da su jednostavno u stanju da od
>> ponuđenih algoritama, nađu onaj sa najmanjom verovatnoćom za "provalu".
E, moj Virte :-))) Pa ono što radim je UPRAVO pokušaj da od ponuđenih
algoritama izaberem neki koji mi odgovara... Problem je samo što ponuda i
nije nešto naročito (molim dr.Grbu da se ne ljuti, zaista sam zahvalan na
predlogu rešenja problema).
algoritmi.129niklaus,
(:> ne dâ mi se da dođem do preko mi potrebne funkcije... :-)))))
Koliko se ja sećam, pošto (na žalost) ne nalazim na HDu dotični
program, a sećam se da je postojala zbirka korisnih programčića za C zvana
C Snippets. Beće na FFSu. Evo baš ću da zovem da uzmem ponovo (i da ti
uštedim trud)...
(:niklaus:)
algoritmi.130janko,
> "egzotične" znake. Recimo CRC algoritam daje iste
> rezultate najčešće za neke totalno "leve" znake (nešto
> nalik na đubre) koji nemaju veze sa onim pravim (osim što
> daje isti otisak :), a opet najčešće takvi "levi" znaci
> uopšte nisu dozvoljeni u šifri, pa bi se uslovno moglo
> reći da je CRC algoritam "jednoznačan" a (naravno) ne
==
> postoji inverzan algoritam. Hoću da kažem da ćeš teško
================
> naći dva stringa sastavljena od (recimo) samo malih slova
> i tačke koji posle CRCa daju isti otisak.
Koliko se ja razumem, postoji i trivijalan je, čak. Oni koji
znaju teoriju koja leži iza CRC, znaju i zašto.
algoritmi.131janko,
> pravljeni u druge svrhe (za utvrđivanje greške u podacima)
> i bojim se (ne tvrdim) da se za broj koji bi bio čisti CRC
> jedan od odgovarajućih passworda može brzo generisati.
Dobro razmišljaš. Stvarno je lako generisati "unazad" nešto što
će dati isti CRC.
> Posle XOR na sistemu ne bi bilo ni
> originalnog password-a ni iz njega dobijenog CRC-a. To mi
> izgleda pouzdano.
Po meni, vrlo je nepouzdano.
Ali, opet, čini mi se da umeš da razmišljaš i da si na pravom
putu... ;>
algoritmi.132kale,
Ovo nije bio reply na moju poruku.
algoritmi.133peca.st,
!-> Tačno je ako pričamo o PGP algoritmu ili CRC...
Tačno je ako pričamo o onome što je zolika hteo!
Ako ne pričamo o tome - čemu sve ovo? Njemu tako nećemo pomoći,
a samo će utrošiti vreme i prostor na Sezamovom disku. ;)
!-> Banalna stvar nas dovede u veom žučnu
!-> raspravu. Valjda nešto i naučimo usput...
Najvažnije je da zolika dobije algoritam koji mu treba...
Peđa.
algoritmi.134niklaus,
(:> E, moj Virte :-))) ......
E, sad ste me stvarno naljutili! (;
Evo programčića za proračun 16-bitnog CRCa...
(Šaljem ga na Pascalu, jer je najsličniji Moduli-2, kojim se zolika služi
za diplomski. Šta ćete - zaboravih jezik, koji sam sâm osmislio)
const POLY=$8408;
var
sifra : string;
function crc16( data_p:string; length:word ): word;
var
i, j : byte;
data, crc : word;
dummy : word;
begin
CRC := $ffff;
if ( length=0 ) then
begin
crc16 := CRC;
exit;
end;
j := 0;
repeat
dummy := $ff and ord(data_pŠjĆ);
inc( j );
for i:=0 to 7 do
begin
data := $ff and ord( data_pŠjĆ );
inc( i );
data := data shr 1;
if ( ((CRC and $0001) xor (data and $0001)) <> 0 ) then
CRC := (CRC shr 1) xor POLY
else CRC := CRC shr 1;
end;
dec( length );
until (length=0);
CRC := not( CRC );
data := CRC;
CRC := (CRC shl 8) or ((data shl 8) and $ff);
crc16 := CRC;
end;
begin
repeat
write('Unesi sifru->');
readln( sifra );
writeln('------------>',crc16( sifra, length(sifra) ));
until (sifra='');
end.
Ne znam šta će zoliki mentoL na sve ovo da kaže, ali stvar radi...
TOLIKO OD MENE!
(:niklaus:)
ps Nadam se da niko neće tražiti CRC-32... (:
algoritmi.135snemcev,
>> Ako ne mogu da dođem do rezultata transformacije, onda transformacija
>> nema efekta, čak ima kontra efekat!
Molim te, navedi mi jedan komercijalni paket koji kaže "rezultat
transformacije ulazne lozinke je to_i_to". U slučaju da konkretan primer
nemaš, diskusiju po ovom pitanju smatram završenom.
algoritmi.136snemcev,
>> Ako neko zna algoritam, a neće da mi kaže - u redu, ne mogu ga puškom
>> naterati.
Da li bi ti pomogao crc32.asm?
algoritmi.137kale,
>> > Posle XOR na sistemu ne bi bilo ni
>> > originalnog password-a ni iz njega dobijenog CRC-a. To mi
>> > izgleda pouzdano.
>> Po meni, vrlo je nepouzdano.
Složiću se da mi je ideja sa XOR naivna. Pošto je CRC n-torka dobijena
pomoću XOR određenih grupa bita originala, još jedan XOR sa originalom ne daje
nešto kvalitetno novo, to ostaje n-torka XOR na određenim grupama bita.
algoritmi.138janko,
>>> > Posle XOR na sistemu ne bi bilo ni
>>> > originalnog password-a ni iz njega dobijenog CRC-a.
>>> > To mi izgleda pouzdano.
>
>>> Po meni, vrlo je nepouzdano.
>
> Složiću se da mi je ideja sa XOR naivna. Pošto je CRC
> n-torka dobijena pomoću XOR određenih grupa bita
> originala, još jedan XOR sa originalom ne daje nešto
> kvalitetno novo, to ostaje n-torka XOR na određenim
> grupama bita.
Tačno. Ono što još nismo objasnili drugima je -- zašto je tako
lako napraviti unazad nešto što daje isti CRC. Pominjao sam,
treba znati malo matematike koja leži iza svega. ;)
Posmatrajmo jednačinu A / B = C sa ostatkom D. Ako nam neko da
B i D, potpuno je trivijalno naći neko A za koje važi gornja
jednakost, za C koje možemo da biramo sami. B je, u ovom
slučaju, tzv. generišući polinom, D je onaj broj koji se obično
zove CRC, a A je poruka, u ovom slučaju šifra. Varijacija koju
si ti predložio se opet svodi na A / B = C sa ostatkom D, gde
znamo brojeve B i A + D.
Toliko, među nama, apsolventima elektrotehnike, smer računarska
tehnika. ;)
algoritmi.139peca.st,
!-> Molim te, navedi mi jedan komercijalni
!-> paket koji kaže "rezultat transformacije
!-> ulazne lozinke je to_i_to". U slučaju da
!-> konkretan primer nemaš, diskusiju po ovom
!-> pitanju smatram završenom.
Ko ovde govori o "komercijalnim paketima i njihovim ulaznim šiframa" ?
Ovde govorimo o BBS softveru! A ti to nisi shvatio, nego si krenuo
u pogrešnom pravcu. No, sve i da govorimo o komercijalnom paketu,
on negde mora sačuvati "rezultat transformacije ulazne lozinke"
pa ga je moguće i naći, ako ga on već sam ne nudi. Ako ga nije moguće naći
(što je apsurdno) onda transformacija ima pomenuti kontra efekat.
Dalje, kod tih komercijalnih paketa, onaj ko zna algoritam i rezultat
transformacije dobijen korišćenjem tog algoritma teško će uspeti da otkrije
neku šifru koja daje isti rezultat, dok će, ako je korišćeni algoritam
ovaj tvoj, (kao što si i sam rekao) vrlo lako uspeti da pronađe šifru koja
"pasuje".
"Diskusiju po ovom pitanju smatram završenom."
Peđa.
algoritmi.140peca.st,
Teorema 1:
----------
(1 and 0) = 0; (1 and 1) = 1; $FF = 1111 1111;
=> ($FF and $xy) = $xy
Kraj teoreme.
!-> dummy := $ff and ord(data_pŠjĆ);
!-> data := $ff and ord( data_pŠjĆ );
Koja je svrha ovih redova osim da uspore malo čitav algoritam?
Osim toga, čemu služi dummy, kad se nigde drugo ne pominje?
!-> for i:=0 to 7 do
!-> inc( i );
!-> end;
Promena vrednosti brojača for ciklusa unutar ciklusa?
Zar se to koristi u jednom algoritmu koji pretenduje da bude
koristan i ozbiljan? Plus što ovo Inc (i) nije ni pod kakvim uslovom,
pa je ladno moglo for i := 0 to 3
!-> CRC := (CRC shl 8) or ((data shl 8) and $ff);
Posle ovakvog reda, prvih 8 bitova će sigurno biti 0!
(broj kad se šiftuje levo za osam mesta pripisaće mu se sa desna
osam nula. kad dva takva broja ORuješ, dobićeš opet broj za osam nula)
Znači, rezultat će praktično biti osmobitni.
Ako si već pokušavao da smisliš algoritam kojim ćeš nas zavarati
i navesti da poverujemo da je CRC, mogao si da smisliš nešto barem
malo pametnije od ovoga. Ovo što sam komentarisao su, moram tako da se
izrazim, glupe stvari koje bodu oči, svako će to primetiti. Ovo su samo
najočiglednije greške, ostale nisam ni pokušavao da pronađem iako
ih sigurno ima. Glavna zagonetka mi je šta si hteo da postigneš ovom
porukom?
!-> Ne znam šta će zoliki mentoL na sve ovo
!-> da kaže, ali stvar radi...
Kad bi ovo video zolikin mentor, verovatno bi ga odmah oborio.
Stvar radi - tu se apsolutno slažemo - jer ni jedna greška pri
kompajliranju nije prijavljena! Program je stvarno HAOS.
!-> TOLIKO OD MENE!
Puno ti se zahvaljujem u zolikino i moje ime, kao i u ime svih generacija
koje će videti ovu glupost.
!-> ps Nadam se da niko neće tražiti CRC-32... (:
Pretpostavljam da se sastoji od toga da tamo gde sad piše word
treba da piše longint, jel tako? No, ja ne umem da promenim program
tako, pa bih te molio da to ti učiniš.
Peđa.
P.S. Ovo bi trebalo da je konferencija sa najmanje šuma.
algoritmi.141ganta,
Evo dva programa koje mi je poslao drug iz CA.
Prevedite ih posebno i nazovite prvog 'pera', a drugog
'mika', ili kako god hocete.
Pera sifrira, tako sto cita standard input i pise standard
output, a ima samo jedan argument - broj od 1 do
2000000000. Taj broj je sifra. Mika desifrira, sa istim brojem.
Na primer, imate file x.txt koga treba sifrirati:
pera 33456 < x.txt > x1.txt
x1.txt je sifrirani file.
Da ga procitate, uradite
mika 33456 < x1.txt > x2.txt
x2.txt treba da bude isti kao x.txt.
ili da odmah dobijete na ekranu,
mika 33456 < x1.txt
Algoritam je trivijalan, ali za probijanje sifre treba par sati
rada vrlo brzih masina.
Napomena: mozda je potrebno par izmena za razne verzije C-ja.
=========== pera.c start =============
#include <stdio.h>
int tot;
long rseed;
/* svahilli translator A */
main(argc, argv)
int argc;
char *argvŠĆ;
š
int c;
tot = 126 - ' ' + 3;
sscanf(argvŠ1Ć, "%ld", &rseed);
while((c = getchar()) != EOF) š
c = cmprs(c);
c = radd(c, rnum());
c = expnd(c);
putchar(c);
ć
ć
radd(a, b)
int a,b;
š
int s;
s = a + b;
if (s > tot) s = s - tot - 1;
return(s);
ć
cmprs(c)
int c;
š
if(c == 'Đr') c = 0;
else if (c == 'Đn') c = 1;
else if (c == 'Đt') c = 2;
else if (c < ' ') c = 3;
else if (c > 126) c = 3;
else c = c - ' ' + 3;
return(c);
ć
expnd(c)
int c;
š
if(c == 0) c = 'Đr';
else if (c == 1) c = 'Đn';
else if (c == 2) c = 'Đt';
else if (c == 3) c = ' ';
else c = c + ' ' - 3;
return(c);
ć
rnum()
š
int ir;
rseed = rseed * 1103515245L + 12345L;
ir = (rseed >> 16) & 0x7f;
if(ir >= tot) ir = 7;
return(ir);
ć
=========== pera.c end =============
=========== mika.c start =============
#include <stdio.h>
int tot;
long rseed;
/* svahilli translator B */
main(argc, argv)
int argc;
char *argvŠĆ;
š
int c;
tot = 126 - ' ' + 3;
sscanf(argvŠ1Ć, "%ld", &rseed);
while((c = getchar()) != EOF) š
c = cmprs(c);
c = rsub(c, rnum());
c = expnd(c);
putchar(c);
ć
ć
rsub(a, b)
int a,b;
š
int s;
s = a - b;
if (s < 0) s = s + tot + 1;
return(s);
ć
cmprs(c)
int c;
š
if(c == 'Đr') c = 0;
else if (c == 'Đn') c = 1;
else if (c == 'Đt') c = 2;
else if (c < ' ') c = 3;
else if (c > 126) c = 3;
else c = c - ' ' + 3;
return(c);
ć
expnd(c)
int c;
š
if(c == 0) c = 'Đr';
else if (c == 1) c = 'Đn';
else if (c == 2) c = 'Đt';
else if (c == 3) c = ' ';
else c = c + ' ' - 3;
return(c);
ć
rnum()
š
int ir;
rseed = rseed * 1103515245L + 12345L;
ir = (rseed >> 16) & 0x7f;
if(ir >= tot) ir = 7;
return(ir);
ć
=========== mika.c end =============
algoritmi.142ndragan,
/ KAMATA = DUG * ( EXP( LN( 1 + STOPA ) / 30 ) ž DANI - 1 )
Jel ti ovo misliš da ugradiš negde u program? Za koji onda stepenuješ sa
_dani_ kad znaš da će to da se svede na exp(ln(_nešto_)*dani), pa ćeš
imati dvaput logaritam i eksponencijalnu, dušu dalo da duže radi i bolje
greši. Predlažem
KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 )
a pošto mnoge ljude, sa knjigovođama i bankarima na čelu kolone, boli
između ušiju kad ugledaju decimalni zarez, stopa će ti verovatno biti
pomnožena sa 100, tj izražena u procentima, pa zato
KAMATA = DUG * ( EXP( LN( 1 + STOPA / 100 ) * DANI / 30 ) - 1 )
...i to je jedina primenjiva formula, pošto je ona prva izbačena iz
upotrebe još 1987 - još tada ju je inflacija pregazila.
Drugi je zez što se baš i ne zna šta je u kom trenutku _dug_. Pajz'
primer:
1. dobio si platu 01.11
2. spizdio si sve 03.11, u minusu si
3. kupio si marke 04.11, probio si bonus
4. drugi deo plate 08.11, malo si u minusu
5. topli obrok 11.11, malo si u plusu
6. platio si pretplatu na struju 21.11, probio si bonus
7. ostatak plate 24.11, u plusu do kraja
Sad počinje seks. Slučaj jedan je jasan, imaš ono bede od pozitivne
kamate. Već slučaj dva nije jasan: da li si u minusu za sve što si
probio, ili ti se pripisala kamata od 1. pa si možda u plusu?
3. počinje ti kaznena kamata. šta je osnovica? samo čist dug, deo čistog
duga koji probija bonus, sa ili bez prethodno obračunate kamate na
minus?
...
7. ti misliš da si u plusu, ali nemaš pojma na koju kamatu se odakle
dokle i sa kojom osnovicom računala kamata na kamatu. Idućeg meseca
dobijaš izvod, i primećuješ da su brojke smešne, te zaboravljaš na sve.
algoritmi.143snemcev,
>> KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 )
Mala ispravka - umesto 30 treba da stoji broj dana u mesecu za koji se
obračunava kamata. Inače Jugobanka obračunava kamatu tako da ako si od
petog do desetog u minusu, jedanaestog ti knjiži na računu kamatu po
gornjoj formuli. Izuzetak je poslednji dan u mesecu kada se bez obzira
na to da li si još u minusu ili si izmirio dugovanje kamata knjiži.
algoritmi.144dr.grba,
>> ideji (konkretno u dr.grbinoj formuli za izradu CRCa). Zato smo ga
Šta pričaš, čoveče? Kakva moja formula za izradu CRCa? (((:
E, 'ajde da završimo sa ovim. Nikakvo krajnje rešenje nisam nudio,
i stvarno nije u redu da se više pozivate na moje ime kao na primer
lošeg algoritma. Po stoti put ponavljam da je taj algoritam primeren na
mestu i u okruženju na kome se koristi, i stvarno nema potrebe da
se dalje napucavamo.
algoritmi.145dr.grba,
>> Stvarno si me neprijatno iznenadio. Notacija "mantisa e eksponent"
>> je uobičajena za "floating point" brojeve (BASIC, Pascal, FORTRAN,
>> C,...). Operator stepenovanja ("ž" ili "**") uopšte ne postoji u
>> standardima Pascala i C-a. Bilo kako bilo, podrazumevao sam da svi
>> koji čitaju moju poruku znaju da protumače ono što piše, pa ovo je
>> konferencija PC.PROG, zar ne? Videvši da
Priznajem grešku i obećavam da te više neću provocirati.
Iako, sad se malo služiš krivinama. Moj previd, grešku, neznanje, kako
god hoćeš, sad koristiš da nadmoćno predstaviš svoju veštinu izlaganja
kroz nomenklature programskih jezika. Slažem se da to leži u jednoj
programerskoj konferenciji, ali se ne slažem sa načinom na koji pokušavaš
da me učiniš mizernijim nego što jesam. A sve je počelo od malo dobre
volje....
>> Glavno iznenađenje dolazi kad sam ti pogledao resume. Inženjer
>> informatike, pa još radi na EI-Bull mastodontu kao "sysop"!
Na EI-Bull mastodontu sam sysop, a ne "sysop", hteo ja to ili ne. Znam
dosta o toj mašini, iako sam jednog trenutka shvatio da u neke stvari
ne vredi ulagati koru velikog mozga i prestao da se nešto trudim. Moji
afiniteti su, eto, na drugoj strani, iako o svemu tome ovde nije reč.
>> Zaista me zanima (nije mi želja da te uvredim) u kojoj školi si postao
>> inženjer informatike? Koje programske jezike ste tamo učili?
Inženjer informatike sam postao na Višoj Školi za ekonomiju i informatiku,
današnjoj Višoj poslovnoj, kao treći u generaciji, sa prosekom 8,61. Prosek
uže stručnih predmeta mi je 9,5. Učili smo neke stvari koje su u suštini
valjane, iako je njihova implementacija prezentovana na predavanjima
odavno zastarela. Iako mislim da se ta škola može završiti a da se ne nauči
baš ništa, verujem da sam uspeo da pokupim tamo neka znanja koja mi dobro
dođu u poslu kojim se bavim. I zbog toga mislim da nije baš sasvim u redu
da nipodaštavaš moje zvanje. Ja ne znam šta si ti po struci, niti kakve
su ti reference. To mi zbilja nije ni bitno, to za mene nije princip
vrednovanja neke osobe. Jedino primećujem da se trsiš svojim znanjem,
iako ne baš konstruktivno.
>> Ja sam tolerantan prema formi, ne smeta mi ni višak zagrada ni
>> manjak blankova.
E, jebi ga, sad treba da branim i činjenicu da radim na kanti sa lošom
tastaturom!... ):
P.S. Jako mi je žao što sam se strahovito zarozao u tvojim očima, mada,
kad bolje razmislim, i to me zabole. Nadam se da ti više neću stajati na
žulj. Svakako, iako sam galamdžija, daću sve od sebe da ispunim ovo obećanje.
algoritmi.146dr.grba,
>> algoritama izaberem neki koji mi odgovara... Problem je samo što
>> ponuda i nije nešto naročito (molim dr.Grbu da se ne ljuti, zaista
>> sam zahvalan na predlogu rešenja problema).
Naravno da se ne ljutim na tebe. Ljutim se na one koji smatraju da
sam ponuđeni algoritam, koji je zbilja krajnje jednostavan i banalan,
predstavio kao konačno rešenje kriptografije u računarstvu dvadesetog
veka. I koji su sve ovo zamešateljstvo iskoristili da pokažu svoju
nadmoć i perfektnu erudiciju u ophođenju sa drugima.
Nadam se, Zoli, da ćeš uspeti da pronađeš prikladan algoritam za svoj
projekat. čao mi je što nisam na vreme povezao tvoje ranije poruke,
svakako onu banalnost ne bih predložio za takvu potrebu.
algoritmi.147debelijencija,
!=?> Najpre definišeš sve parametre, koji utiču na izlaznu
!=?> vrednost nekog procesa (konkretno rezultat utakNice), i to
!=?> je poželjno što više takvih para- metara zbog veće realnosti
!=?> i manje verovatnoće da ti se nešto "učini poznatim". Nakon
!=?> toga sedneš i odrediš odnose (verovatnoće) svakog procesa
!=?> pojedinačno, turiš u jednadžbu i eto - Smrt fašizmu,
!=?> sloboda:rad 1:0!
U redu je to, nego problem je ako hoćeš da gledaš utakmicu! Tj. ono
u Football Manageru 2, kada se utakmica stvarno igra, a ne prikazuju
se 5-6 predefinisanih akcija sa 2 moguća kraja (slično radi i The Manager
na PC-ju, ništa nije napredovao :). Mada i tu možeš tako, udri, kolika je
verovatnoća da preševa onog ispred sebe, ali izgleda malo glomazno... :)
U svakom slučaju, nemoj da se mučiš preterano :), to mi ionako nije na listi
prioriteta, jer ako ne završim PAUS2 skoro, ima da me umlate ovi omladinci sa
SEZAM-a... :)
algoritmi.148janko,
> Evo dva programa koje mi je poslao drug iz CA.
> Prevedite ih posebno i nazovite prvog 'pera', a drugog
> 'mika', ili kako god hocete.
> Pera sifrira, tako sto cita standard input i pise standard
> output, a ima samo jedan argument - broj od 1 do
> 2000000000. Taj broj je sifra. Mika desifrira, sa istim
> brojem.
Vrlo kilavo -- isti algoritam se vrlo lako prepravlja da se za
šifru koriste slova, reči ili čak, rečenice.
> Algoritam je trivijalan, ali za probijanje sifre treba par
> sati rada vrlo brzih masina.
Kako se probija, objavljeno je (ako se sećam) u poslednjim
Računarima. Za tekst koji je Dejan šifrovao, PC je radio par
desetina minuta, opet, ako se dobro sećam brojeva.
algoritmi.149janko,
> _dani_ kad znaš da će to da se svede na
> exp(ln(_nešto_)*dani), pa ćeš imati dvaput logaritam i
> eksponencijalnu, dušu dalo da duže radi i bolje greši.
> Predlažem
>
> KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 )
>
> a pošto mnoge ljude, sa knjigovođama i bankarima na čelu
> kolone, boli između ušiju kad ugledaju decimalni zarez,
> stopa će ti verovatno biti pomnožena sa 100, tj izražena u
> procentima, pa zato
>
> KAMATA = DUG * ( EXP( LN( 1 + STOPA / 100 ) * DANI / 30 )
> - 1 )
Ako već potežemo numeričku tačnost, improvizovanje stepenovanja
pomoću EXP / LN para daje daleko slabije rezultate od
korišćenja prave funkcije za stepenovanje, ako je ona dobro
realizovana.
algoritmi.150nikac,
Evo ga dobar 32-bitni CRC (nesto sporiji, ali bez konsultacionih tabela)
Cini mi se da ga je napisao ZZ, uz primer racunaja crc-a nekog fajla:
#include <stdio.h>
/* ------ 32-bitni CRC pocetak procedure ------ */
unsigned long updcrc (int c, unsigned long crc)
š
_asm š
xor dx,dx
mov ax,c
xor al,byte ptr crc
make:
shr dx,1
ror ax,1
jae decc
xor dx,0xedb8
xor ax,0x8320
decc:
loop make
mov bx,word ptr crc+2
mov cx,word ptr crc
mov cl,ch
mov ch,bl
mov bl,bh
xor bh,bh
xor dx,bx
xor ax,cx
ć
ć
/* ------ 32-bitni CRC kraj procedure --------- */
/* ------ Primer izracunavanja CRC nekog fajla ------ */
unsigned long crc_file(char *fname)
š
FILE *f;
unsigned long crc;
int c;
crc = 0xffffffffl; /* ima 8 f-ova, tj treba da ima :) */
if ( ( f=fopen(fname,"rb") ) == NULL )
return crc;
while ( ( c=fgetc(f) ) != EOF )
crc = updcrc(c,crc);
fclose(f);
return crc;
ć
/* ------ Kraj primera ------ */
Eto toliko od mene, nadam se da ce Zoliki i ostalima ovo fino sluziti...
algoritmi.151kale,
>> >> ...pa još radi na EI-Bull mastodontu kao "sysop"!
>> Na EI-Bull mastodontu sam sysop, a ne "sysop", hteo ja to ili ne.
Navodnike sam stavio zato što nisam bio siguran šta to znači u BBS
resume-u. U BBS žargonu "sysop" je ono što je na velikim sistemima "system
administrator". Na velikim sistemima postoji i "system operater". Nije mi
bila želja da omalovažim tvoj posao, koji god da je. Nažalost, baš je tako
ispalo. :(((
Pozdrav!
ps Odgovor na ostatak poruke u mail, ne spada u temu. :)
algoritmi.152ndragan,
/ function crc16( data_p:string; length:word ): word;
====
...i onda pomislim "šta je metnuo smajli u sred funkcije"
algoritmi.153ndragan,
/ Cilj je da predstavnici šifara budu ravnomerno razbacani po
/ prostoru, i da je prostor dovoljno velik, da postane iluzorno
Ono što sam dao je samo na brzaka ideja da se zakomplikuje život
eventualnom razbijaču algoritma; za ozbiljniji posao sledi to što si
rekao. Znam za slučajeve kad je dodatno komplikovanje postupka dalo
šifru koja se lakše razbija od prvobitne.
BTW, CRC nije bilo koji tridesetdvobitni broj. Mislim da je to neki iz
jedne određene klase polinoma u 0-1 algebri, te da ono "cyclic" ima veze
sa imenom klase. Pitanje je koliko u stvari ima CRC brojeva, mislim da
ih svakako ima manje od MaxLongInt.
algoritmi.154ndragan,
/ Ja danas gledao ima li u nekom od manuela VMS-a koji se polinom tačno
Pogledaj negde u System Security (VMS 4.2), čini mi se pred kraj druge
ili treće glave, ima oko strana ipo kako se računa CRC. Nemoj me držati
za reč, to je bilo pre pet godina :)
algoritmi.155djelovic,
> BTW, CRC nije bilo koji tridesetdvobitni broj. Mislim da je to neki iz
> jedne određene klase polinoma u 0-1 algebri, te da ono "cyclic" ima veze
> sa imenom klase. Pitanje je koliko u stvari ima CRC brojeva, mislim da
> ih svakako ima manje od MaxLongInt.
CRC je samo specifični HASH algoritam napravljen za detektovanje grešaka
pri prenosu/čuvanju podataka. Za potrebe transformacije lozinke je potpuno
neupotrebljiv jer se na osnovu njegovog rezultata lako dobija neka reč koja taj
rezultat daje.
Kao i svi dobri HASH algoritmi, i CRC pokriva potpuno i uniformno ceo opseg
brojeva za koji je napravljen.
P.S. Naglasak poruke je na terminologiji. Ono što zoliki treba je hash
algoritam koji je uz to i jednosmeran, a ne specifični CRC.
algoritmi.156dragisha,
-> Molim te, navedi mi jedan komercijalni paket koji kaže "rezultat
-> transformacije ulazne lozinke je to_i_to". U slučaju da konkretan primer
-> nemaš, diskusiju po ovom pitanju smatram završenom.
Komercijalni paket... Zovu ga Unix, tek odnedavno se taj rezultat
transformacije krije, a godinama je bio sasvim pristupačan. Kažeš cat
/etc/passwd i dobiješ rezultate ulaznih transformacija, potrudiš se malo
više i nađeš i sam algoritam. Postoje razni crack-eri koji će metodom
uzaludnih pokušaja da nabodu password, ali nijedan ne može da ga nađe nekom
ziher metodom u obrnutom pravcu.
A diskusija i jeste za završavanje. Dvije (i više:) grupe ljudi govore o
kruškama i jabukama. Brezveze:).
algoritmi.157dragisha,
-> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU....
Na nivou malog Perice, apsolutno!:))
algoritmi.158dr.grba,
>> -> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU....
>>
>> Na nivou malog Perice, apsolutno!:))
90% ljudi koji pristupaju računarima su na nižem nivou nego mali Perica.
Amin!
algoritmi.159zolika,
>> C Snippets. Beće na FFSu. Evo baš ću da zovem da uzmem ponovo (i da ti
>> uštedim trud)...
Neizmerno ću ti biti zahvalan...
algoritmi.160skerl,
ASM CRC calculation code
This unit provides three speed-optimized functions to compute (or continue
computation of) a Cyclic Redundency Check (CRC). These routines are
contributed to the public domain.
Each function takes three parameters:
InitCRC - The initial CRC value. This may be the recommended initialization
value if this is the first or only block to be checked, or this may be
a previously computed CRC value if this is a continuation.
InBuf - An untyped parameter specifying the beginning of the memory area
to be checked.
InLen - A word indicating the length of the memory area to be checked. If
InLen is zero, the function returns the value of InitCRC.
The function result is the updated CRC. The input buffer is scanned under
the limitations of the 8086 segmented architecture, so the result will be
in error if InLen > 64k - Offset(InBuf).
}
Interface
Function UpdateCRC16(InitCRC : Word; Var InBuf; InLen : Word) : Word;
{ I believe this is the CRC used by the XModem protocol. The transmitting
end should initialize with zero, UpdateCRC16 for the block, Continue the
UpdateCRC16 for two nulls, and append the result (hi order byte first) to
the transmitted block. The receiver should initialize with zero and
UpdateCRC16 for the received block including the two byte CRC. The
result will be zero (why?) if there were no transmission errors. (I have
not tested this function with an actual XModem implementation, though I
did verify the behavior just described. See TESTCRC.PAS.) }
Function UpdateCRCArc(InitCRC : Word; Var InBuf; InLen : Word) : Word;
{ This function computes the CRC used by SEA's ARC utility. Initialize
with zero. }
Function UpdateCRC32(InitCRC : LongInt; Var InBuf; InLen : Word) : LongInt;
{ This function computes the CRC used by PKZIP and Forsberg's ZModem.
Initialize with high-values ($FFFFFFFF), and finish by inverting all bits
(Not). }
Pozdrav,
Skerl.
algoritmi.161skerl,
Cyclic Redundancy Check
---------------------------------------------------------
This archive includes the following three files:
crc2.c Computes crc by bit shifting
crcfast.c Computes crc by table lookup
crctab.c Computes tables used in crcfast.c
crc.doc This file
The utilities crc2 and crcfast compute the cyclic redundancy checks
for both the crc-16 (used in arc files) and crc-ccitt (used in xmodem).
crcfast is faster than crc2. These routines compute the crc's for a
given file as a means of checking data integrity.
These routines compile without change under Turbo C. All are
short and illustrate the basic principles of crc calculations.
Pozdrav,
Skerl.
crc-c.zipalgoritmi.162niklaus,
(:> na PC-ju, ništa nije napredovao :). Mada i tu možeš tako, udri,
(:> kolika je verovatnoća da preševa onog ispred sebe, ali izgleda
(:> malo glomazno... :)
Ma znaš kako. U principu bi mogao da kretanje svakog igrača u napadu
da definišeš kretanje ukoso cik-cak (znaš kako izgleda šematski prikaz binarnog
drveta? E tako!). Možeš za svakog igrača da podesiš verovatnoću skretanja na
levo i na desno, mada je to već perverzija. Ako pak uradiš tako, prilično
realno možeš da prikažeš krilne igrače, centarfore...
Sličnu, ali malo komplikovaniju logiku primenjuješ na odbranbenog
igrača. Njemu možeš da uvedeš 4 smera (NW, NE, SW, SE, you know what I mean?).
Da se igrač u napadu i odgovarajući igrač iz odbrane (ovo "odgova-
rajući" možeš da izvučeš i postavki napada: 4-2-4, 5-3-2, ili kako već to ide),
ne bi baš žestoko mimoišli, valja definisati ili trenutak kada se igrač iz
odbrane "posvećuje" "svom" igraču, ili da jednostavno kretanje odbranbenog
igrača ne bude _baš_ slučajno.
Otprilike je to - to. Logika je prilično jednostavna, i poboljšanja
su poželjna...
(:niklaus:)
algoritmi.163niklaus,
(:> Šta pričaš, čoveče? Kakva moja formula za izradu CRCa? (((:
Ne uzbuđuj se! (:
Zar nisi primetio da je moj stav sve vreme bio srodan tvome, odn.
složili smo se da nisi napravio kakvo remek-delo, već si samo ponukao ljude
da stvaraju _pravu_ formulu za CRC...
(:niklaus:)
algoritmi.164niklaus,
(:> (Moja opaska #1:
(:> dummy : word; !!
(:> dummy := $ff and ord(data_pŠjĆ); !!
(:> => ($FF and $xy) = $xy
(:> Kraj teoreme.
Hvala za rupu na saxsiji, ali nisi video da je dummy tipa word, što
će reći da se preslikavaju samo "donjih" 8 bitova promenljive dummy...
(:> (Moja opaska #2: data, crc : word;)
(:> !-> CRC := (CRC shl 8) or ((data shl 8) and $ff);
(:>
(:> Posle ovakvog reda, prvih 8 bitova će sigurno biti 0!
Preporučujem ti da ponovo prelistaš žabarkapu... i data i CRC su opet
word-ovi...
(:> Ako si već pokušavao da smisliš algoritam kojim ćeš nas zavarati
(:> i navesti da poverujemo da je CRC, mogao si da smisliš nešto barem
(:> malo pametnije od ovoga. Ovo što sam komentarisao su, moram tako
(:> da se
Prijatelju, u redu si...
(:> #$*&%!šđ+>/č
NO COMMENT!
Kao što si već video originalni izvorni kod (u Cu) sam ti poslao na
mail. Budi toliko dobar pa ga ti prevedi zoliki...
(Komentar za ostale) Programčić koji sam sveo na Pascal nije baš
_identičan_ "onom" u Cu, ali za kodiranje šifara je dobar (u prevodu: nema
dečije bolesti, tipa malko promenite ulazni string, pa se isto toliko malo
menja i izlazna vrednost CRCa).
Inače, dotični program u C-u je tzv:
16 12 5
CCITT CRC 16 polinom : X + X + X + 1.
(:niklaus:)
algoritmi.165prvul,
ŮCRC je samo specifični HASH algoritam napravljen za detektovanje grešaka
Ůpri prenosu/čuvanju podataka. Za potrebe transformacije lozinke je potpuno
Ůneupotrebljiv jer se na osnovu njegovog rezultata lako dobija neka reč
Ů▄▄
Da ne bude zabune, CRC ukratko radi ovako: svaki niz od N bitova možemo
posmatrati kao polinom N-1-vog stepena (svaki bit je koeficijent uz
odgovarajući stepen) nad GF(2). Onda mi dodamo nekih K bita na tih N bita,
i to tako da dobijeni polinom bude deljiv unapred datim polinomom K-tog
stepena.
Dakle, da bismo konstruisali neki niz bita koji daje traženi CRC treba
samo da obrnemo postupak... imamo polinom generator G (to je onaj od K-tog
stepena) i imamo niz od K bita (polinom K-1-vog stepena P) koji predstavlja
CRC. Svi polinomi koji su mogli nastati CRC-ovanjem su tada (G-P)+G*N gde
je N proizvoljan polinom. Dobro, nisu baš svi ovi polinomi rešenja, jer
je uslov da donjih K bita tog polinoma budu nule, ali i to nije teško
postići... ukratko, CRC jeste one-way u tom smislu što je mala verovatnoća
da se pogodi baš ona šifra koja daje taj CRC, ali nije nikakav problem naći
makar jednu (ne nužno polaznu) šifru koja daje dati CRC.
algoritmi.166janko,
> Komercijalni paket... Zovu ga Unix, tek odnedavno se taj
> rezultat transformacije krije, a godinama je bio sasvim
> pristupačan. Kažeš cat /etc/passwd i dobiješ rezultate
> ulaznih transformacija, potrudiš se malo više i nađeš i
> sam algoritam. Postoje razni crack-eri koji će metodom
> uzaludnih pokušaja da nabodu password, ali nijedan ne može
> da ga nađe nekom ziher metodom u obrnutom pravcu.
Ako je algoritam poznat autoru programa za razbijanje, i još
ako je ulazni podatak tog programa rezultat transformacija
originalnog programa, program SIGURNO daje rešenje, zar ne?
Otkud onda znaš, da li "uzaludno pokušava" ili sprovodi svoj
plan?
Evo, matematički, opet, polazne osnove za razbijanje: recimo,
da imamo data 32 bita za koje treba izmisliti lozinku koja će ih
generisati, i algoritam kojima se iz proizvoljne lozinke generiše
tih 32 bita. Očigledno je da se rešavanje problema svodi na
samo rešavanje trideset i dve jednačine. Ne izgleda veliki
problem, naizgled? Današnji računari koji bi se koristili za
razbijanje su izuzetno brzi -- sistem od trideset dve jednačine,
makar i duge, ne izgleda previše velik...
Da se vratimo na Zolikin problem. Zolika je tražio "da se pamti
četiri bajta." Na HP-UX je rezultat transformacije u
/etc/passwd velik trinaest slova, tj. otprilike 9-10 bajtova.
To već izgleda malo sigurnije, ali, očigledno, ne dovoljno,
jer, eto, postoje i programi koji na tim juniks mašinama (koje
nisu mnogo brze, zar ne?) mogu da "unazad" izbunare lozinku.
Postavlja se pitanje, sa koliko je "javnih" bita potrebno
čuvati lozinku, da bi problem postao "pretežak" za razbijanje za
današnje rečunare? Idealno bi bilo, ne više nego što je dužina
prosečne lozinke. Problem je što se to SIGURNO može razbiti,
današnjom tehnologijom, ako se zna algoritam transformacije.
Hajde da odemo u drugu krajnost -- izmislimo neku jako dobru
transformaciju (već postoje) koja će nam kao rezultat dati puno
više bitova -- recimo 1024, koje ćemo ostaviti "javne."
Problem je tu, što se sada može pretpostaviti, za prosečnog
korisnika, da je lozinka koju koristi manja od, recimo,
dvadesetak slova, pa se opet rešava sistem od samo par stotina
jednačina.
Ako ste se nekad pitali, zašto sistem menadžere teraju da npr.
svakog dana menjaju lozinku, i, još, da lozinka ne bude kraća od,
recimo, nekoliko desetina slova, sad vam je verovatno
jasnije...
Zaključak je nedvosmislen -- jeste to lepo, kao cilj,
ostavljati SVIMA "na uvid" ono što je predstavlja lozinke, ali,
očigledno, takva zaštita nije neprobojna.
Primetite da je sam problem "ostavljanja prezentacije lozinke
javno" primetno različit od šifrovanja. Pri šifrovanju, nama
nepoznat tekst se modifikuje. Pri ostavljanju prezentacije
lozinke javno, mi znamo da treba da izmislimo nama nepoznat
tekst koji će dati nama POZNAT rezultat, pri čemu nas ne zanima
kakav je STVARNO nepoznat tekst, i pri čemu imamo relativno
kratak rezultat koji ciljamo!
Na kraju, šta bi Zolika trebalo da radi, da li, onda, uopšte da
implementira neki algoritam za transformaciju lozinke? Odgovor
je, ipak, DA. Kao što i ključevi čuvaju vrata, ali se vrata
mogu razbiti cela, (sa nadom da će to komšije čuti i pozvati
miliciju) tako, lozinke treba čuvati što je više moguće.
Pretpostavimo da sistem, ipak, ne radi kao Junkis -- ne kaže
svakom gostu "izvolte rezultate lozinki," već ih čuva u
fajlovima, koje možda može nekad neko neovlašćeno da pokuša da
pogleda, i da vidi, ali, ipak, i za to treba da se pomuči... U
tom slučaju je vrlo potrebno, da mu to ne bude dovoljno, već da
mora da, ako već nema program koji rešava baš takav slučaj,
angažuje nekog stručnjaka da bi od toga, do čega je došao,
generisao šifru. Već to može da bude dovoljno da, onaj koji se
namerio na razbijanje, odustane. Ili, ako je neka špijunska
služba (nema svako para da plaća sve to, na sreću) da primeni
druge, bezbolnije metode -- npr. prisluškuje telefonsku liniju,
baš dok kucamo šifru. :)
Naravno, sistem privilegija i zaštite fajlova treba da je
takav, da WRITE pristup do pomenutog fajla ima samo sistem
administrator. Na MS-DOS-u, to je, očigledno, isto, kritično
mesto. Može da se, verovatno, postigne vrlo pažljivo napisanim
but i svim ostalim programima i zaključavanjem (klasičnim)
mašine koja se butuje.
Do you want ultimate security? Don't buy computer! -- je
parafraza taga jednog inženjera koji se isključivo bavi
kompjuterskim zaštitama. Možda vam je sada jasnije zašto. :)
algoritmi.167bulaja,
│C Snippets
└───
R:\IBMPC\C\*.*
----------------------
snip0493 arj 162332 C-snippets 04/93, zbirka raznih C funkcija (source) #1
snip0493 a01 160019 C-snippets 04/93, zbirka raznih C funkcija (source) #2
algoritmi.168peca.st,
!-> (:> dummy : word;
!-> !! (:> dummy := $ff and ord(data_pŠjĆ);
!-> !!
!-> Hvala za rupu na saxsiji, ali nisi video
!-> da je dummy tipa word, što će reći da se
!-> preslikavaju samo "donjih" 8 bitova
!-> promenljive dummy...
Svašta od tebe. Znači, ako je dummy tipa word, i ja napišem
dummy := 1 onda će samo jedan bit biti promenjen?!???! Ostalih
15 ostaje isto, jel? Ovde dummy postaje ord (data_pŠjĆ) bez sumnje.
!-> (:> !-> CRC := (CRC shl 8) or ((data shl 8) and $ff);
!-> (:> Posle ovakvog reda, prvih 8 bitova će
!-> sigurno biti 0!
!->
!-> Preporučujem ti da ponovo prelistaš
!-> žabarkapu... i data i CRC su opet
!-> word-ovi...
žabarkapu nisam nikada prelistavao ni usmeno ni pismeno,
a nemam ni nameru. Za sada se dobro držim, što se za tebe ne
bi reklo. Lepo sam napisao: prvih 8 bitova će postati 0!
CRC shl 8 vraća 16 bitova od kojih su prvih 8 nula, bez sumnje.
data shl 8 takođe.
16 bitova od kojih su prvih osam nule, kad se enduju sa $ff
daće 16 bitova koji su svi nula, bez sumnje!
Evo primera:
1110 0111 0000 0000 (data shl 8)
and 0000 0000 1111 1111 ($ff)
-------------------
0000 0000 0000 0000
Znači radimo (CRC shl 8) or 0 = (CRC shl 8)
Baš kao što sam napisao: prvih osam bitova je nula.
!-> Prijatelju, u redu si...
Ja sam za sada u redu, hvala na pitanju.
!-> Budi toliko dobar pa ga ti prevedi zoliki...
Da prevodim ono đubre? Nisam lud da trošim vreme na to.
Usput, jedino mi još nisi objasnio čemu služi promenljiva dummy?
!-> (Komentar za ostale) Programčić koji sam
!-> sveo na Pascal nije baš _identičan_
!-> "onom" u Cu, ali za kodiranje šifara je
!-> dobar (u prevodu: nema dečije bolesti,
!-> tipa malko promenite ulazni string, pa se
!-> isto toliko malo menja i izlazna vrednost
!-> CRCa).
E, vidi se kolko znaš o CRCu. Pogledaj malo CRC32 što je poslao nikac.
Promeni jedno slovo, dobićeš totalno drugačiji broj!
Ovaj "tvoj" nazovi CRC16 za ulazne stringove 0 .. 9 daje
samo dve različite vrednosti, slično je ako probaš i sa nekim drugim vrlo
sličnim stringovima, davaće iste vrednosti.
žudi me kako uspevaš da i posle skrenute pažnje na te greške i dalje
praviš iste previde, a još i da ih braniš i pokušavaš da me uveriš da
je 2 + 2 = 5.
Peđa.
algoritmi.169prvul,
Ůda imamo data 32 bita za koje treba izmisliti lozinku koja će ih
Ůgenerisati, i algoritam kojima se iz proizvoljne lozinke generiše
Ůtih 32 bita. Očigledno je da se rešavanje problema svodi na
Ůsamo rešavanje trideset i dve jednačine. Ne izgleda veliki
Ůproblem, naizgled? Današnji računari koji bi se koristili za
Ůrazbijanje su izuzetno brzi -- sistem od trideset dve jednačine,
Ůmakar i duge, ne izgleda previše velik...
Ů▄▄
Prvo, sistem od tih 32 jednačine ne mora da bude linearan, tako
da opšta metoda za njegovo egzaktno rešavanje ne mora postojati.
Drugo, funkcije koje bi u tim jednačinama figurisale sigurno nisu
diferencijabilne pa čak ni neprekidne, tako da otpada rešavanje
bilo kojim numeričkim metodom. Ostaje samo nasumični postupak, koji
se može optimizovati za date jednačine, ali opet će za traženje
šifre koja daje ta 32 bita morati da se proba nešto reda 2**32,
dakle to sa jednačinama je samo lepa komplikacija, ali ništa ne
pomaže da se provali šifra (osim ako šifru generiše jako glup
algoritam pa jednačine postanu linearne).
Naravno, to ne znači da je 2*32 za današnje računare jako veliki
broj... nije... ali posmatrajmo sledeći problem: algoritam za
dobijanje tog 32-bitnog broja se, recimo, izvršava 0.1 sec. To
pri proveri šifre nije veliki problem (korisnik od trenutka
kucanja lozinke do odziva sistema čeka 1 sec). Međutim, neko ko
hoće da provali tu šifru mora da proba reda 2**32 šifara, a to
puta 0.1 sec je već pozamašno vreme (13 i kusur godina). Ako
tehnologija napreduje pa računari budu 100 puta brži, samo
treba naći algoritam koji bi se opet izvršavao za 0.1 sec i kraj.
Opet, i sada se da naći npr. 100000 puta brži računar, pa
se ova šifra može provaliti za sat-dva. E, ako je neko voljan
da utroši sat vremena na takvom računaru da bi provalio lozinku
na mom BBS-u koji radi na 100000 puta sporijem računaru, neka
mu je :)
Ako se radi ne o BBS-u već o pristupu nekim zaista osetljivim
(top secret :) podacima, onda se koriste Message Digest algoritmi
i to niko živ ne može da probije i kraj priče (btw. nisu ti MD
sistemi tako spori čak ni za BBS primene, ali ipak ne preterujmo).
algoritmi.170ganta,
> Kako se probija, objavljeno je (ako se sećam) u poslednjim
> Računarima. Za tekst koji je Dejan šifrovao, PC je radio par
> desetina minuta, opet, ako se dobro sećam brojeva.
Hvala, javiću mu da je provaljen :)
algoritmi.171dragisha,
-> Ako je algoritam poznat autoru programa za razbijanje, i još
-> ako je ulazni podatak tog programa rezultat transformacija
-> originalnog programa, program SIGURNO daje rešenje, zar ne?
-> Otkud onda znaš, da li "uzaludno pokušava" ili sprovodi svoj
-> plan?
On sprovodi plan koji se zasniva na tome (kvaka) da je korisnik lozinku
napravio sa kombinacijom riječi iz riječnika koji cracker ima na
raspolaganju i na nadi crackera da je tačno pretpostavio pravilo koje je
korisnik upotrijebio za kombinovanje tih riječi. To ziher radi za naprimjer
moju lozinku dragisha1, oh_my_god i slične. Zanima me kako bi razbio
passworde 'Poleksija' ili 'dje_si_ojtra'.
SUS, takvi programi se zasnivaju na slabostima sistema koje se daju
izbjeći. Nema crackera koji SIGURNO daje rješenje.
-> jer, eto, postoje i programi koji na tim juniks mašinama (koje
-> nisu mnogo brze, zar ne?) mogu da "unazad" izbunare lozinku.
Nisam čuo za nešto ovakvo. Na šta misliš?
algoritmi.172dragisha,
-> >> -> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU....
-> >>
-> >> Na nivou malog Perice, apsolutno!:))
->
-> 90% ljudi koji pristupaju računarima su na nižem nivou nego mali Perica.
Optimisto:), ima njih i čitavih 98%, a neki se zovu stručnjacima.
Po Marfiju, na instalaciji do koje ti bude stalo da ne pukne naći će se
upravo veliki Perica.
algoritmi.173debelijencija,
!=?> Ma znaš kako. U principu bi mogao da kretanje svakog igrača
!=?> u napadu da definišeš kretanje ukoso cik-cak (znaš kako
!=?> izgleda šematski prikaz binarnog drveta? E tako!). Možeš za
Tja, ovo je malko ograničeno... Ipak, napadači se malo i vraćaju,
pa dodavanja... Nije elementarno, probavao sam ja to da izvedem,
naravno idejno, o programu nisam ni razmišljao ozbiljno, i dođeš
do jedno pet šest situacija pred kojima samo možeš da kažeš: GU! :)
!=?> centarfore... Sličnu, ali malo komplikovaniju logiku
!=?> primenjuješ na odbranbenog igrača. Njemu možeš da uvedeš 4
!=?> smera (NW, NE, SW, SE, you know what I mean?). Da se igrač u
Za odbrambene je malo jednostavnije... On jednostavno juri najbližeg
i gleda da mu uzme loptu, a ako ne može, da ga faulira. Stvarno nije
preterano teško.
Ali, ono što zanemaruješ, je ujedno i najvažnija stvar: SREDINA!
Tamo se odlučuju sve utakmice, i kretanje igrača na tome mesto je
zaosta zavisno od mnooogo faktora... Tamo nešto pametno smisliti
zaista i jeste vrlo teško...
Sećam se da je u Football Manageru 2, to bilo stvarno očajno
glupo rešeno. Oni iz sredine jednostavno samo voze napred, nema dodavanja,
a ako ne može da prođe, onda proba da je dune napred. Tužno. :(
Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo! :)
algoritmi.174niklaus,
(:> Tja, ovo je malko ograničeno... Ipak, napadači se malo i vraćaju,
(:> pa dodavanja... Nije elementarno, probavao sam ja to da izvedem,
Ma ništa, onda uvedi i njima mogućnost (taktičkog) vraćanja iz napada.
(:> Ali, ono što zanemaruješ, je ujedno i najvažnija stvar: SREDINA!
(:> Tamo se odlučuju sve utakmice, i kretanje igrača na tome mesto je
(:> zaosta zavisno od mnooogo faktora... Tamo nešto pametno smisliti
(:> zaista i jeste vrlo teško...
Pa "sredini" se najpre posveti preko početnog rasporeda igrača, nakon
čega usleđuje "podbacivanje" i trčanje za loptom u stilu "muve na govno". ((:
Zezam se.
Uopšte smatram da bi mogao da svakom igraču u svakoj od taktičkih
postava (5-3-2, 4-2-4, Lotus123...) mogao da pridružiš "polje dejstva". Pod
time podrazumevam deo terena u okviru koga će se igrač kretati, dok ne bude
fauliran, bez dodavanja sledećem igraču. "Polja dejstva" susednih igrača, po
mojoj proceni, bi trebalo da se seku po nekih 40% saigračevog polja dejstva,
tako da su moguće značajnije promene postave u toku napada (odbrane).
Dalje, u okviru tih polja valja definisati dovoljno realne algoritme
kretanja. Poželjni parametri:
1) blizina odgovarajućeg suparničkog igrača (na osnovu čega će pomak
između dva proračuna pozicije biti veći)
2) blizina najbližeg saigrača u smeru _napad_ (na osnovu čega se pove-
ćava verovatnoća da u sle dećem koraku izvrši "pas")
3) konfiguracija (raspored) kompletne suparničke odbrane (više odbran-
benih igrača na levom krilu prouzrokuje povećanje verovatnoće za skretanje
udesno u sledećem koraku)
4) ...
Može se dodavati još uslova za finije doteravanje formule kretanja,
kao što se u slučaju prvog parametra može uvesti dodatni ulazni parametar, da
se veličina pomaka smanjuje sa brojem saigrača-napadača i sl.
(:> Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo! :)
Nema se na čemu...
Sve ovo što ovde baljezgam je iz malog mozga, a ne nešto o čemu sam
napisao zadnje tri knjige. Ja ovde glumim usmerivača tvojih ideja, a ti si
prava radna snaga. (;
(:niklaus:)
algoritmi.175zolika,
>> Da se vratimo na Zolikin problem. Zolika je tražio "da se pamti
>> četiri bajta." Na HP-UX je rezultat transformacije u
>>/ etc/passwd velik trinaest slova, tj. otprilike 9-10 bajtova.
>> To već izgleda malo sigurnije, ali, očigledno, ne dovoljno,
Dobro, dobro, može i više bajtova, pa nećemo se sporiti oko bajt-dva :-)
algoritmi.176dr.grba,
>> Pa "sredini" se najpre posveti preko početnog rasporeda igrača,
>> nakon čega usleđuje "podbacivanje" i trčanje za loptom u stilu
>> "muve na govno". ((:
Jel' može ovo malo da se preseli tamo gde mu je mesto? Ovde je reč o
programiranju, mahom na PC mašinama. Pa ako tražite algoritme programiranja,
onda OK, a ako tražite algoritme strategije igranja fudbala, onda tome
ovde nije mesto.
Modulatore, probudi se!
algoritmi.177d.petrovic,
Ă> (:> Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo!
Ă> :)
Ă>
Ă> Nema se na čemu...
Ă> Sve ovo što ovde baljezgam je iz malog mozga, a ne nešto o čemu
Ă> sam napisao zadnje tri knjige. Ja ovde glumim usmerivača tvojih
Ă> ideja, a ti si prava radna snaga. (;
Mogli bi da ovo nastavite kroz mail ili u conf igre. Zar nemati ni
malo milosti i pristojnosti?
algoritmi.178niklaus,
(:> Dobro, dobro, može i više bajtova, pa nećemo se sporiti oko
(:> bajt-dva :-)
Nego, jel' valja onaj 32-bitni (upravo 4 bajta koja tražiš) algoritam,
koji ti poslah?
(:niklaus:)
algoritmi.179ndragan,
/ Ako već potežemo numeričku tačnost, improvizovanje stepenovanja
/ pomoću EXP / LN para daje daleko slabije rezultate od
A tek kombinacija Exp(ln ...) ** ...
Moj princip je da štogod programski jezik ima ugrađeno, sigurno će biti
brže i tačnije nego da ga simuliram.
algoritmi.180ndragan,
/ Inženjer informatike sam postao na Višoj Školi za ekonomiju i
/ informatiku,
Nisi ni loš s obzirom na školu ;)
Je li, koliko je bilo vanrednih na jednog redovnog?
NHF, ali smatram da je programiranje nešto što nije trebalo davati
ekonomistima u ruke, a pogotovu ne studirati ga na ekonomiji. Iz
priloženog tebe vidim da si uspešno eskivirao ovu anomaliju našeg
školstva, što za većinu kolega koji su završili studije na ekonomskim
fakultetima, ne mogu da kažem.
O ovome je bilo već reči, pa da ne pravimo replay, a?
algoritmi.181ndragan,
/ resume-u. U BBS žargonu "sysop" je ono što je na velikim sistemima
/ "system administrator". Na velikim sistemima postoji i "system
/ operater". Nije mi
To zavisi od proizvođača. Big Blju je imao, valjda, sistem programera i
sistem operatera; na vaksu postoji sistem menadžer i sistem operater,
itd. Ovi nazivi su se provlačili čak i kroz sistematizacije radnih
mesta, što je dovodilo do dobrih zabuna kad je šef erca odrastao na aj
bi emu pa kupio vahu, a onu artiju napravi po plavom standardu. Ne bih
se čudio da se kod Hanibala to zove Sysop.
algoritmi.182janko,
> Drugo, funkcije koje bi u tim jednačinama
> figurisale sigurno nisu diferencijabilne pa čak ni
> neprekidne, tako da otpada rešavanje bilo kojim numeričkim
> metodom. Ostaje samo nasumični postupak, koji se može
> optimizovati za date jednačine, ali opet će za traženje
> šifre koja daje ta 32 bita morati da se proba nešto reda
> 2**32
To je samo četiri milijarde pokušaja. Što je još lepše, baš ako
su nasumični, pokušaji su nezavisni -- ne moraju da se dodele
istom procesoru, čak ni istom računaru...
U svakom slučaju, četiri milijarde je opet dosta manje od npr.
1e64, (sve 10-slovne lozinke, npr.) Eto, i Juniks je koristio
duplo više bajtova, pa su ga "razvaljivali." Da li su algoritmi u
Juniksu stvarno toliko loši, da se samo zato lako provaljuju?
U svakom slučaju, imamo, dakle, kristalizovanu ideju, sada: cilj
nam je da mogući "sistem jednačina" ne može da se rešava nekim
"kraćim metodama" od pokušaja redom. Znači, samo da smislimo
funkciju koja to zadovoljava, odredimo koliko je pokušaja
nedostižno za današnje računare -- i rešismo problem.
I dalje mislim da je sigurnije ako nema varijante "izvolte
rezultat transformacije lozinke," na sistemu...
> Ako se radi ne o BBS-u već o pristupu nekim zaista
> osetljivim (top secret :) podacima, onda se koriste
> Message Digest algoritmi i to niko živ ne može da probije
> i kraj priče (btw. nisu ti MD sistemi tako spori čak ni za
> BBS primene, ali ipak ne preterujmo).
Ali ti dajdžesti su znatno duži od četiri bajta?
algoritmi.183dejanr,
>> I dalje mislim da je sigurnije ako nema varijante "izvolte
>> rezultat transformacije lozinke," na sistemu...
Svakako. Ako čovek već mora da padne u jamu, ne mora je samom sebi
iskopati ;) Dakle, trebalo bi imati dobar algoritam kojim se napadaču
otežava da, ako bi mu šifrat bio poznat, nađe lozinku koja odgovara
tom šifratu. A onda još i šifrat sakriti od "posetioca", čime se sigurnost
dalje povećava.
Dakle, sve znamo, samo nam još treba dobar algoritam ;)
algoritmi.184janko,
> Dakle, sve znamo, samo nam još treba dobar algoritam ;)
Ja (da budem skroman: mislim da) ga znam. Tačnije, znam postupak,
za koji ne nalazim slabosti kakve sam našao u drugim predlozima
koji su se ovde pojavljivali. Ideja je prosta, a da bi se
realizovala, moraju se, naravno, koristiti tekovine naučnika koji
su se bavili srodnim problemima.
I, nešto, imam utisak da nisam jedini u ovoj temi, koji bi to
umeo da izvede... Neću da kažem sa kog su faksa, oni na koje
sumnjam da znaju. ;)
Dobar deo rešenja se krije u već postojećim porukama!
algoritmi.185peca.st,
!-> I, nešto, imam utisak da nisam jedini u ovoj temi, koji bi to
!-> umeo da izvede...
Ne moraš da budeš jedini da bi bio prvi. :)
So, ajde ti to pošalji bez tolke mistifikacije. :)
Peđa.
algoritmi.186zolika,
>> Nego, jel' valja onaj 32-bitni (upravo 4 bajta koja tražiš) algoritam,
>> koji ti poslah?
>>
>> (:niklaus:)
Poslužiće, zahvaljujem.
algoritmi.187janko,
> !-> I, nešto, imam utisak da nisam jedini u ovoj temi,
> koji bi to !-> umeo da izvede...
> bez tolke mistifikacije.
Nema mistifikacije -- na osnovu dosadašnje priče, CRC algoritam
nije za to. Mesidž dajdžest algoritmi se, takođe, dizajniraju sa
drugim ciljem -- da dve poruke ne mogu da imaju isti "potpis,"
a ne da se od nekog dajžesta ne može lako napraviti BILO KAKVA
poruka (mada je vrlo moguće da neki ima i tu osobinu, u kom
slučaju se može koristiti).
Šta nam ostaje? Kvalitetni algoritmi konvencionalne
kriptografije, (znate oni, što se pišu silne knjige o njima,
radovi... ;) ) kojima je posao da onemoguće upravo ono što i
mi želimo da onemogućimo -- "odmotavanje" unazad, MAKAR i na
osnovu parčeta poznatog teksta, da bi se došlo do šifre ili,
bar, "semena" koje je njen rezultat. Dakle, pristupna lozinka
mora da inicira algoritam kojim će se nešto, što će se posle
proveravati, da li je isto, šifrovati. Rezultat šifrovanja se
jedini pamti. Tako bih ja to radio.
Ako to dobro primenite, po meni, tajne službe će radije
organizovati prepad vašeg računara, prisluškivanje linija dok
kucate lozinku ili nešto slično, nego što će raditi na
provaljivanju pristupne lozinke.
algoritmi.188djelovic,
U konferenciji NOVOSTI, poruka 4.822 se nalazi opis jednog jednosmernog
HASH algoritma. Na žalost, čini se da je previše glomazan za zolikine potebe
:(.
algoritmi.189janko,
Vi koji ste se prihvatili problema "sigurne reprezentacije
pristupne lozinke," pogledajte:
> ===============================
> 4.822 NOVOSTI.4:microb
Tu se izlaže, između ostalog, SHA algoritam, za dobijanje heš
funkcije od date poruke. Ako smo zaključili da CRC32 prvo daje
premalo bita, a, drugo, da je CRC uopšte lako "provaljiv," onda
eto lepog predloga kako dobiti neki broj, reprezent neke
poruke, koji ima puno više bita i koji je "tvrđi" (daje 160
bita).
Da li je on dovoljan da bude reprezent lozinke, tj. da li
obezbeđuje i da se (sa gledišta najjačih kompjutera današnjice i
bliske budućnosti) ne može rekonstruisati od broja NIKAKVA poruka
koja će dati isti broj, ne znam. Ali, jak konvencionalni metod
preko ovih 160 bita je, po meni, sigurna dobitna kombinacija.
algoritmi.190kriss,
˙˙ HASH algoritma. Na žalost, čini se da je previše glomazan za
Ajd sad ja vas da pitam osnovno :)
Kakav je to HASH algoritam? :)
algoritmi.191niklaus,
(:> Ako smo zaključili da CRC32 prvo daje premalo bita, a, drugo,
(:> da je CRC uopšte lako "provaljiv," onda
Zaključili? Ja nisam.
Molim te pokaži (i dokaži) kako to da je lako provaljiv?
Zašto se koristi u popularnom protokolu ZModemu (i svim manje popu-
larnim posle njega)?
Jednom sam već, nekako apstraktno, rekao da se za 100-njak godina
intenzivnog korišćenja modema korisniku neće desiti da ZModem-u "promakne"
neki "šum-bit". Pitaj Boga na šta će komunikacije da liče za već 10-ak godina.
(:niklaus:)
algoritmi.192dejanr,
>> > Ako smo zaključili da CRC32 prvo daje premalo bita, a, drugo,
>> > da je CRC uopšte lako "provaljiv," onda
>>
>> Zaključili? Ja nisam.
>> Molim te pokaži (i dokaži) kako to da je lako provaljiv?
>> Zašto se koristi u popularnom protokolu ZModemu (i svim manje popu-
>> larnim posle njega)?
CRC32 je, po meni, vrlo dobar za ono za šta se koristi - zaštita od greške
pri prenosu. Međutim, očito ima premalo bitova za "ovo drugo", tj.
zaštitu od namernog napada.
>> Jednom sam već, nekako apstraktno, rekao da se za 100-njak godina
>> intenzivnog korišćenja modema korisniku neće desiti da ZModem-u
>> "promakne" neki "šum-bit".
Hmmm... osećam se jako matoro :) Meni je bar jednom download sasvim
normalno prošao, kad ono greška u ZIP-u. Pošto sam slučajno još bio
on-line kada sam grešku primetio, ja preimenujem PAD pa ga ponovo
skinem, kad ono razlikuju se u podosta bajta jednog sektora. A CvRC,
verovatno, isti.
Verovatnoća jeste mala, ali mislim da nije baš toliko mala!
algoritmi.193kale,
>> Međutim, očito ima premalo bitova za "ovo drugo", tj. zaštitu od namernog
>> napada.
Nije greda u malo bitova, to bi se dalo povećati, nesreća je što bi se
dao iskonstruisati bez proveravanja značajnog dela mogućih originala. Ako
bi imali algoritam koji radi, broj bitova bi verovatno bio stvar
implementacije.
algoritmi.194peca.st,
!-> Šta nam ostaje? Kvalitetni algoritmi konvencionalne
!-> kriptografije, (znate oni, što se pišu silne knjige o njima,
Ok. E, sad kad bi još imao neki primer za to - pa gde bi nam
bio kraj. :))
Peđa.
algoritmi.195janko,
> (:> Ako smo zaključili da CRC32 prvo daje premalo bita, a,
> drugo, (:> da je CRC uopšte lako "provaljiv," onda
>
> Zaključili? Ja nisam.
Tvoj problem. ;) Nisi pažljivo čitao.
> Molim te pokaži (i dokaži) kako to da je lako provaljiv?
Brkaš kontekste. Pričali smo o algoritmu za reprezentaciju
pristupnih lozinki sistemu, a ne za proveru "napada šuma."
Baš u ovoj temi, skoro, pojavila su se čak dva (doduše, sa
istom idejom) dokaza da je CRC za te primene izuzetno lako
provaljiv.
> Zašto se koristi u popularnom protokolu ZModemu (i svim
> manje popu- larnim posle njega)?
Zato što tu služi svrsi detekcije šum bitova, uz određena
ograničenja koja imaju smisla u datim realnim uslovima.
> Jednom sam već, nekako apstraktno, rekao da se za 100-njak
> godina intenzivnog korišćenja modema korisniku neće desiti
> da ZModem-u "promakne" neki "šum-bit".
CRC32 detektuje SVAKI šum bit, ako je razmak između prvog i
poslednjeg šum bita u poruci koju štiti manji od trideset dva
bita. Preko toga, nije dizajniran da obavezno detektuje, ali,
nekad mu uspe.
algoritmi.196janko,
> kad bi još imao neki primer za to - pa gde bi
> nam bio kraj. :))
Kamo lepe sreće, za to "gde bi nam bio kraj." Imam "neki primer
za to," a i svi ostali -- ceo sors PGP-a je, ako se sećam, u
nekom Sezamovom direktorijumu. Ali ne nadajte se da je to nešto
što ide u tri reda. ;) Kvalitet se ne postiže bezbolno.
algoritmi.197janko,
> Kakav je to HASH algoritam? :)
Heš funkcijama, ili, našim terminima, funkcijama rasutog
adresiranja, obezbeđuje se, obično, što ravnomernije
"rasipanje" većih ulaznih veličina u neki manji prostor. Ove
funkcije su jedan od fundamentalnih metoda u današnjoj
računarskoj tehinci.
algoritmi.198janko,
>>> Međutim, očito ima premalo bitova za "ovo drugo", tj.
>>> zaštitu od namernog napada.
>
> Nije greda u malo bitova, to bi se dalo povećati, nesreća
> je što bi se dao iskonstruisati
...neki ekvivalent originala...
> bez proveravanja značajnog dela mogućih originala.
algoritmi.199paki,
> Hmmm... osećam se jako matoro :) Meni je bar jednom download sasvim
> normalno prošao, kad ono greška u ZIP-u. Pošto sam slučajno još bio
Mi 2 :)
algoritmi.200slom,
Evo ga jedan program a vi probajte da otkrijete koji mi je password.
Ne kazem da je funkcija dobra/losa jer ni sam ne znam, jednostavno
iskopao sam parce koda, malko ga prepravio pa da vidimo.
Username: slom
Password: <- ovo treba da otkrijete
Rezultat transformacije je: swdrtpgzb
uslovi:
username - minimalno 3, maksimalno 10 slova (mala=velika)
password - minimalno 3, maksimalno 10 slova+cifara (mala<>velika)
sm
convert.zipalgoritmi.201prvul,
Ů Evo ga jedan program a vi probajte da otkrijete koji mi je password.
Ů▄▄
A kada sam hteo da napišem FAQ o kriptografiji, kompresiji i sličnim
stvarima rekli su da je malko preterano... :(
Dakle, nemojte slati programe uz poruke sadržaja sličnog citiranom.
Opišite lepo algoritam pa ćemo ga onda analizirati i videti koliko je
dobar i za šta. Ako pošaljete samo program, treba da znate nekoliko
stvari:
1) Ako bude potrebno, iz svakog programa će se izvući algoritam, tako
da tajenje algoritma nije nikakva zaštita od pravih hakera.
2) Program koji priložite jako malo ljudi će uopšte hteti da dl-uje
(ja sigurno ne), a još manje da ga razbija... nema motiva:
a) materijalno se tim razbijanjem ne dobija ništa
b) neće se proslaviti time
c) nije izazov
Ovo pod b) i c) je iz prostog razloga što neko ko je razbio zaštite
nekoliko svetski poznatih paketa nema razloga da "poene" nabija na nečijim
amaterskim pokušajima, a baš takvih se treba plašiti.
Sve u svemu, ako hoćete da napišete algoritam pa da ga "evaluiramo", ok.
Ako nećete, onda algoritam verovatno nije dobar, jer dobar algoritam je
po pravilu onaj koji štiti i onda kada je poznat.
algoritmi.202kale,
>> CRC32 detektuje SVAKI šum bit, ako je razmak između prvog i
>> poslednjeg šum bita u poruci koju štiti manji od trideset dva
>> bita. Preko toga, nije dizajniran da obavezno detektuje, ali,
>> nekad mu uspe.
Da mi je tu sveska iz predmeta "Osnove Računarskih Telekomunikacija",
sad bih se ja "setio" garancija koje daje tridesetdvobitni CRC koji je tada
koristio USA DOD (Department Of Defence).
Ovako, po sećanju, mislim da detektuje sve greške gde je promenjeno do 5
bita i sve greške gde je promenjen neparan broj bita.
algoritmi.203slom,
OK, nije mi bila namera da krijem algoritam.
Evo ga ide i source.
sm
PS: dakle koji je password ?
convert.calgoritmi.204debelijencija,
!=?> Mogli bi da ovo nastavite kroz mail ili u conf igre. Zar
!=?> nemati ni malo milosti i pristojnosti?
Milost? Pristojnost? žemu te teške reči?
Naime, ovde se raspravlja o tome koji su principi za pravljenje jedne
simulacije igranja fudbala. Jednom rečju, pokušavamo da pronađemo
_algoritam_ za to. Zar i pisanje igara ne spada pod pisanje programa?
I to su takođe algoritmi! Dakle, koliko mi se čini, mi smo pogodili temu,
a vi niste ni čitali te poruke... :(
Ako nisam u pravu (a jesam :) neka me moderator, ili neki drugi nadležni
ispravi.
algoritmi.205janko,
>>> CRC32 detektuje SVAKI šum bit, ako je razmak između
>>> prvog i poslednjeg šum bita u poruci koju štiti manji od
>>> trideset dva bita. Preko toga, nije dizajniran da
>>> obavezno detektuje, ali, nekad mu uspe.
>
> Da mi je tu sveska iz predmeta "Osnove Računarskih
> Telekomunikacija", sad bih se ja "setio" garancija koje
> daje tridesetdvobitni CRC koji je tada koristio USA DOD
> (Department Of Defence).
I ja sam pisao po sećanju. I nastavljam, tako mi je lakše, a
dovoljno je...
> Ovako, po sećanju, mislim da
> detektuje sve greške gde je promenjeno do 5 bita i sve
> greške gde je promenjen neparan broj bita.
Evo, preciznije: ovaj CRC32, koji se naširoko koristi, (mislim
da je neki standard, mrzi me da jurim) detektuje sve greške u
kojima je prvi bit greške razmaknut od poslednjeg za manje ili
jednako 32 bita, što je i logično.
Ona priča, da detektuje sve neparne, izgleda da ne stoji, jer
polinom na kome se zasniva, za razliku od onih, koje smo radili
na predavanjima, nema (x-1) faktor u sebi! Nisam našao knjigu u
kojoj su objasnili zašto su standardizovali polinom koji se ne
slaže sa tom elementarnom teorijom.
algoritmi.206dragisha,
-> U svakom slučaju, četiri milijarde je opet dosta manje od npr.
-> 1e64, (sve 10-slovne lozinke, npr.) Eto, i Juniks je koristio
-> duplo više bajtova, pa su ga "razvaljivali." Da li su algoritmi u
-> Juniksu stvarno toliko loši, da se samo zato lako provaljuju?
Nikako da shvatim na šta aplaudiraš kad kažeš 'razvaljivali'?:)
Unix algoritam se NE ODMOTAVA, samo postoje dovoljno kvalitetni programi
koji metodom uzaludnih pokušaja pogađaju lozinku, tj trude se a ako ti je
lozinka dovoljno prosta (čitaj glupa:) onda i uspiju.
algoritmi.207zormi,
* Unix algoritam se NE ODMOTAVA, samo postoje dovoljno kvalitetni programi
* koji metodom uzaludnih pokušaja pogađaju lozinku, tj trude se a ako ti je
* lozinka dovoljno prosta (čitaj glupa:) onda i uspiju.
BTW, imam programčić koji Novell serveru pošalje username, a onda nekim
sistemskim pozivima pokušava da pogodi password za njega. Tim metodom
uspeva da isproba reda 10-tak lozinki/sekundi!
Počne sa jednoslovnim (A, B, C,...) pa dvoslovnim itd. Gruba procena kaže
da može u konačnom vremenu da napipa sve razumne lozinke koje se sastoje
samo od 5-6 slova. Zato je moj password duži od 10 slova, ima i "neslova"
i počinje sa Z ;)
algoritmi.208janko,
> Nikako da shvatim na šta aplaudiraš kad kažeš
> 'razvaljivali'?:)
Da nisu neki razvaljivali, ne bi sad projektanti sakrivali
mesto gde je pravi uzorak?
To što se šeta okolo džabe, o čemu si pisao, sigurno nije nešto
što predstavlja vrh "razbijačke" nauke. Najverovatnije je čist
amaterski proizvod, koji je pisao neko ko se time ne bavi
profesionalno. Razbijanje je vrlo unosna stvar... ali i skupa
-- obično zaposliš nešto bolje od obične Juniks mašine, ili, ne
daj bože, pisija.
Naravno, ako takvi programi nekome provale šifru, i treba da mu
je provale!
> Unix algoritam se NE ODMOTAVA, samo postoje dovoljno
> kvalitetni programi koji metodom uzaludnih pokušaja
> pogađaju lozinku, tj trude se a ako ti je lozinka dovoljno
> prosta (čitaj glupa:) onda i uspiju.
Dakle, ti programi ne rade u našoj maloj zemlji, jer mi ne
koristimo engleski za lozinke (valjda) :)
Usput, ako imaš neku PD verziju Juniksa, sa sorsom, baš bi
mogao da iščupaš sors tog dela programa, vidiš da se ljudi lome
za tim.
> -> U svakom slučaju, četiri milijarde je opet dosta manje
> od npr. -> 1e64, (sve 10-slovne lozinke, npr.) Eto, i
Au greške, ovde sam omašio za neznase nula! :( Sve desetoslovne
lozinke su 64 na deseti, tj. jedva nekih 1e18. Eh, to SWAP
dugmence (na mnogo je zgodnom mestu :) Što se niko nije bunio?
algoritmi.209miljko,
> Počne sa jednoslovnim (A, B, C,...) pa dvoslovnim itd.
> Gruba procena kaže da može u konačnom vremenu da napipa
> sve razumne lozinke koje se sastoje samo od 5-6 slova.
To mi liči na vremenski nestabilan algoritam za detekciju
šifri. Naime u naivnom pristupu detekciji lozinki on poredeći
slova svaki put kad naidje na pravo slovo potroši nešto više
vremena prelazeći na sledeće, što se može detektovati.
Uz malo statistike (više pokušaja pa prosečno vreme i sl.)
lozinke se mogu probiti.
Ja sam svojevremeno imao programčić na tu temu koji je zaista
mogao da detektuje lozinku (u većini slučajeva). Odustao sam kad
sam shvatio da se lozinke pamte drugačije.
Zanima me kako Novell pamti lozinke, odnosno kako funkcioniše
dotični program ?
algoritmi.210janko,
> To mi liči na vremenski nestabilan algoritam za detekciju
> šifri. Naime u naivnom pristupu detekciji lozinki on
> poredeći slova svaki put kad naidje na pravo slovo potroši
> nešto više vremena prelazeći na sledeće, što se može
> detektovati. Uz malo statistike (više pokušaja pa prosečno
> vreme i sl.) lozinke se mogu probiti.
>
> Ja sam svojevremeno imao programčić na tu temu koji je
> zaista mogao da detektuje lozinku (u većini slučajeva).
> Odustao sam kad sam shvatio da se lozinke pamte drugačije.
>
> Zanima me kako Novell pamti lozinke, odnosno kako
> funkcioniše dotični program ?
Iskreno se nadam, ne tako kako si opisao. :) Svaki normalan
algoritam koji konvertuje lozinku u nešto drugo što pamti,
ako radi različito vreme za različite lozinke, to nije u
funkciji broja pogođenih slova!
Ideja je stvarno lepa, moguće je da postoje uslovi gde se i to
može primeniti, ali, ne znam, za sada, gde.
algoritmi.211dr.grba,
>> BTW, imam programčić koji Novell serveru pošalje username, a onda
>> nekim sistemskim pozivima pokušava da pogodi password za njega. Tim
>> metodom uspeva da isproba reda 10-tak lozinki/sekundi!
A šta ako je uključen intruder checking? I blokira stanicu posle npr. petog
pokušaja?
algoritmi.212niklaus,
(:> Brkaš kontekste. Pričali smo o algoritmu za reprezentaciju
(:> pristupnih lozinki sistemu, a ne za proveru "napada šuma."
Ne brini se - pažljivo sam čitao sve poruke vezane za metode otkrivanja
grešaka (uklučujući i tvoje). Vidiš, napisao sam "metode otrivanja grešaka", a
te metode se koriste i u transferu podataka, i u što osetljivijoj enkripciji
šifara, i ko zna čega još. "Šum" u slučaju specifične, pogrešno unete šifre,
je trenutak kada CRC ne "otkriva" grešku...
(:>> Zašto se koristi u popularnom protokolu ZModemu (i svim
(:>> manje popu- larnim posle njega)?
(:>
(:> Zato što tu služi svrsi detekcije šum bitova, uz određena
(:> ograničenja koja imaju smisla u datim realnim uslovima.
Naravno, ristanu se (kako on kaže) desilo jedared. Meni nijednom, tebi
(verovatno) nijednom - mirni smo do starosti... (;
(:> CRC32 detektuje SVAKI šum bit, ako je razmak između prvog i
(:> poslednjeg šum bita u poruci koju štiti manji od trideset dva
(:> bita. Preko toga, nije dizajniran da obavezno detektuje, ali,
(:> nekad mu uspe.
Nije SVAKI. Znaj da svaka egzaktna i konačna formula za detekciju
grešaka imaće barem još jedan ulazni niz, čije rešenje je isto, ili drugim
rečima - kada nastupa "previd greške".
(:niklaus:)
algoritmi.213kale,
>> Nije SVAKI. Znaj da svaka egzaktna i konačna formula za detekciju
>> grešaka imaće barem još jedan ulazni niz, čije rešenje je isto, ili drugim
>> rečima - kada nastupa "previd greške".
žini mi se da si prevideo ogradu - "ako je razmak između prvog i
poslednjeg šum bita u poruci koju štiti manji od trideset dva bita". CRC
jeste konačan (32bita), ali u uslov za sigurno detektovanje greške je da
je i greška konačna (<= 32 pogrešna bita).
algoritmi.214paki,
> Naravno, ristanu se (kako on kaže) desilo jedared. Meni nijednom, tebi
> (verovatno) nijednom - mirni smo do starosti... (;
Meni 3-4 puta, poslednji put baš danas... :(
algoritmi.215niklaus,
(:>> Naravno, ristanu se (kako on kaže) desilo jedared. Meni
(:>> nijednom, tebi (verovatno) nijednom - mirni smo do starosti...
(:> (;
(:>
(:> Meni 3-4 puta, poslednji put baš danas... :(
Mora da postoji objašnjenje. Teoretski je nemoguće toliko "omaški" u
tako kratkom periodu, pa još na istom mestu. Moguće je da se SEZAM zeznuo
prilikom kopiranja u tvoj PAD (ne znam koja je tačno procedura, tako da je
ovo laička pretpostavka).
Prvim pogledom na "onu" poruku (SEZAM.5, 11.607), mogu samo da kažem
da se slični "efekti" javljaju, kad neki LZW (Lempel-Ziv) algoritam za
kompresiju omane. Konkretno,u slučajevima da je jedan karakter u kompresovanom
fajlu na silu promenjen, tako da dolazi do promene prilikom dekodiranja iz
LZWovog "rečnika". (;ko razume - shvatiće)
Inače, baš sam tragao za porukom, koju si citirao kao primer lošeg
ponašanja ZModema - ne nađoh je. Koja je u pitanju? (da malo bolje proučim)
(:niklaus:)
algoritmi.217niklaus,
(:>> Naravno, ristanu se (kako on kaže) desilo jedared. Meni
(:>> nijednom, tebi (verovatno) nijednom - mirni smo do starosti...
(:> (;
(:>
(:> Meni 3-4 puta, poslednji put baš danas... :(
Još nešto da kažem...
To što se desilo tebi, ristanu i ko zna još kome u tako kratkom periodu
je opšte uzev nemoguće. Jedno od mogućih racionalnih obajšnjenja bi moglo da
bude prevaljivanje krivice na SEZAM (koriste li neki disk-kompesor?), i to u
trenutku kopiranja u tvoj PAD. Ovo je čista laička hipoteza, jer ne znam kako
taj proces zaista funkcioniše.
Da ti prenesem moj prvi utisak kad sam video tvoju poruku 11.607 u
konfu SEZAM.5 - podseća me na dearhivirani "corrupted" fajl, kompresovan LZW
(Lempel-Ziv) algoritmom (ili nekom varijacijom).
Malko bombasto zvuči, da objasnim. Do sličnih ponavljanja podstringova
u odpakovanom tekst fajlu dolazi u slučaju, kada se "na silu" promeni jedan
(ili više) bajt u LZW kompresovanom fajlu. Opet koliko znam, svi disk-kompre-
sori koriste upravo LZ? algoritme, jer su run-length (nije potrebno najpre
pročitati ceo fajl, radi neke statistike o broju ovog ili onog slovca, već
je algoritmu za dekompresiju "sve jasno" dok redno čita fajl).
Moguće je da SEZAM ne koristi diks-kompresore, u šta lično verujem
jer SEZAM drži do svojih korisnika i sebe. U tom slučaju moguće je da se u
SEZAMovom softveru koristi kompresija u nekom trenutku transfera po mreži.
Možda je mreža zakazala? Ko zna? Dejanr?
U svakom slučaju, ZModem NIJE zakazao (sigurno ne svih 4-5 puta).
(:niklaus:)
algoritmi.218dejanr,
>> Moguće je da SEZAM ne koristi diks-kompresore
Sezam radi pod Novell-om 3.11. Kao što je poznato, on ne obuhvata kompresiju
diska (za razliku od Novell-a 4.0). Dakle, nema kompresije podataka.
>> U tom slučaju moguće je da se u SEZAMovom softveru koristi kompresija
>> u nekom trenutku transfera po mreži.
Ni u jednom trenutku se ništa ne komprimuje dok ide preko mreže.
>> U svakom slučaju, ZModem NIJE zakazao (sigurno ne svih 4-5 puta).
Možda nije, možda jeste. Ono što smatram empirijski dokazanim jeste da će,
ako neko ostavi poruku tipa "desilo se to i to, i imao sam takav i takav
neobjašnjiv problem", sigurno u sledećih 48 sati da još nekoliko korisnika
prijavi sličan problem, koji im se u ovom ili onom trenutku desio. Stvar
je u tome da se pri radu sa računarom svakome povremeno desi nešto
nepredviđeno, što je teško objasniti. Da se locira i potvrdi problem
potrebno je obično dosta truda, razmišljanja, talenta za dedukciju i,
naročito, iskustva.
Jednom davno, dok je Sezam bio "mlađi" i imao malo korisnika, desio nam
se sličan problem, četiri korisnika je prijavilo da je imalo problem pri
raspakivanju pad-a u periodu od možda deset dana. Svi ti slučajevi su
detaljno "isleđeni". Jedan korisnik je u stvari imao pokvaren disk,
crkao je neki dan kasnije. Drugi je koristio beta verziju PKUNZIP-a.
Treći je greškom uradio DEL PAD*.ZIP pa kasnije UNDELETE, naravno, nije
se sve dobro oporavilo. žetvrti slučaj je ostao nerazjašnjen.
Jednom, mnogo kasnije, više korisnika je imalo takve probleme. Ispostavilo
se da su svi skidali PAD-ove sa noda 15... i najzad je ispalo da je nod 15
u kvaru, na neki čudan način. Eno tog računara i dan danas stoji "rashodovan"
u nadi da će ga neko popraviti.
Sve u svemu, ZMODEM i njegov 32-bitni CRC je nešto čemu možeš verovati ako
mesečno download-uješ nekih 100-tinak datoteka - greške će se desiti možda
par puta u životu. Ali, ako se sa jednog sistema download-uje preko 30,000
datoteka ili 2 gigabajta (što je otprilike Sezamova standardna statistika),
za očekivati je da se desi određeni broj takvih greški. Može neko koga
zanima teorija verovatnoće da proračuna koliko je očekivanje.
algoritmi.219paki,
> (:> Meni 3-4 puta, poslednji put baš danas... :(
>
> Mora da postoji objašnjenje. Teoretski je nemoguće toliko "omaški" u
> tako kratkom periodu, pa još na istom mestu. Moguće je da se SEZAM
> zeznuo
Period je godinu dana.
> Prvim pogledom na "onu" poruku (SEZAM.5, 11.607), mogu samo da kažem
> da se slični "efekti" javljaju, kad neki LZW (Lempel-Ziv) algoritam za
> kompresiju omane. Konkretno,u slučajevima da je jedan karakter u
> kompresovanom
Da, sigurno je to (jedan blok se preneo kako nije trebalo, i -
gle čuda :).
> Inače, baš sam tragao za porukom, koju si citirao kao primer lošeg
> ponašanja ZModema - ne nađoh je. Koja je u pitanju? (da malo bolje
> proučim)
Ne znam na šta misliš? 'Ono' su bili citati iz pokojnog TEXTPADA.
algoritmi.220drpr,
-> Mora da postoji objašnjenje. Teoretski je nemoguće toliko
-> "omaški" u tako kratkom periodu, pa još na istom mestu.
-> Moguće je da se SEZAM zeznuo
Grešiš teoretski je moguće a praktično teško ostvarljivo.
Verovatnoća radi sa beskonačnim brojem pokušaja a u praksi se
kaže da je "verovatno" da će se neka veličina raspodeliti na taj
i taj način. Elem da završim šaljivo ako si gledao film
"Rozenkranc i Gildestern su mrtvi" video si kako jedan od
junaka baca novčić oko 180 puta i uvek dobija jednu stranu
(mislim da je bila galava) a to se po teoriji teško dešava tj.
verovatnoća je š .Znači trebalo je da bude pola pola ali nemora
da bude tako i teorija sama svojim imenom kaže "verovatnoća".
cope
algoritmi.221drpr,
-> je opšte uzev nemoguće. Jedno od mogućih racionalnih
-> obajšnjenja bi moglo da bude prevaljivanje krivice na SEZAM
-> (koriste li neki disk-kompesor?), i to u
Opet da se nadovežem i meni se prvi put desilo pre jedno mesec
dana. Ponovo sam preneo fajl (nije išao u pad) i sve je bilo
ok.
cope
algoritmi.222niklaus,
(:> Grešiš teoretski je moguće a praktično teško ostvarljivo.
U pravu si! Zapravo bio je to laspup, ili lapsup, kako beše. (;
(:niklaus:)
algoritmi.223dr.grba,
>> i taj način. Elem da završim šaljivo ako si gledao film
>> "Rozenkranc i Gildestern su mrtvi" video si kako jedan od
>> junaka baca novčić oko 180 puta i uvek dobija jednu stranu
>> (mislim da je bila galava) a to se po teoriji teško dešava tj.
>> verovatnoća je š .Znači trebalo je da bude pola pola ali nemora
Pre nekoliko godina, bejasmo srednjoškolci, jedna ekipa đaka je bila angažovana
da crticama meri opterećenja nekih raskrsnica u gradu, ne bi li se postavili
semafori. Trebalo je u tabelu po satima udarati recku za svaki bicikl,
motocikl, putničko ili teretno vozilo...
Jedan drugar je za dva sata dežurstva napravio (čini mi se) oko 600 crtica
na "biciklovi". Svi ostali su u to vreme imali 30-40 crtica...
Kasnije je priznao da se njegov stariji brat, sportski biciklista, navadio sa
kolegama iz kluba pa su pičili u krug non stop tom raskrsnicom (((:
Toliko o zakonima verovatnoće, raspodelama i Gausovim zvonastim krivama...
algoritmi.224a.kircanski,
I, na kraju, koji je alogirtam za šifrovanje passwd fajla na unix-u?
algoritmi.225janko,
Znate li onaj algoritam za dajdžest teksta koji smo pominjali,
iz microb poruke xx?
Sad ga nešto gledah, i ubeđen sam da je POGREŠAN.
Obratite pažnju:
> If t is the operation number (from 1 to 80), and M subscript j
> represents the jth sub-block of the message (from 0 to 15), and
> <<<s represents a left shift of s bits, then the 80 operations
> look like the following:
>
> TEMP = (A <<< 5) + f subscript t(B,C,D) + E + W subscript t + K
> subscript t
>
> E = D
>
> D = C
>
> C = (B <<< 30)
>
> B = A
>
> A = TEMP
>
> After all this, A, B, C, D, and E are added to AA, BB, CC, DD,
> and EE, respectively, and the algorithm continues with the next
> block of data. The final output is the concatenation of A, B, C,
> D, and E.
Očigledno, komplet A B C D E reči od po 4 bajta daje na kraju
onih magičnih 160 bita dajdžesta. Ali...
Od tih 160 bita ISTIH 90 su UVEK PRAZNI po gornjim formulama(!)
Pogledajte liniju C = (B <<< 30). Šift po definiciji briše bite
koji se pomere. Ostaju samo dva upotrebljiva bita u C, trideset
ostaju nule. Isto i u D i E, u svim sledećim iteracijama.
Zaključak: algoritam, ovakav, kakav je, je za izbegavanje, do
daljeg.
Ima li neko "na papiru" (u knjizi ili relevantnom članku) ili
"u kodu" ovaj isti algoritam, da vidimo kako izgleda ispravna
realizacija?
algoritmi.226ndragan,
/ Ima li neko "na papiru" (u knjizi ili relevantnom članku) ili
/ "u kodu" ovaj isti algoritam, da vidimo kako izgleda ispravna
Na PDP mašinama si imao RADIX40, skraćeni set znakova, koji je sadržavao
A-Z, 0-9. $, blenk i valjda tačku, te nul znak, sve skupa 40 znakova.
To čudo je trpalo tri znaka u dva bajta. U tom formatu su u
direktorijima pamćena imena fajlova itd. žak i nije išlo po bitovima,
nego c1*1600+c2*40+c3 ide do najviše 40**3-1, tj 63999 različitih trojki
znakova (u stvari nešto manje, pošto je bilo nekoliko nedozvoljenih
kombinacija sa nul znakom).
Citirani algoritam (nisam imao živaca ni vremena da implementiram) bi
mogao da znači neko slično sečenje suvišnih bitova. Sečenje bi moglo da
se ostvari i sužavanjem skupa znakova na recimo neke banke po 32 (velika
slova i blenk, mala slova i blenk, cifre i interpunkcija u trećoj
banci), sa prefiksnim bajtom pred promenu banke, a dok se nižu znaci iz
iste banke moglo bi se trpati po pet bitova u niz, do promene banke.
Trebalo bi ipak prvo proračunati koliko se ovakva strategija isplati.
If yes, (c).
algoritmi.227dejanr,
Na zahtev više korisnika, algoritam kojim se rešava jednačina trećeg
stepena.
Pre svega oznake:
^ je stepenovanje
sqrt je kvadratni koren
j je imaginarna jedinica. j=sqrt(-1)
sh je hiperbolički sinus. sh x = (exp(x)-exp(-x))/2
ash je funkcija inverzna sh. ash x = ln(a+sqrt(x*x-1));
ch je hiperbolički kosinus. ch x = (exp(x)+exp(-x))/2
ach je funkcija inverzna ch. ash x = ln(a+sqrt(x*x-1));
cos je funkcija cos
acos je funkcija iverzna cos. Ako u datom jeziku od izverznih funkcija
postoji samo atan, može se koristiti acos(x)=arctan(sqrt(1-a*a)/a);
abs je apsolutna vrednost
pi je broj PI, 3.14159...
Jednačina je oblika ax^3+bx^2+cx+d. Pretpostavlja se da je a<>0, jer
ako je a=0 to i nije jednačina trećeg stepena.
Najpre je treba svesti na oblik: y^3+3py+2q=0. To se radi smenom
y=x+b/(3a), u kom slučaju se dobija:
3p=(3ac-b^2)/(3a^2)
2q=(2b^3)/(27a^3) - bc/(3a^2) + d/a
Odavde može da se izračuna p i q.
Treba izračunati r=+-sqrt(abs(p)). Znak plus se uzima ako je q>=0,
a u protivnom je r negativan broj.
1. Ako je p>0
Izračuna se f iz f=ash(q/r^3)
Jednačina ima jedan realan koren, y1=-2r*sh(f/3)
Jednačina ima dva kompleksna korena,
y2=r*sh(f/3)+j*sqrt(3)*r*ch(f/3) i:
y3=r*sh(f/3)-j*sqrt(3)*r*ch(f/3)
2. Ako je p<0
2.1 Ako je q^2+p^3>0
Izračuna se f iz f=ach(q/r^3) <-- lako se pokazuje da je q/r^3
nikad po modulu nije manje od
1, dakle ach je definisan
Jednačina ima jedan realan koren, y1=-2r*ch(f/3)
Jednačina ima dva kompleksna korena,
y2=r*ch(f/3)+j*sqrt(3)*r*sh(f/3) i:
y3=r*ch(f/3)-j*sqrt(3)*r*sh(f/3)
2.2 Ako je q^2+p^3<=0
Izračuna se f iz f=acos(q/r^3) <-- lako se pokazuje da je q/r^3
uvek po modulu manje od 1,
dakle acos je definisan
Jednačina ima tri realna korena:
y1=-2r*cos(f/3)
y2= 2r*cos(pi/3 - f/3)
y3= 2r*cos(pi/3 + f/3)
3. Ako je p=0
Jednačina je oblika y^3+2q=0 pa je realno rešenje lako naći kao
treći koren iz 2q. Međutim, potrebna su sva tri rešenja:
Izračuna se r:=abs(2*q)^(1/3)
3.1 Ako je q<0
y1=r
y2=r*cos(2*pi/3)+j*r*sin(2*pi/3);
y3=r*cos(2*pi/3)-j*r*sin(2*pi/3);
3.2 Ako je q>0
y1=-r
y2=r*cos(pi/3)+j*r*sin(pi/3)
y3=r*cos(pi/3)-j*r*sin(pi/3)
3.3 Ako je q=0
Trostruko rešenje y1=y2=y3=0
Pošto su određena tri rešenja transformisane jednačine, rešenja osnovne
jednačine su:
x1=y1-(b/(3a))
x2=y2-(b/(3a))
x3=y3-(b/(3a))
Srećno :)
algoritmi.228nboskovic,
*> Na zahtev više korisnika, algoritam kojim se rešava
*> jednačina trećeg stepena.
Na Sezamu u direktorijumu
R:\IBMPC\C ima arhiva u kojoj se nalaze sorsovi za rešavanje
mnogih matematičkih problema. Među tim sorsovima ima i rešavanje
jednačine do 36-og stepena. Mogu vam reći da program, na mašini
koja ima koprocesor, nalaženje 36 nula radi gotovo trenutno :)
Treba probati. Do ovog programa sam došao zahvaljujući mjovi
dok smo bezuspešno pokušavali da rešimo naveden problem :) Ako
ne predstavlja kršenje nekih prava i sl. mogu da pošaljem EXE
fajl tog programa.
(c) klap
nikola
algoritmi.229dejanr,
>> Među tim sorsovima ima i rešavanje jednačine do 36-og stepena.
Program verovatno koristi neki od numeričkih metoda. Jednačina
5-tog, 6-tog i višeg stepena ne može (u opštem slučaju) da se reši
na način na koji smo navikli, tj. da se dobije nešto kao: rešenje
je a*b-c^2 gde su a, b i c koeficijenti. Govorili smo o egzaktnom
rešavanju (realna i kompleksna rešenja) jednačine trećeg stepena.
Međutim, onaj kome treba rešenje u obliku broja (a to je najčešće
u praksi i potrebno, dobiješ x=23.128575 i "baš te briga" koja je
to funkcija od koeficijenata), zaista će dobro proći sa numeričkom
varijantom. Hvala što si nam skrenuo pažnju na program.
algoritmi.230niklaus,
(:> Program verovatno koristi neki od numeričkih metoda.
Da nije onaj sistem za postepeno traženje binoma (oblika (x-a))
delilaca polinoma P(x). Naime zna se da za nula polinoma, koje su realne
važi:
a=p/q ; gde je a0 (slobodni koeficijent) deljivo sa p
an (koeficijent uz xžn) deljivo sa q
...pa se proveri za svaku od kombinacija p/q. Ovde je malo veći pro-
blem izvršiti podelu P2(x)=P(x)/(x-a), nakon čega ide GOTO 10. (;
Da li nalazi i konjugovano-kompleksna rešenja?
(:niklaus:)
algoritmi.231janko,
> / Ima li neko "na papiru" (u knjizi ili relevantnom
> članku) ili / "u kodu" ovaj isti algoritam, da vidimo
> kako izgleda ispravna
>
> Na PDP mašinama si imao RADIX40, skraćeni set znakova,
> ...
>
> Citirani algoritam (nisam imao živaca ni vremena da
> implementiram) bi mogao da znači neko slično sečenje
> suvišnih bitova. Sečenje bi moglo da
Asocijacija ti je loša. Citirani algoritam je parče celog, koji
je u microb xxx poruci, ima jaku kriptografsku osnovu itd.
Inače, taj članak, čiji je elektronski oblik pomenuta poruka,
je izašao u novembarskom Bajtu, sa potpuno istim tekstom, za
koji verujem da je pogrešan. Ko ima pristup Biksu, mogao bi da
pita samog autora, ako je raspoložen, šta stvarno treba da se
nalazi u inkriminisanoj liniji?
Ili, da nije izašla ispravka u decembarskom Bajtu? Ili će izaći
u januarskom, ne znam kakva im je tehnologija?
algoritmi.232snemcev,
Jel zna neko kako se iz matičnog broja građanina može "izvući" pol?
Datum rođenja su prvih sedam cifara, poslednja je kontrolna, a ono
između su pol, mesto rođenja i nekakav uslovno rečeno redni broj. Koja
cifra je pol?
algoritmi.233mirkot,
>> Jel zna neko kako se iz matičnog broja građanina može "izvući"
>> pol?
10, 11 i 12 cifra su redni broj za taj dan. Od 0 do 499 su muškići, a
od 500 do 999 su devojčice.
Mirko
algoritmi.234vitez.koja,
#=> 10, 11 i 12 cifra su redni broj za taj dan. Od 0 do 499
#=> su muškići, a od 500 do 999 su devojčice.
Prvo (pa) muško :))
algoritmi.235snemcev,
>> 10, 11 i 12 cifra su redni broj za taj dan. Od 0 do 499 su muškići, a
>> od 500 do 999 su devojčice.
Tnx. Ovo mi je jako trebalo, kopao sam po kojekakvoj dokumentaciji,
usput pronašao gomilu stvari za koje nisam ni znao da ih imam, ali ovo
nisam našao. Tnx again.
algoritmi.236dr.grba,
>> usput pronašao gomilu stvari za koje nisam ni znao da ih imam, ali
'Ajd' sad, podeli tu gomilu sa nama (((:
algoritmi.237salex,
Simpleks algoritam ?
Zna li neko za knjigu u kojoj je lepo opisan
Simpleks algoritam iz Linearnog programiranja ?
Salex
algoritmi.238afilipovic,
>> Simpleks algoritam iz Linearnog programiranja ?
Prilicno je fino i sa teoretske i sa prakticne strane dat u:
"Linearno programiranje", Zelimir Vuckovic, " Savremena administracija "
Pozdrav, Nenad
algoritmi.239ppekovic,
>> Zna li neko za knjigu u kojoj je lepo opisan
>> Simpleks algoritam iz Linearnog programiranja ?
Algoritmi i programi iz operacionih istraživanja by Slobodan
Krčevinac, Jovan Petrić, Milutin župić & Ilija Nikolić u izdanju
Naučne knjige iz Beograda. Tamo su dati algoritmi i programi na
Fortranu. Ako te mrzi da prekucavaš, pitaću autore da li je source
PD (pošto je već objavljen u knjizi) pa ću ga eventualno okačiti
ovde ako si zainteresovan?
Paya
algoritmi.240kenza,
(;> Zna li neko za knjigu u kojoj je lepo opisan
(;> Simpleks algoritam iz Linearnog programiranja ?
Matematicko Programiranje
Autori su V.Vujicic,M.Asic i N.Milicic.
Poglavlje 4.2 - Simpleks Metoda (69.strana)
p.s. Srecno ;) Trebace ti :)
algoritmi.241isekulovic,
Ovde je skoro bila rasprava o algoritmu za sifrovanje passworda na bbs-ovima
i koliko se sećam nije nadjen zadovoljavajući algoritam. Da li je ovaj
možda odgovarajući. Inače ovaj source se nalazi u arhivi DDJ9311.zip,
mislim da ima na sezamu, ako nema ima na ffs-u.
ivan
(* ------------------------------------------------------------------------- *(
** palpak.pas -- Algorithm #13: Palindrome Encryption **
** --------------------------------------------------------------------------**
** Demonstrates data encryption technique for producing keys or signatures, **
** Microsoft Calendar files, for example, begin with signature bytes formed **
** by applying the algorithm to the word Calendar. There is no known **
** recovery method for restoring text encrypted using this method. **
** Copyright (c) 1993 by Tom Swan. All rights reserved. **
)* ------------------------------------------------------------------------- *)
program PalPak;
var S1, S2: String;
function Uch(C: Char): Integer;
begin
if (C in ['a' .. 'z']) then
Uch := Ord(C) - 32
else
Uch := Ord(C)
end;
function Lch(C: Char): Integer;
begin
if (C in ['A' .. 'Z']) then
Lch := Ord(C) + 32
else
Lch := Ord(C)
end;
procedure Encrypt(S: String);
var I, E, C: Integer;
begin
I := 1;
E := Length(S);
while (I <= Length(S)) do
begin
C := Uch(S[I]) + Lch(S[E]);
Write(C, ' ');
I := I + 1;
E := E - 1
end
end;
var S: String;
begin
repeat
Write('Enter a string: ');
Readln(S);
if Length(S) > 0 then
begin
Write('Encrypted string: ');
Encrypt(S);
Writeln
end
until Length(S) = 0;
end.
algoritmi.242janko,
> Ovde je skoro bila rasprava o algoritmu za sifrovanje
> passworda na bbs-ovima i koliko se sećam nije nadjen
> zadovoljavajući algoritam.
Naprotiv, nađena su dva odlična. Osim toga, pronađeno je da nešto
nije u redu u BAJTovom tekstu koji se bavio istom temom.
Kad smo već kod toga, ima li neko decembarski i januarski BAJT (ja ih
nisam dobio) i da li su objavili neku ispravku pomenutog članka iz
novembra? Ako nisu, baš bih voleo da neko kontaktira autora i pita ga za
objašnjenje inkriminisanog sleda operacija gde se gubi oko 90 bita
potrebnog rezultata...
> Da li je ovaj možda
> odgovarajući. Inače ovaj source se nalazi u arhivi
> DDJ9311.zip, mislim da ima na sezamu, ako nema ima na
> ffs-u.
Ne zadovoljava elementarnu postavku, da se na osnovu signature ne može
(lako) rekonstruisati bilo kakav drugi tekst koji će dati istu
signaturu.
algoritmi.243isekulovic,
>> Naprotiv, nađena su dva odlična. Osim toga, pronađeno je da nešto
Ups, mora da sam prerano prestao da pratim diskusiju. Može li pointer
na poruke u kojima su opisani?
algoritmi.244bulaja,
Koji je algoritam za odredjivanje kontrolnog broja žiro računa?
algoritmi.245dejanr,
>> Koji je algoritam za odredjivanje kontrolnog broja žiro računa?
Pogledaj Bajtove lične prirode u "Računarima" koji u sredu izlaze :)
Bio je i ovde na Sezamu, ako se dobro sećam.
Sasvim ukratko, račun dopuniš na 18 cifara ubacujući nule pre poslednje
grupe. Recimo, ako 60811-620-16, napraviš ga da bude 608116200000000016.
Onda ga propustiš kroz sledeću proceduru:
function kbroj(ulaz: string): integer;
var i, tmp: longint;
begin
tmp:=0;
for i:=length(ulaz) downto 1 do
begin
if (red[i]>='0') and (red[i]<='9') then
tmp:=tmp+(ord(red[i])-ord('0'))*(length(ulaz)-i+2)
else
begin
kbroj:=-1; exit;
end;
end;
tmp:=11-(tmp mod 11);
if tmp>=10 then tmp:=0;
kbroj:=tmp;
end;
algoritmi.246zolika,
Ne znam da li je sledećoj poruci mesto u ovoj temi, al' ajde...
OBAVEŠTAVAM CENJENE KORISNIKE SEZAMA (KOJE TO ZANIMA) DA SAM DANAS,
25. FEBRUARA 1994. GODINE
D I P L O M I R A O.
Ovo ne kucam zato da bih se hvalisao, već da bih se
ZAHVALIO
svima onima koji su svakom svojom idejom, makar i najmanjom, uticali na
uspeh mog diplomskog rada i koji su mi pružili pomoć kada mi je bila potrebna.
algoritmi.247.bale.,
> OBAVEŠTAVAM CENJENE KORISNIKE SEZAMA (KOJE TO ZANIMA) DA SAM DANAS,
> 25. FEBRUARA 1994. GODINE
> D I P L O M I R A O.
Bravo, majstore! :) Je l' proradio BBS? ;-)
algoritmi.248janko,
> OBAVEŠTAVAM CENJENE KORISNIKE SEZAMA (KOJE TO ZANIMA) DA
> SAM DANAS, 25. FEBRUARA 1994. GODINE
> D I P L O M I R A O.
:)
žestitam.
Za one koji ne prate (nepostojeću) rubriku lične vesti u konferenciji
MALI OGLASI:
I ja diplomirah, jedan dan ranije.
Na ETF BGD, smer računarska tehnika i informatika.
:)
algoritmi.249dr.grba,
>> D I P L O M I R A O.
Moje čestitke. Nadam se da ćeš naći adekvatno plaćen posao.
algoritmi.250dr.grba,
>> I ja diplomirah, jedan dan ranije.
žestitke i iste želje i tebi.
algoritmi.251asterix,
>>> D I P L O M I R A O.
>
> Moje čestitke. Nadam se da ćeš naći adekvatno plaćen posao.
^^^^^^^^^^^^
Đirlo maneken ? ... To je dobro plaćen posao.
;)
algoritmi.252zolika,
>> Bravo, majstore! :) Je l' proradio BBS? ;-)
Na komercijalnim osnovama još nije (a čini mi se da i neće), ali je na
odbrani diplomskog radio baš kao što treba!!! :-)))))
algoritmi.253dr.grba,
>> > Moje čestitke. Nadam se da ćeš naći adekvatno plaćen posao.
>> Đirlo maneken ? ... To je dobro plaćen posao.
Šali nikad kraja. Ali bio sam krajnje ozbiljan u onome što sam napisao.
algoritmi.254vitez.koja,
#=> Na komercijalnim osnovama još nije (a čini mi se da i neće), ali
#=> je na odbrani diplomskog radio baš kao što treba!!! :-)))))
A za onaj multitasking šta si uradio? (nije tajna?)
sk
algoritmi.255zolika,
>>>> Đirlo maneken ? ... To je dobro plaćen posao.
>>
>> Šali nikad kraja. Ali bio sam krajnje ozbiljan u onome što sam napisao.
To sam i mislio. Što se džirlo-manekena tiče... možda, ako me baš pritisne
besparica :-)))) Uostalom, asterix baš voli da se šali.
algoritmi.256dr.grba,
>> To sam i mislio. Što se džirlo-manekena tiče... možda, ako me baš
>> pritisne besparica :-)))) Uostalom, asterix baš voli da se šali.
BTW, jeste li čuli šta Isak Džirlo radi po Sloveniji? Osim što ga voze
u autu vrednom 120.000 USD, prodaje prezervative umočene u med (:
algoritmi.257markom,
*** u autu vrednom 120.000 USD, prodaje prezervative umočene u
*** med (:
Uhhhhhh, i to neko kupuje, pfhuy :(
Marko
algoritmi.259maksa,
>> Treba mi program u C-u (rutina, funkcija) za generisanje
>> Random (slučajnih) brojeva.
Računari 88 (Januar 93), strana 77, Bajtovi Godine, slika 8.
algoritmi.260markom,
Kahm, molio bih poštovani Sezamov auditorijum za malo pažnje i pomoći O:)
-------------------------------------------------------------------------
Potrebna mi je rutina, najbolje bi bilo u C-u. Naime, imam jedan string u ko-
jem pored normalnog teksta ima i ansi sekvenci, a one tu nisu poželjne ;). Da
li ima dobre duše da mi kaže gde to ima (pošto mi se čini da sam tako nešto
negde video) ili da pošalje gotovu funkciju. Prilično mi je hitno, pa ako ne
ume i zna, nek podeli radost sa mnom :)
Unapred zahvalan, Ja :))
algoritmi.261drakce,
│ Potrebna mi je rutina, najbolje bi bilo u C-u. Naime, imam jedan string u
│ kojem pored normalnog teksta ima i ansi sekvenci, a one tu nisu poželjne ;).
└─────────
Imam source programa u Pascal-u, koji radi sličnu stvar:
> CLRESC is a simple filter to remove ANSI escape sequences from a file.
> It also removes all graphic characters, replacing them by spaces to
> maintain alignment of the non-graphic characters. It is useful in
> cleaning up logs of sessions on bulletin boards which use escape
> sequences for screen graphics and screen clearing.
clresc2.arjalgoritmi.262markom,
*** Imam source programa u Pascal-u, koji radi sličnu stvar:
Ma nema veze, preradiće se to :))) Tnx :)
algoritmi.263vitez.koja,
(odgovor preko odgovora, iz opravdanih razloga)
#=>│ Potrebna mi je rutina, najbolje bi bilo u C-u. Naime,
#=>│ imam jedan string u kojem pored normalnog teksta ima i
#=>│ ansi sekvenci, a one tu nisu poželjne ;).
Ako pretpostavimo da ispisuješ string slovo po slovo, potrebno je uraditi
sledeće: kada naiđeš na ANSI escape sekvencu ESC[ preskoči sve do prvog slova,
*I* to slovo; ANSI komanda ima oblik ESC[<op1>,<op2>,...,<opn><K>, gde su <op>
brojne vrednosti a <K> karakter koji označava komandu. Znači,
if(*text==0x5B && *(text-1)==0x1B) while(!isalpha(*p++));
Ja koristim sledeće:
void host::ansiputs (char *str) {
char *p;
p=str;
while(*p) {
if(*p==0x1B && *(p+1)==0x5B)
if(!ansi)
skipansi(&p);
putch(*p++);
}
}
inline void host::skipansi (char **p) {
(*p)+=2;
while(!isalpha(**p)) (*p)++;
(*p)++;
}
... pri čemu je ansi neka (globalna) promenljiva koja određuje da li su ansi
sekvence dozvoljene.
algoritmi.264mbole,
Da li ima neko generatore slučajnih brojeva koji se uklapaju u određenu
raspodelu? Neophodna mi je gama raspodela, a neću se ljutiti ni za ostale.
Poželjno u Paskalu.
algoritmi.265mirche,
> Ma nema veze, preradiće se to :))) Tnx :)
BTNJ, Jel' treba nekom program tp2tc (com ili exe -ne sećam se) koji
prevodi pascal source u c source. (osećam da je neka glupost al' kome treba
daću mu da ispita.)
algoritmi.266sbrk,
>> BTNJ, Jel' treba nekom program tp2tc (com ili exe -ne sećam se) koji
>> prevodi pascal source u c source.
Koja verzija? Ako te ne mrzi, pošalji parče READ.ME fajla, ono sa zaglavljem
itd...
algoritmi.267kale,
>> Da li ima neko generatore slučajnih brojeva koji se uklapaju u određenu
>> raspodelu?
Taj problem se u opštem slučaju deli na 2. Prvo izabereš neki sa
linearnom raspodelom pa nad njime generisanim brojevima primeniš odgovarajuću
inverznu funkciju.
Recimo da želiš raspodelu F(x)=x**2. Imaš niz x1, x2, x3,... koji ima
linearnu raspodelu. Niz y(i)=sqrt(x(i)) ima traženu raspodelu.
Pozdrav!
algoritmi.268dejanr,
>> Recimo da želiš raspodelu F(x)=x**2. Imaš niz x1, x2, x3,... koji ima
>> linearnu raspodelu. Niz y(i)=sqrt(x(i)) ima traženu raspodelu.
Da, to je standardni postupak. Jedino je muka što za mnoge raspodele nije
lako (ili nije moguće) odrediti inverznu funkciju od F(x)... recimo mislim
da se za generator slučajnih brojeva koji radi po normalnoj raspodeli koristi
generator sa uniformnom raspodelom (rnd) pa se onda broj "propusti" kroz
neki polinom koji je *približan* inverznoj funkciji.
algoritmi.269tica,
oo_ BTNJ, Jel' treba nekom program tp2tc (com ili exe -ne sećam
oo_ se) koji
Treba meni (ali nisam bas optimista da ce da proradi).
algoritmi.270janko,
> lako (ili nije moguće) odrediti inverznu funkciju od
> F(x)... recimo mislim da se za generator slučajnih brojeva
> koji radi po normalnoj raspodeli koristi generator sa
> uniformnom raspodelom (rnd) pa se onda broj "propusti"
> kroz neki polinom koji je *približan* inverznoj funkciji.
Ako se sećam, ima još jedan prost način, ali ne znam koliko je efikasan
-- svaka raspodela teži normalnoj, ako se sabiraju uzorci, ili "lepe" i
tako nekako.
Slabiji programeri i kada ne žele dobiju normalnu raspodelu, zbog ovog
efekta.
algoritmi.271ndragan,
/ BTNJ,
Ej, šta ti je ovo BTNJ?
algoritmi.272markom,
*** Ej, šta ti je ovo BTNJ?
Koliko sam ja shvatio BTW, ali po juski ćirilici :)
algoritmi.273dr.grba,
>> Ej, šta ti je ovo BTNJ?
Verovatno bdž the njadž (:
algoritmi.274robert,
>> Ej, šta ti je ovo BTNJ?
BTNJ = BTW samo ćirilicom koja je prevedena na latinicu ;)). Isto
kao NJINDONJS = WINDOWS :).
algoritmi.275mirche,
> Ej, šta ti je ovo BTNJ?
Znaju ćiriličari. ;)
(To je onaj kodni raspored za ćirilicu koji umesto W ima ćirilično Nj
umesto Q - Lj i umesto X - Dž, pa je razumljivo od BTW došlo do BTNJ zarad
razbijanja monotonije. ;)) UBR po naški je ekvivalent BTW-u.
Kad smo već tu evo još jednog: NBTZ - Ne bilo ti zapoveđeno... :)
algoritmi.277janko,
> Ej, šta ti je ovo BTNJ?
A ti kao ne znaš?
NJ je ono slovo na tastaturi levo od E. :)) Pa baci pogled na američke
tastature...
Njhat džou see is njhat džou get = NJDčSINJG
Podždrav.
algoritmi.278mmitrovic,
Ů█▀█Ţ Kad smo već tu evo još jednog: NBTZ - Ne bilo ti zapoveđeno... :)
Ili umesto ASAP (As Soon As Posibile)
može ŠJPM (Što Je Pre Moguće). ;)
_mmix_
algoritmi.279mmitrovic,
Ů█▀█Ţ Njhat džou see is njhat džou get = NJDčSINJG
Fali jedno Dč.
_mmix_
algoritmi.280ndragan,
/> Ej, šta ti je ovo BTNJ?
/ Znaju ćiriličari. ;)
Vrlo dobar, 4+, sedi. Za 5 da otplivaš uzvodno i da nađeš ko je to
izmislio ;)
algoritmi.281mirche,
> izmislio ;)
Izmislio? Misliš, UPOTREBIO?
Pa i nije bila potrebna neka velika mudrost da se dođe do ovoga. Pri
'preslušavanju' fajla 'himna.bre' upalila mi se ćirilica i, kao i verovatno
svi ostali koji su to videli, razvuk'o usta u :) videvši NjindoNjs.
Mirche
algoritmi.282spantic,
> 'preslušavanju' fajla 'himna.bre' upalila mi se ćirilica i, kao i verovatno
Kad smo već kod toga. Ima li iko "Bože pravde" kao wav?
algoritmi.283sbrk,
>> Kad smo već kod toga. Ima li iko "Bože pravde" kao wav?
Ja koliko znam ta melodija postoji na Amigi za SoundTracker. Ako ovo čita neki
Amigista, neka se javi.
algoritmi.284magician,
=> Ja koliko znam ta melodija postoji na Amigi za SoundTracker. Ako ovo
=> čita neki Amigista, neka se javi.
Imam ja kao "mod".
algoritmi.285ndragan,
/ Izmislio? Misliš, UPOTREBIO?
Izmislio, pa upotrebio.
/ Pa i nije bila potrebna neka velika mudrost da se dođe do ovoga. Pri
Nije, samo trenutak nadahnuća. Inače, takav slučaj kao što se tebi desio
meni se nije mogao desiti, jer već više od godinu dana ne koristim juski
ćirilicu - prešao sam na b.015; drugo, već više od tri godine nemam
pendžere na disku.
algoritmi.286mmitrovic,
Ů█▀█Ţ Imam ja kao "mod".
Pa podeli ga s' nama.
_mmix_
algoritmi.287magician,
=> Pa podeli ga s' nama.
Pa, da ga podelim...
bogpravd.zipalgoritmi.288dejanr,
==========
security/encryption #770, from ssatchell, 540 chars, Wed Mar 9 00:19:58 1994
Comment to 767. Comment(s).
----------
One of the forgotten facts of DES is that the theory behind the
selection of the S-boxes is still classified information. Based
on some public comments I've seen over the past few weeks, I've
come to suspect that Skipjack uses the same basic scheme as DES
uses, only with a longer key and more cycles.
People have implemented DES without understanding the theory behind it.
I suspect that if we had more information, it would be *easy* to
write a version of Skipjack without the law-enforcement field or
(shudder) user-definable keys...
==========
security/encryption #771, from jrubin, 1508 chars, Wed Mar 9 02:13:39 1994
Comment to 770.
----------
>>DES Sboxes
When DES came out, I did a lot of analysis of the Sboxes.
As others have reported, they have some peculiar properties:
1) S box 3 does not contain independant permutations.
Call the 4 permutations A B C D
Then C = A followed by wire crossing
D = B followed by the same wire crossing.
The result is that toggling one of the input bits leaves the
parity of 2 separate pairs of outputs unchanged.
2) In one other case, the S box, which is supposed to be a non-linear
function from 6 input bits to 4 output bits, can be expressed in
terms of linear operations a smaller non-linear part. I don't
remember the details, but it was something like 4 bits -> 3 bits.
I never developed a way to exhaustively check for this phenomena.
3) All of the S boxes have linear relations connecting input and
output bits which hold EXCEPT FOR A SMALL NUMBER OF STATES.
Typically, there are 3 exceptional states.
This may be true of randomly constructed S boxes and may not
be significant.
These facts are suspicious, but by themselves don't seem to lead to
a way to crack DES.
It might be interesting to examine the problem from the NSA's
point of view. You have a cipher like DES, but with different details.
How do you choose S boxes that will introduce a subtle weakness?
I suspect the "peculiarities" above are artifacts of an attempt to
weaken DES. There must be few suitable S boxes, if they had to be as
blatant as to choose S3 the way they did.
algoritmi.289dejanr,
Uz ovu poruku je interesantan prilog Thomasa C. Jonesa pod naslovom
"Cipher-Chain-Cipher Mode of Operation for Improving the Security
of Block Ciphers". Reč je o, koliko je autoru poznato, originalnoj
ideji za unapređenje postojećih kriptografskih algoritama.
==========
security/long.messages #246, from peace, 21634 chars, Thu Mar 17 22:56:39 1994
----------
Fellow cryptorians:
The following is a draft of a paper that describes a mode of
operation that I personally feel is useful for bulk data
encryption for PEM, RIPEM, EDI, PGP and any other secure email
application. In particular, submode CC1 is proposed for these
applications. I would welcome any suggestions that would help in
evaluating this method in those venues.
peace at acm.org
- - - - - - - - - - - - - - - - - - - - - -
Cipher-Chain-Cipher Mode of Operation
for Improving the Security of Block Ciphers
by Thomas C. Jones
1 ABSTRACT
As a way to extend the usefulness of encryption with the DES and
prevent several of the more common attacks on the DES, a new mode
of operation is defined that can be used with any block cipher,
including DES. This mode of operation performs a cipher
operation both before and after a chaining operation and so could
be called cipher-chain-cipher (CCC) mode of operation. It is
characterized by never performing any operation with the
plaintext data except immediately after one cipher operation and
immediately prior to another, so that cipher operations separate
the plaintext and ciphertext in both directions. Thus the common
known-text attack and chosen-text attack are avoided and, for
some implementations, only two DES operations are required per
plaintext block.
sifre.zipalgoritmi.290dgrbic,
Jel neko može da me posavetuje kako da uradim neko jednostavno (i brzo)
šifrovanje, a koje se ipak teže provaljuje od nekog xorovanja ili slično?
Xorovanje se mnogo lako provali ako znaš početak šifrovanog fajla (npr. MZ
za .exe fajlove itd...)