Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Wyszukiwanie dynamicznych programów wykonywalnych  (Przeczytany 3743 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« dnia: 2013-11-27, 09:28:43 »
Chcialbym w jakiś sposób wyszukać pliki binarne żeby je pognębić komendą ldd.
Znalazłem np. coś takiego
find -type f -perm -u+x
Sęk w tym:
 -wyszukuje pliki użytkownika wykonywalne, ale duzo plików ma prawa wykonywalności
a nie są dynamicznymi programami wykonywalnymi, np. niektóre obrazki .png
 -wyszukuje katalogi, co jest już kompletną porażką ( co jest dziwne )
 - " -executable "  i " -perm -u+x " wykonują chyba to samo nie?
  mam wrazenie ze " find -type f -executable " wyszukuje mi pliki normalnie ,
a " -perm u+x " jak się wykrzaczy to już nie szuka
Cytuj
find -type f -perm u+x
find: `./.local/share/webkit': Brak dostępu
Czyli lepsze by było
find -type f -executable
Dałoby rade jeszcze uściślić jakoś wynik?
Czy musze napisać skrypt który sprawdzi plik komendą ldd np.
Cytuj
ldd .//packages/textures/craig_fortune/crates/light.jpg
   nie jest dynamicznym programem wykonywalnym
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline mateo86

  • Users
  • Guru
  • *****
  • Wiadomości: 647
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #1 dnia: 2013-11-27, 10:24:48 »
Zaglądałeś do katalogów z */bin? Jak sama nazwa katalogu wskazuje, powinny w nim się znaleźć pliki binarne.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #2 dnia: 2013-11-27, 11:11:21 »
mateo86 , masz racje , ale owe pliki mam także w /opt, w katalogu domowym
...gdzieś i nie tylko.
Przykładowo /usr:
/usr/bin
/usr/sbin
żeby było śmiesznie jeszcze mógłbym mieć w
/usr/local/bin itd.

Pomyślałem jeszcze żeby dodać grep -v
 find -type f -executable   | grep -v ".html" | grep -v ".png" | grep -v ".jpg"
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #3 dnia: 2013-11-27, 11:18:18 »
Najprościej jest zgrubnie wyszukać kandydatów, a resztę załatwić poprzez kontrolę błędów wykonania komendy na tym pliku.

Nie za bardzo chyba rozumiem, dlaczego chcesz tak dokładnie sprawdzać format, skoro jest on sprawdzany podczas wykonania komendy. Jak dla mnie to robisz sobie podwójną robotę. Chyba, że niewłaściwie interpretuję cel tej operacji.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #4 dnia: 2013-11-27, 11:47:35 »
Cytuj
Nie za bardzo chyba rozumiem, dlaczego chcesz tak dokładnie sprawdzać format, skoro jest on sprawdzany podczas wykonania komendy.
Boję się się że skrypt znajdzie zbyt dużo wyników i przy sprawdzaniu przy pomocy
ldd będzie to trwało zbyt długo.

Co do rady mateo86 chyba się pomyliłem, pzepraszam :)
jest to jakieś ułatwienie, bo w systemie głównie w folderach z nazwą bin są.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #5 dnia: 2013-11-27, 12:00:30 »
Cytuj
Boję się się że skrypt znajdzie zbyt dużo wyników i przy sprawdzaniu przy pomocy
ldd będzie to trwało zbyt długo.
Nie da się jednoznacznie określić, czy plik jest wykonywalny czy nie bez analizy jego zawartości. Nie sądzę, żeby wykonanie skryptu analizującego plik było bardziej efektywne niż procedura sprawdzająca w ldd, dodatkowo masz stuprocentową pewność, że nie pominiesz żadnego pliku.
Jeżeli jednak chcesz bawić się w analizę to zwróć uwagę na komendy
file
mimetype

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #6 dnia: 2013-11-27, 12:02:52 »
Może to pomoże:
pawel@inet/~/Pobrane> cat main.c        
int main(){return 0;}
pawel@inet/~/Pobrane> gcc -static -o main.static main.c
pawel@inet/~/Pobrane> gcc -o main.dynamic main.c
pawel@inet/~/Pobrane> file main.static
main.static: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=794e629042705246c4a8b3256f37009c41ec636a, not stripped
pawel@inet/~/Pobrane> file main.dynamic
main.dynamic: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=a0b06a6a39f79c536bbd0d03c81df2d522b5200d, not stripped
pawel@inet/~/Pobrane>
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #7 dnia: 2013-11-27, 12:22:57 »
Ok, rozumiem  Dziękuję wszystkim :)
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

xavery

  • Gość
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #8 dnia: 2013-11-27, 16:06:31 »
Cytat: tele
Chcialbym w jakiś sposób wyszukać pliki binarne żeby je pognębić komendą ldd.
Znalazłem np. coś takiego
find -type f -perm -u+x
Sęk w tym:
 -wyszukuje pliki użytkownika wykonywalne, ale duzo plików ma prawa wykonywalności
a nie są dynamicznymi programami wykonywalnymi, np. niektóre obrazki .png
 -wyszukuje katalogi, co jest już kompletną porażką ( co jest dziwne )
Nie podajesz katalogu w którym find ma szukać. W takim przypadku find wypisze wszystko co ma w bieżącym katalogu, włącznie z katalogami i innymi rzeczami a niezależnie od parametrów które mu podasz.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyszukiwanie dynamicznych programów wykonywalnych
« Odpowiedź #9 dnia: 2013-12-12, 12:41:34 »
Cytat: "xavery"
Nie podajesz katalogu w którym find ma szukać. W takim przypadku find wypisze wszystko co ma w bieżącym katalogu, włącznie z katalogami i innymi rzeczami
To jest właśnie piękne :D
Cytat: "xavery"
a niezależnie od parametrów które mu podasz.
Ehh :(

Dzisiaj się trochę pobawiłem.
$ find   -perm u+x
find: `./.local/share/webkit': Brak dostępu
$ find ~/  -perm u+x
find: `/home/gg/.local/share/webkit': Brak dostępu
Potem próba jak ty napisałeś ( w tym samym terminalu), nawet testowałem z $pwd i wpisałem jeszcze raz
$  find -perm -u+x
.
./Obrazy
./.cache
./.cache/.fr-Y8QAsm
./.cache/thumbnails
i magia i działa i nawet w osobnym terminalu, ale po zamknięciu wszystkich terminali  już nie działa, uruchomiłem ze skryptu i nawet po zaknięciu działa, zresetuje komputer to chyba przestanie xD
Mimo że czasami mi działa to pewnie xavery masz racje. :)

Co do plików wykonywalnych
- skorzystałem przykładowo z
find /bin/  -type f -executable | xargs file | grep "ELF." | cut -d: -f1
i dodałem kilka takich linijek zamiast $pwd lub / bo lepiej się czuje jak mi nie sprawdza w /media i /mnt, mimo że mam wątpliwości co do wydajności użycia kilku lini, a 1 lini poleceń.
- moje użycie "  | grep -v ".html" " też było błędem,
ponieważ umnie grep nie brał pod uwagę kropki,  
gdy chciałem przykładowo ominąć z rozszerzeniem " .en " , pomijał także ciągi tekstów np. elementary.bin , " elem -en- tary.bin " .
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.