פורסם 2007 במרץ 2018 שנים שלום!!פתחתי פורטים ואני צריך לפתוח אותם גם בפיירוול.הבעיה היא שזה טווח של פורטים (6500-7000) ולא פורטים בודדים....איך אני עושה פתיחה של טווח של פורטים בפיירוול (של הווינדווס)?תודה
פורסם 2007 במרץ 2318 שנים החדשות הרעות הם שהפיירוול של XP לא מאפשר לפתוח טווח של פורטים. החדשות הטובות הם שגם אני נתקלתי בערך באותה בעיה די מזמן כשהייתי צריך לפתוח טווח של בערך 150 פורטים על 25 מחשבים, בדקתי וגיליתי ש netsh מאפשר לפתוח פורטים, אז כתבתי סקריפט ב AutoIt שמאפשר לי לפתוח טווח של פורטים. הנה הקוד מקור: #cs ---------------------------------------------------------------------------- 15:22 21/11/2006 Script Function: Open a range of ports on windows firewall using the "netsh firewall add portopening" command.#ce ----------------------------------------------------------------------------#include <GuiConstants.au3>#NoTrayIconDim $actionDim $protocol;Dim $ports;Dim $first_port;Dim $last_port;Dim $i = 0;Dim $name = "netsh_script";Dim $mode;Dim $progressbar;if $CmdLine[0] < 3 Then DisplayHelp(); Exit(1);EndIf$action = StringLower ($CmdLine[1]);If $action <> "add" AND $action <> "delete" Then DisplayHelp(); Exit(1);EndIf $protocol = StringUpper ($CmdLine[2]);if $protocol <> "TCP" AND $protocol <> "UDP" AND $protocol <> "ALL" Then DisplayHelp(); Exit(1);Endif $ports = StringSplit ($CmdLine[3],"-");If NOT ( StringIsInt ($ports[0]) OR StringIsInt ($ports[1]) ) Then DisplayHelp(); Exit(1);Endif $first_port = Int ($ports[1]);$last_port = Int ($ports[2]);If ( ($first_port <= 0 OR $first_port > 65535) OR ($last_port <= 0 OR $first_port > 65535) ) OR ($first_port >= $last_port) Then DisplayHelp(); Exit(1);Endif If $CmdLine[0] > 3 Then $name = $CmdLine[4];If $CmdLine[0] > 4 Then $mode = StringUpper ($CmdLine[5]);if $mode <> "ENABLE" AND $mode <> "DISABLE" Then $mode = "ENABLE"; ; GUI GuiCreate("Script Progress", 500, 40); $progressbar = GUICtrlCreateProgress (10,10,480,20); GUISetState(@SW_SHOW);If $action == "add" Then Do RunWait (@ComSpec & " /C netsh firewall "&$action&" portopening "& $protocol & " " & ($first_port + $i) & " " & $name & " " & $mode ,"", @SW_HIDE); $i += 1; GUICtrlSetData ($progressbar, ($i / ($last_port - $first_port))*100 ); Until $first_port + $i > $last_port Else Do RunWait (@ComSpec & " /C netsh firewall "&$action&" portopening "& $protocol & " " & ($first_port + $i) ,"", @SW_HIDE); $i += 1; GUICtrlSetData ($progressbar, ($i / ($last_port - $first_port))*100 ); Until $first_port + $i > $last_port Endif MsgBox (64,"Done","Done! ");Func DisplayHelp() MsgBox(64, "Help", "syntax: <Action> <Protocol> <Port Range> [<Name> <Mode>]" & @CRLF & @CRLF & _ "Action: ADD/DELETE." & @CRLF & _ "Protocol: TCP / UDP / ALL." & @CRLF & _ "Port: FirstPort-LastPort (no space), for example: 1024-1066)." & @CRLF & _ "Name: Rule name (no space), Only valid when you ADD a rule." & @CRLF & _ "Mode: ENABLE(default)/DISABLE - Enable or disable the rule (optional)," & @CRLF & _ " Only valid when you ADD a rule." & @CRLF & @CRLF & _ "Examples:" & @CRLF & @CRLF & _ 'ADD UDP 1060-1065 "UDP_ports" ENABLE' & @CRLF & _ 'ADD TCP 1500-1600 "TCP_ports" ENABLE' & @CRLF & @CRLF & _ "DELETE UDP 1060-1065" & @CRLF & _ "DELETE UDP 1500-1600" _ );EndFunc זה דוגמא מצוינת לקוד מהיר ומלוכלך, אבל הוא עבד לי מצוין. הבעיה היחידה היא שהוא מאוד לא יעיל ואיטי, בגלל שהייתי עצלן מדי לכתוב ל STDIN של netsh ובמקום זה כל פורט שאני פותח אני קורא ל CMD שיפעיל את netsh עם הפרמטרים הנכונים, ואז חוזר על התהליך שוב ושוב ושוב... לכן לפתוח עם הסקריפט הזה טווח של 500 פורטים יקח לפחות 20-25 דקות, אבל זה לא ביג דיל כי הוא לא תופס כלכך הרבה CPU , פשוט תן לו לעבוד ברקע. השימוש בו ממש פשוט, אם תפעיל אותו בלי פרמטרים תקבל הודאת עזרה (זה יותר תזכורת עצמית מאשר עזרה, כי במקור כתבתי אותו לעצמי...) : בקיצור אם אתה רוצה לפתוח פורטים 6500-7000 TCP אז תן לו את הפרמטרים האלה: add TCP 6500-7000 "Name" אם זה UDP אז: add UDP 6500-7000 "Name" ואם זה גם וגם אז: add ALL 6500-7000 "Name" רק במקום Name תכניס שם מסויים. ועכשיו תן לו לרוץ... ברקע יופיע לך progress bar שיראה לך כמה הוא כבר עשה: ובסוף תקבל הודאה, זה הכל. אגב אם אין לך כוח לקמפל את הקוד, צירפתי קובץ ZIP שיש בו את המקור וה EXE . [attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.