Started working on bank scanner
This commit is contained in:
parent
7a7417ac1c
commit
da7c809a16
37
src/bank_protocol/bank_scanner.py
Normal file
37
src/bank_protocol/bank_scanner.py
Normal file
@ -0,0 +1,37 @@
|
||||
from typing import Optional
|
||||
import socket
|
||||
import threading
|
||||
import logging
|
||||
|
||||
class BankScanner():
|
||||
def __init__(self, host: str, port_start: int, port_end: int):
|
||||
self.logger = logging.getLogger(__name__)
|
||||
self.host = host
|
||||
self.port_start = port_start
|
||||
self.port_end = port_end
|
||||
|
||||
def scan(self) -> Optional[socket]:
|
||||
threads = []
|
||||
|
||||
for port in range(self.port_start, self.port_end + 1):
|
||||
t = threading.Thread(target=self.__probe_for_open_ports, args=(self.host, port,), name=f"ScannerThread-{self.host}:{port}")
|
||||
threads.append(t)
|
||||
|
||||
def __probe_for_open_ports(self, host: str, port: int) -> Optional[socket]:
|
||||
try:
|
||||
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
connection.connect((host, port))
|
||||
self.__scan_for_bank(connection)
|
||||
except socket.error as e:
|
||||
if e.errno == 111: # Connection refused
|
||||
self.logger.debug("Port %d not open", port)
|
||||
|
||||
def __scan_for_bank(self, connection: socket.socket):
|
||||
ping_command = "BC"
|
||||
connection.sendall(ping_command.encode("utf-8"))
|
||||
response = connection.recv(1024)
|
||||
|
||||
host, port = connection.getpeername()
|
||||
if response == f"BC {host}\n\r":
|
||||
self.logger.debug("Bank application found on %s:%s", host, port)
|
||||
return connection
|
@ -28,10 +28,4 @@ class BankProxy():
|
||||
raise NoPortsOpenError("Destination host has no open ports from range")
|
||||
|
||||
def __proxy_request(self, port):
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
|
||||
client_socket.connect((self.address, port))
|
||||
|
||||
client_socket.sendall(self.request.as_request())
|
||||
|
||||
response = client_socket.recv(1024)
|
||||
return response
|
||||
pass
|
||||
|
Loading…
x
Reference in New Issue
Block a user