Skip to main content

Python = Code for functional Firewal

 import os

import subprocess
import socket
import requests

blocked_ips = {}
blocked_websites = {}
blocked_applications = {}

def add_ip_to_block(ip, port):
if (ip, port) in blocked_ips:
print(f"IP {ip} with port {port} is already blocked")
return
if is_ip_port_in_hosts(ip, port):
print(f"IP {ip} with port {port} is already in block list.")
return
blocked_ips[(ip, port)] = True
print(f"Added {ip} with port {port} to blocked IPs")


def remove_ip_from_block(ip, port):
if (ip, port) in blocked_ips:
del blocked_ips[(ip, port)]
print(f"Unblocked {ip} with port {port}")
else:
print(f"IP {ip} with port {port} is not blocked")


def add_website_to_block(website):
if website in blocked_websites:
print(f"{website} is already blocked")
return
try:
ip = socket.gethostbyname(website)
if is_website_in_hosts(website):
print(f"{website} is already in block list.")
return
dns_servers = get_dns_servers(website)
blocked_websites[website] = {'ip': ip, 'dns_servers': dns_servers}
block_website_on_system(website)
print(f"Blocked {website} on the system")
except socket.gaierror:
print(f"Cannot resolve DNS for {website}")

def remove_website_from_block(website):
if website in blocked_websites:
del blocked_websites[website]
unblock_website_on_system(website)
print(f"Unblocked {website} on the system")
else:
print(f"{website} is not blocked")

def add_application_to_block(application):
if application in blocked_applications:
print(f"{application} is already blocked")
return
blocked_applications[application] = True
print(f"Blocked connections for application: {application}")

def remove_application_from_block(application):
if application in blocked_applications:
del blocked_applications[application]
print(f"Unblocked connections for application: {application}")
else:
print(f"{application} is not blocked")

def is_website_in_hosts(website):
with open('/etc/hosts', 'r') as hosts_file:
for line in hosts_file:
if website in line:
return True
return False

def is_ip_port_in_hosts(ip, port):
with open('/etc/hosts', 'r') as hosts_file:
for line in hosts_file:
if f"{ip}:{port}" in line:
return True
return False

def check_ip_availability(ip):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ip, 80))
sock.close()
return result == 0

def get_dns_servers(website):
url = f"https://whois.domaintools.com/{website}"
response = requests.get(url)
dns_servers = []
if response.status_code == 200:
content = response.text
start_marker = "<td>DNS</td>"
end_marker = "</td>"
start_index = content.find(start_marker)
if start_index != -1:
end_index = content.find(end_marker, start_index + len(start_marker))
if end_index != -1:
dns_servers = content[start_index + len(start_marker):end_index].split("<br>")
return dns_servers

def block_website_on_system(website):
with open('/etc/hosts', 'a') as hosts_file:
hosts_file.write(f"\n# Blocked Websites\n")
hosts_file.write(f"0.0.0.0 {website}\n") # Redirect website to non-existent IP

def unblock_website_on_system(website):
lines = []
with open('/etc/hosts', 'r') as hosts_file:
lines = hosts_file.readlines()
with open('/etc/hosts', 'w') as hosts_file:
blocklist_started = False
for line in lines:
if line.strip() == "# Blocked Websites":
blocklist_started = True
elif blocklist_started and line.strip() == "":
blocklist_started = False
if not (blocklist_started and line.startswith(f"0.0.0.0 {website}")):
hosts_file.write(line)

def show_blocked_ips():
print("Blocked IPs with specific ports:")
for ip, port in blocked_ips.keys():
print(f"{ip}:{port}")

def show_blocked_websites():
print("Blocked Websites:")
for website in blocked_websites.keys():
print(website)

def show_blocked_applications():
print("Blocked Applications:")
for application in blocked_applications.keys():
print(application)

def show_blacklist_items():
show_blocked_ips()
show_blocked_websites()
show_blocked_applications()

if __name__ == "__main__":
while True:
print("\n========== Firewall Management ==========")
print("1. Add IP with specific port to Block")
print("2. Add Website to Block")
print("3. Add Application to Block Connection (Internet)")
print("4. Remove IP with specific port from Block")
print("5. Remove Website from Block")
print("6. Remove Application from Block")
print("7. Show Blacklist Items")
print("8. Exit")
print("=========================================")
choice = input("Enter your choice: ")

if choice == '1':
ip = input("Enter IP to block: ")
port = input("Enter port to block: ")
add_ip_to_block(ip, port)
elif choice == '2':
website = input("Enter website to block: ")
add_website_to_block(website)
elif choice == '3':
application = input("Enter application to block: ")
add_application_to_block(application)
elif choice == '4':
ip = input("Enter IP to unblock: ")
port = input("Enter port to unblock: ")
remove_ip_from_block(ip, port)
elif choice == '5':
website = input("Enter website to unblock: ")
remove_website_from_block(website)
elif choice == '6':
application = input("Enter application to unblock: ")
remove_application_from_block(application)
elif choice == '7':
show_blacklist_items()
elif choice == '8':
print("Exiting...")
break
else:
print("Invalid choice")

Comments

Popular posts from this blog

C++ = Code for Counter

Code: #include <iostream> #include <conio.h> using namespace std; int main() {     int count = 0;     char input;     cout << "--------------------------" << endl;     cout << "          Counter         " << endl;     cout << "--------------------------" << endl;     cout << endl;     cout << "Press 1 to counter" << endl;     cout << "Press 0 to quit" << endl;     cout << endl;     cout << "Enter the number continuously : ";     while (true)     {         input = getch();         if (input == '1')         {             count += 1;             cout << "Your counts are " << count << endl;   ...

C++ = Code to check number is a prime or not. If not find the nearest prime number.

Code:  #include <iostream> using namespace std; bool prime(int n) { if (n<=1) { return false; }        for (int i=2;i<=n/2;i++)    {       if (n%i==0)   {   return false;   }    }         return true; } int nearest(int n) { for (int i=n-1;i>=2;i--) { if (prime(i)) { return i; } } return 0; } int main () { int number; cout<<"Enter any number : "; cin>>number; if (prime(number)) { cout<<"The number is prime. "<<endl; }     else     {     cout<<"The entered number is compositive."<<endl;     cout<<"The nearest prime number will be "<<nearest(number)<<endl; } } Result:

C++ = Code for checking any digit palindrome number

Code no: 1 = Using only main function to perform task. #include <iostream> using namespace std; int main() { int number,original,digit,reverse=0; cout<<"Enter any number : "; cin>>number; original=number; while (number!=0) { digit=number%10; reverse=(reverse*10)+digit; number=number/10; } if (original==reverse) { cout<<"This "<<original<<" is Palindrome number."; } else { cout<<"The "<<original<<" is not Palindrome number."; } } Result: Code no: 2 = Using two functions to perform same task. #include <iostream> using namespace std; int isprime(int num) { int digit=0,reverse=0; while (num!=0) { digit=num%10; reverse=(reverse*10)+digit;  num/=10; } return reverse; } int main() { int num; cout<<"Enter any digit to find its sum = "; cin>>num;          int original=num;          if (i...