X
ďťż

Ładny brzuch

Witam,

Ponieważ w tamtym temacie wywnioskowałem, że będzie trudno wi ęc pytam tutaj:

Wie ktoś jak w C++ lub Delphi stworzyć plik, który będzie dowolnym plikiem o rozmiarze np.50 kB, a imitował będzie plik o wielkości powiedzmy 1 gB??

Przy czym, żeby to nie uszkodziło mi dysku ani systemu plików i abym mógł zapisać inne dane na obszarze zajmowanym przez częśc fałszywą :P

Z góry wielkie dzięki...

ps: ide oglądać Polska:Białoruś :P

--
Jak cos może sie zepsuć, to sie zepsuje :P

Pozdrawiam, StiloMAN



nikt ci nie powie, bo coś mi tu nie pasuje z tymi plikami. Po co ci takie pliki :twisted: :?:?:?

PS : nie odpowiadajcie na ten post, bo wyjdzie, że nie przepowiadam przyszłości :cheesy: .

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

Hehehe to trochę nowatorska metoda daj w OnCreate formy taki kod (hehehe):
ShowMessage('Witaj imituję plik o rozmiarze 1 GB');
I masz swój "fałszywy" plik hehehe.
A teraz na poważnie: takiego czegoś (jak przynajmniej wynika z mojej wiedzy) nie da się zrobić :!
P.S. Na przyszłość nie osłabiaj nas takimi pytaniami albo zadawaj je na www.binboy.org/forum

Program bez bugów to czyste lamerstwo :D

Tak do końca nie jestem w ogóle pewien, czy da się zrobić krótki plik, i tak oszukać Windę, aby widziała go jako 1gb (bez jakichś tajnych sztuczek na poziomie jądra), ale za to można zrobić plik 1 - gigowy prawdziwy:

1) Za pomocą assemblera napisać program lub wstawkę modyfikującą wpisy w tablicy allokacji plików tak, aby plik miał rozmiar tego 1 GB.

2) Można zrobić takiego batcha:
type nazwa_batcha >> nazwa_batcha

gdzie nazwa_batcha to oczywiście nazwa batcha :), i KONIECZNY JEST ENTER NA KOŃCU. Potem tylko włączyć i czekać :)
-----
A jak ktoś znajdzie sposób, to niech go postnie, bo też jestem ciekaw

//================================================

KĄEACP: Komputer Ąwiat - Expert Society Against Crap Posting
To join: Put these lines in your signature and don't post crap!



Nie znam sposobu, ale niektóre programy p2p najpierw tworzą np 600 megowy plik a dopiero po tem zapisują do niego. Czyli jest 600 mb plik a w nim jest np.: tylko 5 mb danych. O to chodziło????

:cheesy:

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

cytat:TouchThis napisał:

Nie znam sposobu, ale niektóre programy p2p najpierw tworzą np 600 megowy plik a dopiero po tem zapisują do niego. Czyli jest 600 mb plik a w nim jest np.: tylko 5 mb danych. O to chodziło????

Taki sposób rezerwacji miejsca jest dość powszechnie stosowany. Podobne metody wykorzystują edytory video. Przykładow taki program do zrzucania video potrzebuje zarezerowować pewną ilość miejsca ale tak na prawdę nie wiadomo ile tego miejsca w pamięci zostanie wykorzystane, nie wiadomo bowiem jak długa część filmu będzie zrzucana, czy będzie to tylko 5min. czy może 1godz. Program jednak musi zarezerwować odpowiednio dużą ilość miejsca tak aby zapewnić ciągłość bloku pamięci a jednocześnie ilość ta nie powinna być marnotrawiona w przypadku jej całkowitej niewykorzystania. Z pomoca rpzychodzi API windows dostarczające odpowiednie funkcje (np. VirtualAlloc) pozwalające alokować duże oczszary pamięci, przydzielając jedynie niewielkie ich części a resztę jedynie zarezerwować tak na wszelki wypadek dla programu dgyby była potrzebna. w przypadku jej niewykorzystania zostaje ona zwrócona systemowi operacyjnemu. sprawa z plikami w programach p2p wygląda podobnie choć w zasadzie plik może faktycznie mieć rozmiar taki jaki zostanie zaalokowany to jednak program wykorzystuje niewielka jego część, plik moze być po prostu pustym obiektem (buforem) do którego w trakcie działania programu są zapisywane dane. Tyle tylko że o ile w przypadku zarządzania pamięcią cały interfejs dostarcza system operacyjny o tyle w przypadku zapisu do takich plików ten mechanizm trzeba sobie jakoś w aplikacji zorganizować - najlepiej wiec stworzyć odpowiednio duzy plik i do niego zrzucać dane, koniec pliku (rezerwacja) w takim przypadku nie zawsze musi byc równy końcowi danych (przydzielenie).
Przykład:
HANDLE f=CreateFile("C:plik.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
if(f==INVALID_HANDLE_VALUE) exit(-1);
static char buf[4096];
unsigned long bw;
WriteFile(f,buf,4096,&bw,NULL);
CloseHandle(f);
W przykładzie nastepuje zapis tablicy buf do pliku choć faktycznie tablica jest pusta. Łatwo to sprawdzić wywołując strlen(buf) - okarze się że rozmiar tablicy równa sie 0 a mimo to stworzony został plik o rozmiarze 4096. zostawmy jednak sprawę dużych plików i programów p2p bo domyślam się że StiloMAN'owi nie o to chodziło.
Jesli chcesz tworzyć duże pliki ale w taki sposób by oszukac system musisz poznac kilka istotnych rzeczy. Przede wszystkim konieczna jest wiedza o struktury dysku i tablicy partycji, bez tego ani rusz. Choć nawet posiadając ta wiedzę nie znaczy że łatwo się z tym uporasz. Wprost przeciwnie, problem jest bardzo trudny i ambitny. I [o ile tak mozna powiedziec] w przypadku systemu plików FAT jest to kaszka z mleczkiem:))) o tyle w przypadku NTFS jest to praktycznie niewykonalne - w NTFS masz dużą tablice partycji, skąplikowane struktury danych, kopie tablic, kopie danych, kopie kopii... i kronikowanie... itp. Ale kiedy już jakimś cudem być posiadł właściwą wiedze to kto wie.. na pewno mógłbyś wiele namieszać przynajmniej na partycji FAT, bo trzeba wiedzieć że na partycjach NTFS na straży stoi coś jeszcze... dostępu chroni system operacyjny... każda operacja zapisu na dysk przechodzi przej system a jeżeli coś zaczyna się wymykać spod kontroli wtedy....[BS]. Niemniej jednak co nieco można sobie podziałac równiez na NTFS;).Acha, jeszcze jedna rzecz którą trzeba wiedzieć/umieć - przynajmniej w stopniu zaawansowanym assembler:)
Ale, Uwaga!!! jest jeszcze jeden sposób [a w zasadzie nie wiem czy to sposób czy po prostu trzeba było to wiedzieć:)))]. Windows dostarcza programistą właściwe API pozwalająco "niskopoziomowo" (w przenośni) działac na danych zapisanych na dysku. Przeanalizujmy to. Przecież wszelkiego rodzaju defragmentatory czy scandiski mają bezposredni dostęp do bloków danych a pośrednio nawet do poszczególnych bitów. Powiedzmy taki defragmentator oznacza sobie miejsce na dysku na moment by za chwile w to miejsce przenieść fragment pliku (sektor) - oznaczenie tego kawałka dysku oznacza że to miejsce jest zajęte, zawiera jakieś dane choć faktycznie jeszcze tam nic nie ma dopiero za chwilę zostanie tam coś zapisane. Jeszcze lepiej i pewniej posłużyć się wzorem scandiska. Ten znajdując uszkodzony sektor na dysku twardym za pomocą właściwej funkcji API informuje o tym system, ten skrupulatnie odnotowuje to w tablicach partycji i kronikach i tym sposobem dany sektor zostaje oznaczony jak uszkodzony (bad) i od tej pory żaden program nie ma prawa ani mozliwości zapisać w tym sektorze ani jednego bita, nic kompletnie nic. A gdyby sobie oznaczyć taki jeden czy drugi sektor czy nawet wyszukać ciąg nieużywanych sektorów i wszystkie je oznaczyć jako złe, dzieki temu zyskamy pewność że nic nie zostanie nadpisane na naszych danych które na tych złych sektorach wyląduję a jednozcesnie sami nie nadpiszemy plików innych programów. Powstaje pytanie w jaki sposób nastapi zapis o odczyt takich sektorów skoro na straży stoi system. Otóz za pomocą tych samych funkcji APi którymi posługuje się defragmentator do przenoszenia danych czy scandisk. Owszem mozna jeszcze w tym przypadku zdać się na assembler względnie na c++, przy dobrych układach nie powinno się nic nadzwyczajnego dziać. Tak to wygląda przynajmniej w teorii, a w praktyce polecam zarzucic google;) zapewniam że właściwe kody źródłowe są w zasięgu ręki (przy odrobinie szczęścia;)))) zwłaszcza co się tychy drugiej z opisywanych przeze mnie metod. Czy w Pascalu?? Nie wiem, w pewnym stopniu na pewno. Przecież API Windowsowe jest osiągalne chyba w takim podobnym stopniu w Pascalu co a C/C++. Na 100% w C++, tutaj język daje trochę większe pole manewru, łatwiej jest podziałac w czystym assemblerze czy w samym API Win32. Ale jak mówię podstawa to znajomość właściwych funkcji API lub zamienni assemblera a najlepiej wszystko razem i opakowac to w C++:)

pzdrv,

KoDo

No. To był wstęp w następny poziom trudności programowania. A tak właściwie, to do czego ci to????

:cheesy:

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

co go krytykujesz? podsunął mi pomysły :)

najbardziej interesuje mnie to, żeby ustawić, że dany sektor jest zły :D jak mi się to uda, to będzie niezła bomba :D

a czy takie coś (złe sektory) można usunąć ??

--
Jak cos może sie zepsuć, to sie zepsuje :P

Pozdrawiam, StiloMAN

cytat:StiloMAN napisał:
a czy takie coś (złe sektory) można usunąć ??

Zalezy co masz na mysli mówiąc "usunąć". Jęsli chodzi o to czy z poziomu swojego programu moglbyś go przywrocic do stanu pierwotnego to owszem, w odpowiednum miejscu :cheesy: jest "zaksiegowane" ze sektor jest zly, dziala to takze w odwrotna strone to znaczy ze rownie prosto :cheesy: mozna to "odksięgowac".

A jesli chcesz wiedziec czy inne programy moga sie dobrac do twojego sektora - raczej tylko specjalistyczne oprogramowanie typu scnadisk i pochodne - czyli takie ktore skanuja dysk w poszukiwaniu bledów. Typowy scaandisk np. bada bad sektory tylko przy gruntownym tescie (a wiec taki bardzo dlugi), normalnie tego nie sprawdza bo przyjmuje ze skoro sektor zostal oznaczony jak zly to tak musi byc. Defragmentator natomiast w o gole pomija te sektory bo i po co skoro tam nie ma prawa nic byc ;).
Pomijam juz tu fakt zachowania sie w/w oprogramowania w przypadku róznych faktycznych uszkodzen dysku - bo trzeba wiedziec ze sa dwa rodzaje uszkodzen: fizyczny i logiczny.

KoDo

Co krytykujesz? Ja nikogo nie chce krytykować! Jak to tak wyglądało to właśnie mówie, że nie miało tak wyglądać. A badSectory mozna łatwo odzyskać do sprawnej postaci. Norton System Works 2004 i po sprawie...:cheesy:

________________________________________________
._-= EVERYTHING THAT HAS BEGINNING HAS AN END =-_.

http://4programmers....le.html?id=1204 - AFS 1.9.0.5

Mam immunitet wszystkiego na DYS.

Jedno pytanko :

Co te wasze poprzednie posty wniosły do tematu skoro StiloMAN pytał jak utworzyć taki plik bez zajmowania miejsca na dysku. A Wy opisujecie normalnie metody zapisu pliku na dysku. Tutaj trzeba utworzyc tzw. dummy file, to działa tak jak w niektorych starszych grach komputerowych zabezpieczenie przed kopiowaniem, tz. na płycie 700 MB wypalone jest teoretycznie np. 5 GB. Do tworzenia tego typu plików widziałem gdzieś na sieci programik, jak znajde to dołoże linka.

Nie ma programów bez błędów, są tylko niedostatecznie przetestowane.

ja też znalazłem jakiś program "Fake File Genrator 0.3v"...
ale nieznalazłem nigdzie downloadu...

--
Jak cos może sie zepsuć, to sie zepsuje :P

Pozdrawiam, StiloMAN

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •  

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.