سيوضح هذا المنشور كيف يمكنك إنشاء برنامج ماسح ضوئي صغير وسهل الاستخدام للمنافذ مكتوب بلغة Python. هناك العديد من الطرق للقيام بذلك باستخدام Python ، وسأقوم بذلك باستخدام مقبس الوحدة النمطية المدمج.
مآخذتوفر وحدة المقبس في Python الوصول إلى واجهة مقبس BSD. يتضمن فئة المقبس ، لمعالجة قناة البيانات الفعلية ، ووظائف المهام المتعلقة بالشبكة مثل تحويل اسم الخادم إلى عنوان وتنسيق البيانات لإرسالها عبر الشبكة.
مصدر تُستخدم المآخذ على نطاق واسع على الإنترنت ، لأنها وراء أي نوع من اتصالات الشبكة التي يقوم بها جهاز الكمبيوتر الخاص بك.
تمثل مآخذ INET ما لا يقل عن 99٪ من المقابس المستخدمة. يفتح متصفح الويب الذي تستخدمه مقبسًا ويتصل بخادم الويب.
أي اتصال شبكة يمر عبر مقبس.
لمزيد من القراءة حول وحدة المقبس ، يرجى الاطلاع على الرسمية توثيق.
وظائف المقبسقبل أن نبدأ مع برنامجنا النموذجي ، دعنا نرى بعض وظائف المقبس التي سنستخدمها.
Syntax for creating a socket
sock = socket.socket (socket_family, socket_type)
Creates a stream socket
sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
AF_INET
Socket Family (here Address Family version 4 or IPv4)
SOCK_STREAM Socket type TCP connections
SOCK_DGRAM Socket type UDP connections
Translate a host name to IPv4 address format
gethostbyname("host")
Translate a host name to IPv4 address format, extended interface
socket.gethostbyname_ex("host")
Get the fqdn (fully qualified domain name)
socket.getfqdn("8.8.8.8")
Returns the hostname of the machine..
socket.gethostname()
Exception handling
socket.error
Code language: JavaScript (javascript)
عمل برنامج باستخدام Python Socketsكيفية عمل برنامج ماسح ضوئي بسيط للمنافذ في بايثون.
سيحاول برنامج الماسح الضوئي الصغير هذا الاتصال بكل منفذ تحدده لمضيف معين. أول شيء يجب علينا القيام به هو استيراد مكتبة المقبس والمكتبات الأخرى التي نحتاجها.
افتح محرر نصوص ، انسخ والصق الرمز أدناه.
احفظ الملف باسم: “ortscanner.py “واخرج من المحرر
#!/usr/bin/env python
import socket
import subprocess
import sys
from datetime import datetime
# Clear the screen
subprocess.call('clear', shell=True)
# Ask for input
remoteServer = raw_input("Enter a remote host to scan: ")
remoteServerIP = socket.gethostbyname(remoteServer)
# Print a nice banner with information on which host we are about to scan
print "-" * 60
print "Please wait, scanning remote host", remoteServerIP
print "-" * 60
# Check what time the scan started
t1 = datetime.now()
# Using the range function to specify ports (here it will scans all ports between 1 and 1024)
# We also put in some error handling for catching errors
try:
for port in range(1,1025):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((remoteServerIP, port))
if result == 0:
print "Port {}: Open".format(port)
sock.close()
except KeyboardInterrupt:
print "You pressed Ctrl+C"
sys.exit()
except socket.gaierror:
print 'Hostname could not be resolved. Exiting'
sys.exit()
except socket.error:
print "Couldn't connect to server"
sys.exit()
# Checking the time again
t2 = datetime.now()
# Calculates the difference of time, to see how long it took to run the script
total = t2 - t1
# Printing the information to screen
print 'Scanning Completed in: ', total
Code language: PHP (php)
إخراج العينة
لنقم بتشغيل البرنامج ونرى كيف يمكن أن تبدو المخرجات
$ python portscanner.py
Enter a remote host to scan: www.your_host_example.com
------------------------------------------------------------
Please wait, scanning remote host xxxx.xxxx.xxxx.xxxx
------------------------------------------------------------
Port 21: Open
Port 22: Open
Port 23: Open
Port 80: Open
Port 110: Open
Port 111: Open
Port 143: Open
Port 443: Open
Port 465: Open
Port 587: Open
Port 993: Open
Port 995: Open
Scanning Completed in: 0:06:34.705170
تنصل
هذا البرنامج مخصص للأفراد لاختبار أجهزتهم الخاصة من حيث الأمان الضعيف ، ولن يتحمل المؤلف أي مسؤولية إذا تم استخدامه لأي استخدام آخر