[C++] Program do zapełniania pamięci RAM
- sibul
- Wytworny Kaczor
- Posty: 318
- Rejestracja: 16 paź 2007, 22:29
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
[C++] Program do zapełniania pamięci RAM
Witam proszę o pomoc w napisaniu programu (C++) który zapętli wywoływanie funkcu fork(); Jak wiadomo fork powołuje do pracy nowy proces itd itd. I program ma się zapętlić. Gdy się go uruchomi zapełni całą pamięć jedynie roota bo user nie ma praw by zajać całą dostępną pamieć.
OS X 10.8.3
- Dwimenor
- Przebojowy Jelonek
- Posty: 1260
- Rejestracja: 18 mar 2008, 16:14
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Architektura: x86_64
Odp: [C++] Program do zapełniania pamięci RAM
Może wzoruj się na bashowej forkbombie?
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
Powyższe zdanie jest prawdziwe.
-
- Przyjaciel
- Posty: 259
- Rejestracja: 17 gru 2006, 16:07
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: KDE Plasma
Odp: [C++] Program do zapełniania pamięci RAM
Bo zapytanie wujka google oczywiście boli... http://pl.wikipedia.org/wiki/Fork-bomba
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
- doles2
- Sędziwy Jeż
- Posty: 46
- Rejestracja: 24 lip 2006, 19:58
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: KDE Plasma
- Architektura: x86_64
Odp: [C++] Program do zapełniania pamięci RAM
I tak najprawdopodobniej Ci się to nie uda ponieważ w Linuksie masz pewien limit (RLIMIT_NPROC) i mówi on ile dany użytkownik może uruchomić maksymalnie kopii danego procesu. Każdy proces, który wywołuje funkcję fork() ma także swojego właściciela (UID użytkownika). No i jeśli Twój program za bardzo się rozmnoży do liczby RLIMIT_NPROC wówczas każde następne wywołanie fork() zawiedzie. Można ten limit zmieniać przy pomocy programu ulimit albo edytując /etc/security/limit.conf
- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [C++] Program do zapełniania pamięci RAM
A nie prościej po prostu w pętli uruchamiać malloc() ?Witam proszę o pomoc w napisaniu programu (C++) który zapętli wywoływanie funkcu fork(); Jak wiadomo fork powołuje do pracy nowy proces itd itd. I program ma się zapętlić. Gdy się go uruchomi zapełni całą pamięć jedynie roota bo user nie ma praw by zajać całą dostępną pamieć.
Poza tym, Linux używa mechanizmu copy-on-write podczas tworzenia nowych procesów, co oznacza, że nowa pamięć będzie przydzielana dopiero w momencie próby modyfikacji strony pamięci (do tego momentu strony są współdzielone).
- sibul
- Wytworny Kaczor
- Posty: 318
- Rejestracja: 16 paź 2007, 22:29
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
Odp: [C++] Program do zapełniania pamięci RAM
Użytkownik ma ograniczenia, root niema. I domyślnie jeśli ktoś nie ma ustalonych limitów to zawiesi mu cały system na pewno.
OS X 10.8.3
-
- Serdeczny Borsuk
- Posty: 211
- Rejestracja: 13 gru 2006, 21:12
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: [C++] Program do zapełniania pamięci RAM
tyle że valinilowe linuksy mają nproc unlimited, i trzeba sobie dopiero limity ustawić. jestem 'głęboko przekonany' że fork bomb zadziała na systemach 90% użytkowników tego forumdoles2 pisze:I tak najprawdopodobniej Ci się to nie uda ponieważ w Linuksie masz pewien limit (RLIMIT_NPROC) i mówi on ile dany użytkownik może uruchomić maksymalnie kopii danego procesu. Każdy proces, który wywołuje funkcję fork() ma także swojego właściciela (UID użytkownika). No i jeśli Twój program za bardzo się rozmnoży do liczby RLIMIT_NPROC wówczas każde następne wywołanie fork() zawiedzie. Można ten limit zmieniać przy pomocy programu ulimit albo edytując /etc/security/limit.conf
pochwalcie się co wypisuje wam ulimit -u
Kod: Zaznacz cały
pawel@alef ~ % ulimit -u
300
pawel@alef ~ %
- amorfic
- Sędziwy Jeż
- Posty: 59
- Rejestracja: 03 lis 2008, 22:02
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: [C++] Program do zapełniania pamięci RAM
u mnie tak:bogaczew pisze:tyle że valinilowe linuksy mają nproc unlimited, i trzeba sobie dopiero limity ustawić. jestem 'głęboko przekonany' że fork bomb zadziała na systemach 90% użytkowników tego forum
pochwalcie się co wypisuje wam ulimit -uKod: Zaznacz cały
pawel@alef ~ % ulimit -u 300 pawel@alef ~ %
Kod: Zaznacz cały
piotr@jarjarbings:~$ ulimit -u
16381
Kod: Zaznacz cały
root@jarjarbings:/home/piotr# ulimit -u
16381
- sibul
- Wytworny Kaczor
- Posty: 318
- Rejestracja: 16 paź 2007, 22:29
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
Odp: [C++] Program do zapełniania pamięci RAM
@amorfic nie pokazuj polecenia roota bo root zawsze ma możliwość zapełnienia pamięci.
Kod: Zaznacz cały
rut@ubuntu:~$ ulimit -u
500
OS X 10.8.3
- amorfic
- Sędziwy Jeż
- Posty: 59
- Rejestracja: 03 lis 2008, 22:02
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: [C++] Program do zapełniania pamięci RAM
pierwszy podany wynik ulimit jest z mojego podst. konta użytkownika
-
- Piegowaty Guziec
- Posty: 27
- Rejestracja: 16 lut 2008, 20:07
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [C++] Program do zapełniania pamięci RAM
kamil@laptong:~$ ulimit -u
250
Standardowo ubuntu nie ma ustawionego limitu procesów. Proponował bym, aby przy tworzeniu zlokalizowanej dystrybucji Ubuntu, twórcy co dobierają programy wstawili standardowo jakiś przyzwoity limit.
250
Standardowo ubuntu nie ma ustawionego limitu procesów. Proponował bym, aby przy tworzeniu zlokalizowanej dystrybucji Ubuntu, twórcy co dobierają programy wstawili standardowo jakiś przyzwoity limit.
-
- Piegowaty Guziec
- Posty: 8
- Rejestracja: 11 lip 2006, 10:18
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
- Kontakt:
Odp: [C++] Program do zapełniania pamięci RAM
Kod: Zaznacz cały
#include <cstdlib>
int main() {
while(1) {
fork();
int*p=new int;
}
}
RoXeon
Registered Linux user #423407
Registered Linux user #423407
-
- Piegowaty Guziec
- Posty: 11
- Rejestracja: 14 gru 2010, 21:30
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: [C++] Program do zapełniania pamięci RAM
Kod: Zaznacz cały
ulimit -u
unlimited
Jak zmienię to wtedy blokuje mi ten atak .Ale jak włączę następny terminal to mam wcześniejsze ustawienia i komputer się wiesza. Jak na stałe zmienić ustawienia ?
Zmieniam tak ulimit -u 30
-
- Serdeczny Borsuk
- Posty: 211
- Rejestracja: 13 gru 2006, 21:12
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: [C++] Program do zapełniania pamięci RAM
wpisz limity w /etc/security/limits.conf
przeczytaj też http://www.cyberciti.biz/tips/linux-lim ... ocess.html
jako ciekawostkę dodam, że na osx mam defaultowo
wydaje się dosyć niskie, ale nigdy nie było to ograniczeniem
przeczytaj też http://www.cyberciti.biz/tips/linux-lim ... ocess.html
jako ciekawostkę dodam, że na osx mam defaultowo
Kod: Zaznacz cały
pawel@pi:~$ ulimit -u
266
pawel@pi:~$
-
- Piegowaty Guziec
- Posty: 11
- Rejestracja: 14 gru 2010, 21:30
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: [C++] Program do zapełniania pamięci RAM
Dzięki za link, bardzo pomogło 

Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości