Gå til innhold

ascii-verdien av en char


Anbefalte innlegg

Hei

 

Jeg har nå strevd ganske lenge med et ganske enkelt problem. Jeg får en streng fra en bruker vha. cin, legger sammen hex-verdien for ascii-representasjonen av hvert tegn til en sum, før jeg printer denne ut til brukeren igjen.

 

Denne relativt enkle oppgaven blir straks ganske vrien når mine skrantende ferdigheter blir nødt for å jobbe midt på natta. Har noen lyst til å lage en kodesnutt som jeg kan se på og lære av?

 

Jeg vil ikke engang poste det jeg har kommet frem til, iom. at jeg nå til sist har prøvd meg med en switch/case med 62 mulige utfall (a-z, A-Z, 0-9) for å finne hex-verdien av et ascii-tegn.

 

Av en eller annen grunn ender jeg opp med alt for store tall. Riktignok kom det seg etter at jeg husket å sette en startverdi på 0 for min sum-integer, men tallene er fremdeles for store.

 

Eks: "Hihi9" som input skal gi 1BB som output.

Lenke til kommentar
Videoannonse
Annonse

Tar dette videre i samme tråd, siden problemstillingen ikke har endret seg mye:

Hvordan skrive dette penere og mer oversiktlig (tror ikke jeg skjønner min egen kode dersom jeg ser tilbake på den om 1 mnd.)

 

int main(){
   
printf("username: ");
char bla[25];
gets(& bla);
int bla2=0x1111;
unsigned short int bla3 = 0x0000, bla4 = 0x0000;
int i = 0;
for(i=0;i<strlen(bla);i++){
bla2 += (int)bla[i];
bla3 = (bla2/0x100 - 0x17)*0x100;     //Dette må da kunne gjøres mer elegant?
bla4 = bla2-bla3-0x1700;
bla2 = bla3+bla4;
} 
bla2 = (0x10000+bla2)*0x71;
printf("password: ");
printf("%x\n",bla2);
getch();
}

 

Denne gangen er koden ment å generere et passord ut fra et brukernavn på samme måte som i dette utdraget fra en disassemble av en crackme:

Disassemble_crackme_03.txt

 

Jeg har en følelse av at man bør kunne fikse en del av koden så den både er penere og mer effektiv, for det skal ikke store modifiseringer til av oppgaven før den der er satt ut av spill :p

 

Har noen kanskje en mer C++'ish variant av koden?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...