Jump to content
amprenta

Un mic challenge :)

Recommended Posts

Un mic challenge -

http://illhostit.com/files/a0106706c201607e2f2618ac14b6952a/asta.rar

in arhiva veti gasi un fisier text ,si un executabil ...

In fisierul text se afla mai multe numere consecutive de la 0 la n, sa zicem ... (le-am "amestecat " un pic sa nu fie chiar in ordine ) .Am sters un numar dintre ele deci avem acolo n-1 . Treaba voastra ii sa faceti un program care gaseste numarul lipsa :)

Dupa ce sunteti siguri ca ati aflat numarul ,treceti la "go.exe " ,unde numarul gasit v

Link to comment
Share on other sites

Codul pentru cautarea numarului lipsa:


#!/usr/bin/perl
open(FP,"< asta.txt"); @file=<FP>; close(FP);
$line=$file[0];
@spl=split(/ /,$line);
for($i=0;$i<@spl;$i++)
{
$is=0;
for($j=0;$j<@spl;$j++)
{
if($spl[$j]==$i) { $is=1; last; }
}
if($is==0) { print("$i\n"); }
}

Codul meu secret: UnkeM (pentru numele SlicK)

Link to comment
Share on other sites

good work SlicK -

dar pentru a evita crearea unui array cu mii de elemente si dupa parcurgerea lui se poate face si asha : sa zicem ca avem

0 1 2 3 4 (n) scoatem pe 2 de ex

0 1 3 4 (n-1) (ce apare in fisier)

acuma facem suma lor Sn=0 + 1 + 2 +3 +4 = 10

Sn-1=0+1+3+4 =8

si scadem :) Sn-Sn-1 =10-8 =2 (exact elementu care lipseste)

#include <stdio.h>

main()
{
FILE *g;
int i,Sn=0,Sn1=0,contor=0;

g = fopen("C:\\asta.txt","r"); //deschidem fisierul pentru citire

while (!feof(g))
{
fscanf(g,"%d",&i); //citim cate o valoare din fisier si adaugam la suma
Sn1 = Sn1+i;
contor++; //contor = cate elemente avem in fisier
}
fclose(g); //inchidem fisieru -citirea s-a terminat

for (i=0;i<=contor;i++)
Sn=Sn+i; //Suma primiilor n termeni (in fisier aveam n-1)

printf("%d",Sn-Sn1); //diferenta e chiar numaru care lipseste

}

numarul care trebuia aflat : 1698

-------------------------------------------

Trecem la go.exe - unde vedem "Introdu parola "si mai sus Please reverse me .Daca nu va ducea cu gandu sa "intoarceti" numarul adica 1698- > 8961 , ci mai degraba sa deschideti in Olly (sau orice alt debugger ,hex editor ..etc) puteati afla cu usurinta care este raspunsul si aici avem asha :

1. Puteai sa dai NOP la JNZ unpacked.0040158F de la adresa 004014DA -asta facea ca orice introduci sa fie corect

2. Daca studiai un pic codul cu un f8 vedeai la Call-urile catre strcmp ,ce se compara ...

etc etc ...

In functie de Numele ce il introduceai rezulta un cod secret care se obtine prin incrementarea valorii ASCII a fiecarei litere, cu 2 .De ex daca introduceai "abc" codul secret era "cde"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...