Data: 2008-01-21 10:40:16
Pito | [Hackme] Misja 4
Hej Piotrek Zacząłem grac w grę hackme i przy 4 misji próbuję przerobić kod szyfrujący na cpp. i program mi się kompiluje ale windows wyświetla błąd
oto raport windowsa
<?xml version="1.0" encoding="UTF-16"?> <DATABASE> <EXE NAME="Projekt1.exe" FILTER="GRABMI_FILTER_PRIVACY"> <MATCHING_FILE NAME="Project1.exe" SIZE="10240" CHECKSUM="0x5F6BD654" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="01/21/2008 09:27:14" UPTO_LINK_DATE="01/21/2008 09:27:14" /> <MATCHING_FILE NAME="Projekt1.exe" SIZE="475129" CHECKSUM="0x5D738181" MODULE_TYPE="WIN32" PE_CHECKSUM="0x75459" LINKER_VERSION="0x10000" LINK_DATE="01/21/2008 09:36:14" UPTO_LINK_DATE="01/21/2008 09:36:14" /> </EXE> <EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY"> <MATCHING_FILE NAME="kernel32.dll" SIZE="1013248" CHECKSUM="0xBE05D016" BIN_FILE_VERSION="5.1.2600.3119" BIN_PRODUCT_VERSION="5.1.2600.3119" PRODUCT_VERSION="5.1.2600.3119" FILE_DESCRIPTION="Biblioteka DLL klienta Windows NT BASE API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="System operacyjny Microsoft® Windows®" FILE_VERSION="5.1.2600.3119 (xpsp_sp2_gdr.070416-1301)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Wszelkie prawa zastrzeżone." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xFE7A8" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.3119" UPTO_BIN_PRODUCT_VERSION="5.1.2600.3119" LINK_DATE="04/16/2007 15:54:44" UPTO_LINK_DATE="04/16/2007 15:54:44" VER_LANGUAGE="Polski \[0x415]" /> </EXE> </DATABASE>
a program który kompiluje to
#include <iostream.h> #include <conio.h> main() { int haslo; int tab[25] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; for(int i=0; i<=tab[25]-1; i++) { haslo = tab[i+1];
} cout<<haslo; getch();
}
a całość wygląda tak i nie mogę znaleźć zasady działania dlatego prubuje przerobić na cpp bo nie znam javy
<html> <head> <title>Hackme 3.0 - by Unknow</title> </head> <body text="white" bgcolor="black" link="yellow" vlink="yellow" alink="yellow">
<script>
//-----------------------------
function koduj(co) { var alfabet='abcdefghijklmnopqrstuwxyz'; var haslo=''; for (i=0; i<=co.length-1; i++) { haslo+=co.substring(i,i+1)+alfabet.substring(i,i+1); } return haslo; }
//-----------------------------
function spr() { twoje=document.getElementById('haslo').value; if (koduj(twoje)=='aanbacndaesf') { alert('Haselko poprawne!'); self.location=twoje+'q.htm'; } else { alert('To nie do konca to haslo :/'); } }
//-----------------------------
</script> <h3>Hackme 3.0 - level #4</h3> Podaj haslo: <input type="password" id="haslo"> <input type="button" onclick="spr()" value="Go!"> </body></html>
|
Data: 2008-01-21 12:37:54
Piotr Szawdyński | Błędy w kodzie C++
W tej linijce masz conajmniej 2 błędy:
for(int i=0; i<=tab[25]-1; i++) 1. element w tablicy tab[25] nie istnieje (naruszenie ochrony pamięci). 2. Nawet jeśli zadziała ten program, to kompilator będzie wykonywał pętlę losową ilość razy. Dlaczego? tab[25] - niezainicjowana wartość = program podczas kompilacji otrzyma przypadkową wartość np. 12411423 i tyle razy się wykona ta pętla, więc siłą rzeczy program się wywali. Wydaje mi się, że Twoja pętla miała wyglądać tak:
for(int i=0; i<25-1; i++) |
Data: 2008-01-21 14:30:32
Pito |
Dokładnie chciał bym napisać w cpp coś takiego
for (i=0; i<=co.length-1; i++) { haslo+=co.substring(i,i+1)+alfabet.substring(i,i+1); }
ale nie mam pojęcia co oznacza "co.length" i jak można dodać te 2 obiekty które są literami "substring(i,i+1)+alfabet.substring(i,i+1);"
|