sreda, 29. maj 2013

Najdena bančna kartica


Intro


Ste se kdaj vprašali, koliko časa bi rabil, da poberem ves denar iz bančne kartice, katero sem našel na cesti, jo ukradel babici (kaj ji bo penzija, če ima vnučke), ali pa jo pridobil na legalen način? Vsaka bančna kartica ima PIN številko, katera ima dolžino štirih cifer (vsaj na vseh bankomatih v Sloveniji, kljub temu, da so lahko ostale PIN številke dolge tudi do 12 cifer. Okej, imamo kartico, PIN številke pa nikakor ne. Poglejmo koliko je vseh kombinacij, da lahko zadevo brute forcamo.




XXXX


"X" predstavlja eno cifro, in na vsakem mestu lahko zapišemo po deset cifer, od 0 pa do 9. Vseh mest skupaj je štiri, torej končni rezultat je:

št. vseh kombinacij = 10 * 10 * 10 * 10 = 10^4 = 10.000 

Kaj sedaj?


Ziher se je komu posrečilo, da je pozabil PIN in po tretjem vnosu le-tega izgubil svojo predrago bančno kartico. Torej, število maksimalnih poskusov na dan je 2 in ne 3 (tatretji ti že požre zadevo). No izračunajmo, koliko dni nam bi takšen brute force vzel, da se uspešno logiramo:

št. dni  = št. vseh kombinacij / št. kombinacij na dan = 10^4 / 2 = 5.000 dni  = 13.68 LET

Thats too much, za par tistih evrov ali tisoč. Vendar to ni zadnja številka, ki jo vidimo, lahko jo tudi omejimo na naslednji način. Recimo, da uporabnik bančne kartice ni nek retard, in za PIN številko nima kombinacij kot so: 1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 9999, 0000. Število vseh kombinacij v takem primeru:

št. vseh kombinacij = 10^4  - 10 = 9.990

Nadaljujemo z omejitvijo. Recimo, da so naslednje kombinacije tut izven zone retardiranega človeka: 0123, 3210, 1234, 4321, ... , 7890, 0987. Vseh teh kombinacij je (upam, da sem prav izračunal) 2*8 = 16.

št. vseh kombinacij = 10^4 - 10 - 16 = 9.974

Številka se manjša, ampak mislim, da je to zadnja cifra v pragu neretardiranosti uporabnika. Če zopet izračunamo koliko let bi nam vzel brute force (maksimalno št. let, lahko se zgodi, da v prvo uganemo pravi PIN, v nadaljevanju).

št. dni = št. vseh kombinacij / št. kombinacij na dan = 9.974 / 2 = 4967 dni = 13.59 LET

Naj ne obupajmo. Recimo, da smo šli z babico enkrat na bankomat, in se spomnemo, kakšno cifro je pritisnila na prvem mestu, poglejmo kaj se zgodi v takem primeru:

št. vseh kombinacij = 10^3 - 10 - 16 = 974!!!
št. dni = št. vseh kombinacij / št. kombinacij na dan = 487 dni = 1.33 LET

Impresivno kajnedar? Kaj pa če poznaš 2 cifri? Imejmo v mislih, da tiste retardirane kombinacije izključimo iz igre.

št. dni = (10^2 - 10 - 16)/ 2 = 37 dni = 1 mesec in 7(6) dni.

Še tabela uspešnosti:
NAČIN ODSTOTEK
4 neznane cifre +0.01%/dan
3 neznane cifre +0.1%/dan
2 neznane cifre +1%/dan

(Pri računanju so bile upoštevane tiste "znane" kombinacije, katere sem izključil iz računov)

Zaključek


Ne splača se vam bruteforcat kartic, ker jo uporabnik lahko prekine še isti dan. Torej imaš 0.020052135% možnosti, da uganeš kodo in žrtvi pobereš denar >:C, se splača ali ne? Mejbi bejbi, mejbi bejbi... Kako bi naredili generator štiri-mestnih števil?

Tako, da ne jočite, če vam ukradejo denarnico, misliš da se bo nekdo jebu 13 let in pol za tisto minimalno plačo, ki jo prejemaš? NO.



Programming and shit:
Naredimo tabelo prepovedanih kombinacij, uporabimo Math.random() funkcijo, ki jo ima vsak programskih jezik, razširimo njegove meje od 0000 do 9999, pretvorimo v Integer (celo število) in to je to. Naredimo funkcijo, ki vrača to random število, psevdo koda:

sobota, 25. maj 2013

Prvih 70,000 praštevil

Sicer gre za simpelj algoritem, ampak tu se je predvsem šlo za hitrost le-tega. Do potankosti sem hotel pridobiti na hitrosti iskanja praštevil (gre se za metodo iskanja deliteljev, počasna zadeva, lahko bi vključil iskanje podobnih števil, kar bi pospešilo iskanje večjih praštevil). Generiral sem 70,000 praštevil v 510 sekundah. Hitrost se zmanjša za vsako praštevilo, in v povprečje generiranja je bilo 137 praštevil/s, kar je za  i3 procesor kar kul zadeva (imejmo v mislih, da sem hkrati zapisoval število na trdi disk, kar zmanjša hitrost za okoli 70%, thats bad). Spodaj imate link do seznama teh števil.

70 000 praštevil.txt (1004 KB)
DOWNLOAD



Če želite generirati svoja praštevila, s svojim močnim procesorjem in SSD diskom hehe, si pa pač naložite programček z vključenim algoritmom in pošljite zadevo preko vseh meja (meja v bistvu je, to je 2^64, you do the counting).

generiraj prastevila.exe (27 KB)
DOWNLOAD



PS: Zdej, ko sem še enkrat prebral tale post, sem si rekel: "Domen, idiot si, kje imaš slovnico, debilnež ti!"

sobota, 13. april 2013

The best way to read a file (C)

C programming language has plenty options on how to read a file. We will use the standard function fscanf. See an example:

Determine the pointer to a file using FILE variable and fopen function.

FILE *f = fopen(<path of the file>);

Or if you are reading through the arguments just simply change the path to argv[i], where i represents the index of the input argument e.g: ./a.out file.txt -> fopen(argv[2]);

Now you need to do a simple buffer. If you are reading characters simply create new char variable. Do the same with other variables. In this case I am going to use integer variable - I am going to read numbers off the file.

int buffer = 0;

Thats it! We are now ready to read the file. See the following code on how to read it:

fscanf(f, "%d", buffer);
fscanf(f, "%s", buffer); <- if your buffer is char variable 

Voila. You can now use the feof(f) function which closes the reading stream when the end of file appears.

petek, 5. april 2013

Mafin MusicToYoutube

 by Domen
Convert your music folders to youtube recognizable format with included picture in no time. ...


D O W N L O A D
(Version 1.1 alpha) (Debugging enabled)


D O W N L O A D 
(Version 1.0 alpha) (Debugging enabled)

torek, 5. februar 2013

Mafin Bomber

Bomb various email addresses with this tool. You only need a running SMTP server on your computer and you are good to go (it should run on port 25). You can also read an external .txt file as a body. Everything else is self explaining.



nedelja, 27. januar 2013

Mafin MML (MusicToYoutube lite version)

Mafin Movie Maker Lite converts an image and your .mp3 file into .mkv file which can be uploaded to Youtube.

How to use it:
1. put an image into this folder named as image1.jpg
2. put your .mp3 song or set into this folder and name it as song.mp3
3. run Mafin MML
4. profit