#!/usr/bin/env python # banner.py import sys import socket import argparse def grab(ip, port): """Connects to the specified IP and port, retrieves data and returns the decoded response.""" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP sock.settimeout(5) # Set a timeout of 5 seconds sock.connect((ip, port)) ret = sock.recv(1024) return ret.strip().decode() except socket.error as e: return f"Connection error: {e}" finally: sock.close() def main(): parser = argparse.ArgumentParser(description="Retrieve banner information from the specified IP and port.") parser.add_argument("ip", help="The target IP address") parser.add_argument("-p", "--port", type=int, default=25, help="The target port (default: 25)") args = parser.parse_args() ip = args.ip port = args.port print(grab(ip, port)) if __name__ == "__main__": main()