مشروع سكربت فحص منافذ السرفر Port Scanner
عفوا اذا تقصد المسافة البادئة في الشرط بعتذر من السرعة
port = [options.tgtport]+args if (tgthost != None) and (port != None): for tgtport in port: scanop(tgthost, int(tgtport)) else: print '[-] You must specify a target host and port.' exit()
تم تعديل هذه المشاركة بواسطة the.scorpion في 8 مارس 2014 في 18:00
اقتباسpython sca.py -H python.org -p 21 25 80
Please wait, scanning remote host 140.211.10.69
[-]21/tcp closed
Please wait, scanning remote host 140.211.10.69
[-]25/tcp closed
Please wait, scanning remote host 140.211.10.69
[+]80/tcp open http
ملاحظة قمت بتحويل البور الى عدد صحيح عند التجربة
scanop(tgthost, int(tgtport))
#-------------------------------------------------------------------------------
# Name: PortScan
# Version: 1.0 Beta
# Copyright: arabteam2000-Python section
#-------------------------------------------------------------------------------
import socket
import optparse
import sys
import time
def ScanTg(tgthost, tgtport):
try:
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((tgthost, tgtport))
connection.settimeout(15)
print "[+]%d/tcp open %s" %(tgtport, socket.getservbyport(tgtport))
connection.close()
except socket.timeout:
print "[+]%d/tcp filtered" %tgtport
except:
print "[-]%d/tcp closed" %tgtport
def scanop(tgthost, tgtport):
try:
IP = socket.gethostbyname(tgthost)
except:
print "[-] Cannot resolve"
try:
print "Please wait, scanning remote host %s" %IP
ScanTg(IP , tgtport)
except socket.gaierror:
print "Hostname could not be resolved. Exiting"
def main():
parser = optparse.OptionParser("usage%prog -H <target host> -p <target port>")
parser.add_option('-H', dest='tgthost', type='string', help='specify target host')
parser.add_option('-p', dest='tgtport', type='string', help='specify target port')
(options, args) = parser.parse_args()
tgthost = options.tgthost
port = [options.tgtport]+args
if (tgthost != None) and (port != None):
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()
if __name__ == '__main__':
main()
ما المشكلة التي تتوقعها؟؟؟
قارن الفحص الذي قمت به انا والفحص الذي قمت به بالسكربت الذي وضعته أنت علما أني ما قمت بتغييره فقط هو في الدالة الأولة التي ستجلب إسم خدمة التي يعمل عليها البرنامج
ملاحظة:أنا حذفت جملة Please......لأنها تأتي في غير موضع وسنعدلها فما بعد
python 2.py -H arabteam2000-forum.com -p 21 25 [+]21/tcp open : 220 (vsFTPd 2.2.2) [-]25/tcp closed python 4.py -H arabteam2000-forum.com -p 21 25 [+]21/tcp open ftp [+]25/tcp open smtp

ما سبب الاختلاف عند فحص البورت 25 ؟؟؟
قمت بالفحص وكانت النتائج
[+]21/tcp open ftp[-]25/tcp closed
تم تعديل هذه المشاركة بواسطة the.scorpion في 9 مارس 2014 في 02:11
إرجع إلى النسخة الأولة من الدالة ScanTg
سنتحقق الآن هل البورت مفتوح أو لا
كيف يمكن ذلك؟
سنرسل رسالة على الخدمة إذا كان البورت مفتوح سنستقبل من البورت Data بيانات تحمل إسم البرنامج التي يعمل عليها البورت وإن كان الخدمة
مخفية سيرد عليك البرنامج فقط ان بورت مفتوح
قك بذلك عبر إستخدام الدالة send() والدالة recv() إبحث عنها وقم بالتجريب وغدا ان شاء الله سأكتب لك الدالة كيف ستكون
بالتوفيق

الكود النهائي للسكربت النسخة 1.1 أي إضافات أتركها للنسخة القادمة
#-------------------------------------------------------------------------------
# Name: PortScan
# Version: 1.1
# Copyright: arabteam2000-Python section
#-------------------------------------------------------------------------------
import socket
import optparse
import sys
def ScanTg(tgthost, tgtport):
try:
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((tgthost, tgtport))
connection.send('Hello wolrd')
result = connection.recv(1024)
print "[+]%s/tcp open " %tgtport
print "[+]" + str(result)
connection.close()
except:
print "[-]%s/tcp closed" %tgtport
def scanop(tgthost, tgtport):
try:
IP = socket.gethostbyname(tgthost)
except:
print "[-] Cannot resolve"
try:
ScanTg(IP , tgtport)
except socket.gaierror:
print "Hostname could not be resolved. Exiting"
def main():
parser = optparse.OptionParser("usage%prog "+\
"-H <target host> -p <target port>")
parser.add_option('-H', dest='tgthost', type='string', \
help='specify target host')
parser.add_option('-p', dest='tgtport', type='string', \
help='specify target port')
(options, args) = parser.parse_args()
tgthost = options.tgthost
port = [options.tgtport]+args
if (tgthost != None) and (port != None):
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()
if __name__ == '__main__':
main()لا ادري لماذا لا يشارك أحد ؟ !

اقتباس
لا ادري لماذا لا يشارك أحد ؟ !
ليس هنا فقط بل في منتدى البايثون كله
حسنا لا تهتم
في النسخة الثانية 1.2 سنقوم بتطوير السكربت,أنا أملك أفكار لكن هذه المرة فالتكن أفكارك إذا كان لديك أفكار أو مهام جديدة
تريد إضافتها في السكربت فأكتبها ودعنا نبدأ في برمجتها :)
تم تعديل هذه المشاركة بواسطة عامر الشابي في 9 مارس 2014 في 22:08

تعديل السكربت ليقوم بفحص البورتات في مجال يحدده المستخدم مثال (20-1024)
قمت بكتابت دالة جديد لهذا الامر
def scan(tgthost, port):
if (tgthost != None) and (port != None):
if '-' in port[0]:
port = port[0].split('-')
for tgtport in range(int(port[0]), int(port[1])):
scanop(tgthost, int(tgtport))
else:
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()تم تعديل هذه المشاركة بواسطة the.scorpion في 9 مارس 2014 في 22:35
لما لا تدع المستخدم يختار الإثنين معا
إن كان يريد فحص عدة بورتات هو يحددها فله ذلك
وإن كان يريد فحص مجال ما فله ذلك أيضا

اقتباس
لما لا تدع المستخدم يختار الإثنين معا
إن كان يريد فحص عدة بورتات هو يحددها فله ذلك
وإن كان يريد فحص مجال ما فله ذلك أيضا
هذا ما قصدته انظر الى الكود
if (tgthost != None) and (port != None):
if '-' in port[0]:
port = port[0].split('-')
for tgtport in range(int(port[0]), int(port[1])+1):
scanop(tgthost, int(tgtport))
else:
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()حسنا جرب الكود مثلما وضعته هنا أنا لم أقم بأي تعديل فقط نسخت الصيغة والصقتها :)
#-------------------------------------------------------------------------------
# Name: PortScan
# Version: 1.1
# Copyright: arabteam2000-Python section
#-------------------------------------------------------------------------------
import socket
import optparse
import sys
def ScanTg(tgthost, tgtport):
try:
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((tgthost, tgtport))
connection.send('Hello wolrd')
result = connection.recv(1024)
print "[+]%s/tcp open " %tgtport
print "[+]" + str(result)
connection.close()
except:
print "[-]%s/tcp closed" %tgtport
def scanop(tgthost, tgtport):
try:
IP = socket.gethostbyname(tgthost)
except:
print "[-] Cannot resolve"
try:
ScanTg(IP , tgtport)
except socket.gaierror:
print "Hostname could not be resolved. Exiting"
def main():
parser = optparse.OptionParser("usage%prog "+\
"-H <target host> -p <target port>")
parser.add_option('-H', dest='tgthost', type='string', \
help='specify target host')
parser.add_option('-p', dest='tgtport', type='string', \
help='specify target port')
(options, args) = parser.parse_args()
tgthost = options.tgthost
port = [options.tgtport]+args
if (tgthost != None) and (port != None):
if '-' in port[0]:
port = port[0].split('-')
for tgtport in range(int(port[0]), int(port[1])+1):
scanop(tgthost, int(tgtport))
else:
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()
if __name__ == '__main__':
main()جرب
تم تعديل هذه المشاركة بواسطة عامر الشابي في 9 مارس 2014 في 23:12

اقتباس
حسنا جرب الكود مثلما وضعته هنا أنا لم أقم بأي تعديل فقط نسخت الصيغة والصقتها :)
نفس الكود عندي
عند يتم اي تعديل هنا اقوم بتعديل الكود عندي :)
ما أطلبه منك فقط هو تجريب الكود وإن كان هناك خطأ فإطبعلي ما هو الخطأ وإن لم يكن أكتبلي الكود لأنه حدث لي خطأ واريدك إكتشافه

لا يوجد اخطاء سوى المسافة البادئة في الشرط وتحديدا في else و exit()
#-------------------------------------------------------------------------------
# Name: PortScan
# Version: 1.1
# Copyright: arabteam2000-Python section
#-------------------------------------------------------------------------------
import socket
import optparse
import sys
def ScanTg(tgthost, tgtport):
try:
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((tgthost, tgtport))
connection.send('Hello wolrd')
result = connection.recv(1024)
print "[+]%s/tcp open " %tgtport
print "[+]" + str(result)
connection.close()
except:
print "[-]%s/tcp closed" %tgtport
def scanop(tgthost, tgtport):
try:
IP = socket.gethostbyname(tgthost)
except:
print "[-] Cannot resolve"
try:
ScanTg(IP , tgtport)
except socket.gaierror:
print "Hostname could not be resolved. Exiting"
def main():
parser = optparse.OptionParser("usage%prog "+\
"-H <target host> -p <target port>")
parser.add_option('-H', dest='tgthost', type='string', \
help='specify target host')
parser.add_option('-p', dest='tgtport', type='string', \
help='specify target port')
(options, args) = parser.parse_args()
tgthost = options.tgthost
port = [options.tgtport]+args
if (tgthost != None) and (port != None):
if '-' in port[0]:
port = port[0].split('-')
for tgtport in range(int(port[0]), int(port[1])+1):
scanop(tgthost, int(tgtport))
else:
for tgtport in port:
scanop(tgthost, int(tgtport))
else:
print '[-] You must specify a target host and port.'
exit()
if __name__ == '__main__':
main()تم تعديل هذه المشاركة بواسطة the.scorpion في 9 مارس 2014 في 23:41
اقتباسهل من أفكار؟
حاليا لا يوجد
ألا ترى من أن نحسن من السكربت من ناحية سرعة التنفيذ
عبر إستخدام تقنية Threading , سأختتم هذا السكربت بإستخدام مكتبة Thread لعمل ذلك
سأدعك تحاول في ذلك حتى 48 الساعة قادمة لأني سأغيب لأسباب محتمة
بالتوفيق

حسنا واتمنى لك التوفيق