Stworzę dla Ciebie skaner usług gRPC w języku Python. Skaner będzie podobny funkcjonalnie do wersji Go, ale wykorzysta biblioteki Pythona do wykonania tego zadania.
Stworzyłem dla Ciebie skaner usług gRPC w Pythonie. Ten skrypt wykorzystuje asyncio do efektywnego równoległego skanowania wielu portów i hostów.
- Wykrywa serwery gRPC korzystające z mechanizmu refleksji
- Listuje wszystkie dostępne usługi na znalezionych serwerach
- Obsługuje równoległe skanowanie wielu portów
- Może skanować wiele hostów jednocześnie
- Wyświetla czytelne podsumowanie wyników
pip install grpcio grpcio-tools
python grpc-scan.py --hosts "localhost" --start 8000 --end 9000 --concurrency 50 python grpc-scan.py --hosts "localhost" --continuous --verbose --start 50051 --end 50052 --concurrency 2python grpc-scan.py --hosts "localhost" --verbose --start 50051 --end 50052
python grpc-scan.py --hosts "localhost" --verbose --stop-on-first --continuous --start 50051 --end 50052
python grpc-scan.py --hosts "localhost" --verbose --stop-on-first --continuous --start 50051 --end 50054 --rate 50
# Stop after finding the first gRPC service
python grpc-scan.py --hosts "localhost" --start 8000 --end 9000 --stop-on-first
# Short form
python grpc-scan.py -H "localhost" -s 8000 -e 9000 -f
Parametry:
--hostslub-H: lista hostów do skanowania (oddzielone przecinkami)--startlub-s: początkowy port zakresu (domyślnie 50000)--endlub-e: końcowy port zakresu (domyślnie 50100)--concurrencylub-c: maksymalna liczba równoległych skanów (domyślnie 50)
- Usunąłem wszystkie elementy związane z
asyncioigrpc.aio - Zamiast tego wykorzystałem
ThreadPoolExecutordo równoległego skanowania - Dodałem wstępne sprawdzenie połączenia TCP, aby szybciej przeskakiwać zamknięte porty
- Poprawiłem obsługę wyjątków, aby lepiej radzić sobie z różnymi wersjami gRPC
pip install grpcio grpcio-reflectionpython grpc-scan.py --hosts "192.168.188.226"Ta wersja powinna być bardziej kompatybilna z różnymi instalacjami Pythona i nie wymaga nowszych wersji gRPC, które obsługują asyncio. Skaner nadal efektywnie skanuje wiele portów równolegle, ale używa wątków zamiast asynchroniczności.
Czy chciałbyś, żebym wprowadził jakieś dodatkowe modyfikacje do tego kodu?