#python
Вопрос:
Я видел много руководств по портам, возвращающим баннеры (сервисы, которые они используют), но мой не покажет этого. Какая-нибудь помощь? Я просто хочу вернуть услугу, которую использует порт.
import socket
s = socket.socket()
def re_banner(ip, port):
try:
s.connect((ip, port))
banner = s.recv(1024).strip()
return banner
except socket.error:
pass
except:
raise
def main():
ip = raw_input("Please enter the IP: ")
for port in range(1,1000):
banner = re_banner(ip,port)
if banner:
print '[ ]' ip '/' str(port) ' : ' banner.strip()
main()
Комментарии:
1. Вы подтвердили, что какие-либо службы, к которым вы пытаетесь подключиться, действительно возвращают какой-либо баннер (например, подключившись к ним вручную с помощью чего-то подобного
nc
)?2. Если возможно (если вы не находитесь в какой-либо рабочей среде), пожалуйста, обновите себя до Python 3 🙂
3. Вы заставляете замолчать
socket.error
С. Попробуйте удалить этоexcept
и посмотрите, даст ли это вам какую-либо информацию4. Почему вы повторно используете один и тот же сокет
s
? Я бы ожидал, что он потерпит неудачу, потому что он уже подключен на каждой итерации после первой.5. @Tomerikoo Это не сработало только с исключением, это ничего мне не дало, и я играл с этим.