返回列表 发帖

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

[这个贴子最后由damnyou在 2006/11/29 11:57pm 第 2 次编辑]
  1. #!c:\perl\perl.exe -w
  2. use Tk;
  3. use IO::Socket::INET;
  4. use Net::Ping;
  5. use encoding ';euc-cn';, STDIN => ';euc-cn';, STDOUT => ';euc-cn';;
  6. require Tk::ProgressBar;
  7. #use Win32::Process;
  8. my $portlist="21,23,25,80,135,139,3389";
  9. my $str=';127.0.0.1';;
  10. my $value=';cy';;
  11. my $conn=';tcp';;
  12. my $percent_done=0;
  13. $connn=0;
  14. my $cportc=0;
  15. my $cport=0;
  16. $|=1;
  17. open(IEP,';echo %SystemDrive% |';);
  18. &#36;iepath=<IEP>;
  19. chomp(&#36;iepath);
  20. my &#36;iestr=';R0lGODlhuAEoAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/
  21. /////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  22. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm
  23. AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/
  24. MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm
  25. ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/
  26. mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm
  27. zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/
  28. /5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ
  29. AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA
  30. M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ
  31. ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A
  32. mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z
  33. zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAuAEoAAAI/wAfCBxI
  34. sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzAPMmAQkabE
  35. mTYZ0sQ5M6bPn0CDCo1IrajRo0iTKk0KcWdOnT2hPn2qMKpAq0NNVsvKtStXagjCih1LtmxYVYbS
  36. qhpL7SZVglZxPpCbkO7ctzKxzvUK0qiqv6ra8h1MWCVYs4jHwkrLWIzjVGEFN8U7sCddngix8rRb
  37. +epeuIUzHg4LC1asWIZSSQ7NuvXG0YnLLmbEqNCfP4Vyiym0dnXdqE7fxnXqeSHmu3lzxnVdEazp
  38. W9u23UJ9wDfz69gbwjZbujRtQ2gY3f8uBPmsIfIIrBfcfPX4+srHKd+9bDw48OwSETQ6fWs6dfUR
  39. CSDggASCRKAADh2IIH6DbSdWabH0d8skkzSSxoW7pVJeWOdBBiBoloW43mWWFdeZe+1V9dlyDD6k
  40. 336nxdKIIdVhpKCCHeG40I0DttiVgwjAAp2EFE5y4ZFp7DZWh+k5ZBN7MsHXHl5QTqnXicSZ6ONC
  41. CMjYyJdf0vhhgjweyJGZDJW54JZCbWdadNOZViGSSGbIoYZN/kaicVLuReVO7yEXZZXysTkQNbGk
  42. AaaFYl6kZoEboanQo2sa6tN2sUh3WmlfIjnGp58m+Ucqf5GaZ1Usqhioik/2OWKKoFn/mhA1sNA5
  43. Y40W6aijRpImhGOvsr4EGyyawhJkp46JAapjy476V2RSwXelq1pmtiKsBk1bbbAEqRJqWoBQgWtF
  44. uvZ640EFUjqpmcCei+6uAqlZkLwGuTtvjz2yNJqQtzRiLCMWisHFFltwkSyzoW5hKrR6ehaiXnJh
  45. ViiswFGm7WfcGoQWuID84QcCNkL6wK5l3kupyO+mi3LJBNEbr8sjwxyzvS/TnNK+/f4b8BZ/HHBA
  46. IVscrCyoCos1pmZTXSwtilI+qXRmTxt6FjV/AaKKao6i6e6jLZ+cr6/Ads3yzGNzPZDZNfMoNrw3
  47. nyWjzhZu8bFYqRRyMKhjbHGA0RdN/2wRZw9FvWV6IFONAKlXj5nmyWer/DXZkIaNENuN4yuy1pc7
  48. LuDaCJqreaVqt3QYwMYa0mka4pKVyt3L+lGe4i/5XVfGBeUJFjWIjzuR12kv6Hm5j+8YNuZfZ57v
  49. r8ZbXnzkK9vcNgKMGAvL6Xlvkdv1diO8rBav0+497ggABpgfukvEeO/o9w665GCjDHn6m3PuO/PL
  50. H5/8/PUHry+HYTFy5KdCExrePtUI7jHMe5baikBw5zM/eIx8ICuIAsk0Nvjdb33uW1zz9Jcy4MVv
  51. gx98nLrUFxPYGOJ/YxDgAFdYwL2dCoH48QtgJIO7KUCwLUcRH+wgV6l6sUtS7cqgD//tRz8OVi50
  52. 7/vd5oA4wveV8EEoDKAU79bCA8KQOcMyDWqwJhANaagoitFiamBHOc6l74xonFwRQ2hE9ZHsc2Zk
  53. ItrYZxixnDANAHQMwfbIxz7uUQsu3OEVvxKkCMHpPwNJxTamUB3nGFJTjRKeEI+Iv/jx0GSWbB8b
  54. ibjJSq6JeMqzJPLy10NMZtIlh1HF/w6WutggRpAl0YQmBhkR/fDHP5F8gCIZ2RZbRgiX5etgKU15
  55. RniV0ZSdA6UnLbjGYjYzjci8FIculEc9bigsqeCCNg0mBsYsDJYWkeUsxTmQWQpElicxZ2heFCMZ
  56. 5XKXNWJnjG5FxklS0olppKP8tgb/R2aKsp/oU+IyoSm68I2BmtUUw6iWNDQCnsYQC32hSND5AHVS
  57. NCEX3UhGCdOlRYVpVBpahkiX4cWOejSXarSnG0HYQ+cNEYlzjGkoMbhElhpTpW27Ix6X5RguRNQQ
  58. DT1oI6ajhYiuhpxIFec40anUpS61IOQ8Z1LNqdSKVpSiSS0nU7HK1Y3yBVGKAlMaDDEF1SBgGf3o
  59. xzKwOYVELWqswYymJG/qPpe+NIg0G+Eo/wnQlfK1jXUUQ5JWeDBuBvVL0/lDKyW61XNK9aqOhSxW
  60. DbLRizZWsk+9alSl+tTLevWrtULSjPwwhdL2QaShKG1pQ3skes71lCmt6/D0uU9h/8LWbMq8Jz4p
  61. ecpjrgQsByXYCocbKsTeghFUcB3fCLLVcT4Wqc9l6kEyatnMNper06WqU7HbGm8d1BCqCNcBUuEz
  62. UJgXFDb0mXfHagjxgpOW8J0I1VJIBS1wgbgDDOt0kGvA5WpVs1bFrHMFHGDmFhiyj9WsdqGqTuYu
  63. uLINLszG2tuxjxkFAT7zWXqoxhhAVDiC8Q2xR6hhCPr+THsrDGuMDFHf8bKFsgv+L4ITzN0Yz1i6
  64. DI5sdWls3QSvM3xUC2/iCHIUgUytakMWsZJfU+ItGDAVfzBYfsF0GkZsocXXlCiCqWvjLT+4uZxV
  65. sIK1S+Yvg3mzmx2M7daCOC4aZNfNhyuV4rxG5zrb+c54zrOe8YzKJmuBbn8gWLII+J0rJ3dhLw5K
  66. gyMcYtulJ3cAcjTu/hLXfe750pjOtKY3TduRzFcMc8NmKgimhfpq4dRUqC9IXzmUqi55gZAR31/I
  67. ByDwyVoVtH4tp3fN6177GqeeRoCyuFCeCd/m2LcZL54S895Xi468GfYDBBXCwGhP29nYli8Csie0
  68. 23jRi2txpRWzTciS7hAs5ia3uh9yGCjv0dvhFrdZmr3uett7S0vJt76Vcu9++/vfAA+4wAdO8IIb
  69. /OAIl0hAAAA7';;
  70. START:
  71. my &#36;mw=MainWindow->new or die ';Err!';;
  72. &#36;mw->title(';Port Scanner By Xtiger www.Xtiger.net&www.ThySea.com';);
  73. &#36;mw->geometry("450x365");
  74. &#36;mw->maxsize(450,365);
  75. my &#36;image=&#36;mw->Photo(-data =>';R0lGODlhDQAPALMAAP//////AMzMzJmZmZmZAGZmZjOZ/wCZzAAA/wAAzAAAmQAAAP///wAAAAAA
  76. AAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFFAAMACwAAAAADQAPAAAERJCxQWuVE+gNRFnSACxk
  77. 6YHZciCJogxfOCa0e8qL0rZ36v69QWlI+og4SGNHwBSYPgWLtBAjWjFYIXZiIXgXFmLgO4wAACH5
  78. BAkUAAwALAAAAAANAA8AAAQVkMlJq734mr0x79rniVlpnmiqrlcEADs=';);
  79. my &#36;image1=&#36;mw->Photo(-data =>';R0lGODlhDQAPALMAAP//////AMzMzJmZmZmZAGZmZjOZ/wCZzAAA/wAAzAAAmQAAAP///wAAAAAA
  80. AAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFFAAMACwAAAAADQAPAAAERJCxQWuVE+gNRFnSACxk
  81. 6YHZciCJogxfOCa0e8qL0rZ36v69QWlI+og4SGNHwBSYPgWLtBAjWjFYIXZiIXgXFmLgO4wAACH5
  82. BAkUAAwALAAAAAANAA8AAAQVkMlJq734mr0x79rniVlpnmiqrlcEADs=';,-palette =>100);
  83. &#36;mw->Photo(';imageweb';,-data =>&#36;iestr);
  84. my &#36;enhost=&#36;mw->Label(-text=>';目标主机:';)->place(-x=>20,-y=>45);
  85. my &#36;ent=&#36;mw->Entry(-width=>40,-textvariable=>\&#36;str)->place(-x=>120,-y=>45);
  86. my &#36;run=&#36;mw->Button(-command=>[\&run],-text=>';扫 描';,-height => 1,-width => 4)->place(-x=>370,-y=>42);
  87. my &#36;exx=&#36;mw->Button(-command=>[\&exx],-text=>';退 出';,-height => 1,-width => 4)->place(-x=>410,-y=>42);
  88. my &#36;web=&#36;mw->Button(-command=>[\&web],-image => ';imageweb';,-height => 35,-width => 441,-borderwidth=>1)->place(-x=>2,-y=>0);
  89. my &#36;yj=&#36;mw->Radiobutton(-text=>';常用端口';,-variable=>\&#36;value,-value=>';cy';)->place(-x=>20,-y=>65);
  90. my &#36;entport=&#36;mw->Entry(-width=>50,-textvariable=>\&#36;portlist)->place(-x=>120,-y=>65);
  91. my &#36;zj=&#36;mw->Radiobutton(-text=>';自定义端口';,-variable=>\&#36;value,-value=>';dy';)->place(-x=>20,-y=>85);
  92. my &#36;entstartport=&#36;mw->Entry(-width=>10,-textvariable=>\&#36;startport)->place(-x=>120,-y=>85);
  93. my &#36;enz=&#36;mw->Label(-text=>';至';)->place(-x=>200,-y=>85);
  94. my &#36;entendport=&#36;mw->Entry(-width=>10,-textvariable=>\&#36;endport)->place(-x=>240,-y=>85);
  95. my &#36;rtcp=&#36;mw->Radiobutton(-text=>';TCP连接模式';,-variable=>\&#36;conn,-value=>';tcp';)->place(-x=>90,-y=>110);
  96. my &#36;rsyn=&#36;mw->Radiobutton(-text=>';SYN连接模式';,-variable=>\&#36;conn,-value=>';syn';)->place(-x=>280,-y=>110);
  97. my &#36;frame=&#36;mw->Frame();
  98. my &#36;probar=&#36;frame->ProgressBar(
  99. -borderwidth => 1,
  100. -width => 6,
  101. -length =>340,
  102. -anchor => ';w';,
  103. -from => 0,
  104. -to => 100,
  105. -blocks => 1,
  106. -colors => [0,';skyblue';,20,';green';,40,';blue';,60,';yellow';,80,';red';],
  107. -variable => \&#36;percent_done)->pack();
  108. &#36;frame->place(-x=>40,-y=>135);
  109. my &#36;stdout=&#36;mw->Scrolled(';Text';,-scrollbars=>';e';,-height=>15,-width=>60)->place(-x=>0,-y=>145);
  110. &#36;stdout->configure(-background=>';dimgray';,-borderwidth => 3,);
  111. &#36;t = &#36;stdout->Subwidget(';scrolled';);
  112. &#36;t->tagConfigure(';close';, -foreground => ';green';);
  113. &#36;t->tagConfigure(';open';, -foreground => ';red';);
  114. &#36;t->tagConfigure(';other';, -foreground => ';cyan';);
  115. sub run
  116. {
  117. &#36;cportc=0;
  118. &#36;ent->configure(qw/-state disabled/);
  119. &#36;run->configure(qw/-state disabled/);
  120. &#36;yj->configure(qw/-state disabled/);
  121. &#36;entport->configure(qw/-state disabled/);
  122. &#36;zj->configure(qw/-state disabled/);
  123. &#36;entstartport->configure(qw/-state disabled/);
  124. &#36;entendport->configure(qw/-state disabled/);
  125. &#36;rsyn->configure(qw/-state disabled/);
  126. &#36;rtcp->configure(qw/-state disabled/);
  127. my &#36;host=&#36;str;
  128. if(&#36;value eq "dy")
  129. {
  130. &#36;mw->messageBox(qw/-icon error -title 错误! -type OK -message/ => "请指定端口范围!") and goto END if(&#36;startport eq "" or &#36;endport eq "");
  131. @port=(&#36;startport..&#36;endport);
  132. }
  133. if(&#36;value eq "cy")
  134. {
  135. &#36;mw->messageBox(qw/-icon error -title 错误! -type OK -message/ => "请指定端口列表(用逗号隔开)!") and goto END if &#36;portlist eq "";
  136. @port=split(/,/,&#36;portlist);
  137. }
  138. &#36;stime=time;
  139. &#36;cport=scalar(@port);
  140. if(&#36;conn eq "tcp")
  141. {
  142. foreach(@port) {
  143. &#36;connn++;
  144. if(&#36;connn%2==0){&#36;conico=&#36;mw->Label(-image => &#36;image,-height => 30,-width => 30)->place(-x=>0,-y=>110);}
  145. if(&#36;connn%2!=0){&#36;conico=&#36;mw->Label(-image => &#36;image1,-height => 30,-width => 30)->place(-x=>0,-y=>110);}
  146. &#36;mw->update;
  147. if(my &#36;sock = IO::Socket::INET->new(PeerAddr => &#36;host,
  148. PeerPort => &#36;_,
  149. Proto => ';tcp';)
  150. )
  151. {
  152. my &#36;restr="[开放] &#36;host:&#36;_\n";
  153. &#36;t->insert(';end';, "&#36;restr", ';open';);
  154. }
  155. else
  156. {
  157. my &#36;restr="[关闭] &#36;host:&#36;_\n";
  158. &#36;t->insert(';end';, "&#36;restr", ';close';);
  159. }
  160. &#36;cportc++;
  161. &#36;percent_done=int((&#36;cportc/&#36;cport)*100);
  162. my &#36;zstr="&#36;cportc/&#36;cport";
  163. my &#36;zt=&#36;mw->Label(-textvariable=>\&#36;zstr)->place(-x=>405,-y=>125);
  164. &#36;mw->update;
  165. }
  166. }
  167. if(&#36;conn eq "syn")
  168. {
  169. foreach my &#36;port (@port) {
  170. &#36;connn++;
  171. if(&#36;connn%2==0){&#36;conico=&#36;mw->Label(-image => &#36;image,-height => 30,-width => 30)->place(-x=>0,-y=>110);}
  172. if(&#36;connn%2!=0){&#36;conico=&#36;mw->Label(-image => &#36;image1,-height => 30,-width => 30)->place(-x=>0,-y=>110);}
  173. &#36;mw->update;
  174. &#36;p = Net::Ping->new("syn");
  175. &#36;p->{port_num} =&#36;port;
  176. &#36;p->ping(&#36;host);
  177. if(&#36;p->ack)
  178. {
  179. my &#36;restr="[开放] &#36;host:&#36;port\n";
  180. &#36;t->insert(';end';, "&#36;restr", ';open';);
  181. }
  182. else
  183. {
  184. my &#36;restr="[关闭] &#36;host:&#36;port\n";
  185. &#36;t->insert(';end';, "&#36;restr", ';close';);
  186. }
  187. }
  188. &#36;cportc++;
  189. &#36;percent_done=int((&#36;cportc/&#36;cport)*100);
  190. my &#36;zstr="&#36;cportc/&#36;cport";
  191. my &#36;zt=&#36;mw->Label(-textvariable=>\&#36;zstr)->place(-x=>405,-y=>125);
  192. &#36;mw->update;
  193. }
  194. &#36;etime=time;
  195. &#36;ttime=&#36;etime-&#36;stime;
  196. my &#36;restr="------------------------------\n扫描完成耗时 &#36;ttime 秒!\n";
  197. &#36;t->insert(';end';, "&#36;restr", ';other';);
  198. END:
  199. &#36;ent->configure(qw/-state normal/);
  200. &#36;run->configure(qw/-state normal/);
  201. &#36;yj->configure(qw/-state normal/);
  202. &#36;entport->configure(qw/-state normal/);
  203. &#36;zj->configure(qw/-state normal/);
  204. &#36;entstartport->configure(qw/-state normal/);
  205. &#36;entendport->configure(qw/-state normal/);
  206. &#36;rtcp->configure(qw/-state normal/);
  207. &#36;rsyn->configure(qw/-state normal/);
  208. }
  209. sub web
  210. {
  211. &#35;Win32::Process::Create(my &#36;ProcessObj,
  212. &#35; qq/&#36;iepath\\Intern~1\\iexplore.exe/,
  213. &#35; "iexplore.exe http://www.xtiger.net",
  214. &#35; 0,
  215. &#35; NORMAL_PRIORITY_CLASS,
  216. &#35; ".")|| die "&#36;!\n";
  217. system("&#36;iepath\\Progra~1\\Intern~1\\iexplore.exe http://www.xtiger.net");
  218. &#36;mw->update;
  219. }
  220. sub exx
  221. {
  222. exit;
  223. }
  224. MainLoop;
复制代码

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

我编辑一下.这样看代码比较方便.
对perl不大了解.
能否简介一下主要功能.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

[这个贴子最后由damnyou在 2006/11/30 00:51pm 第 1 次编辑]

呵呵,谢谢了.
就是个端口扫描器.
单线程的.没啥技术含量.
本来是我自己拿来练习写图形界面程序的。
好久不写代码,就放上来了,期待有兄弟能在此基础上加点什么,也同时让我学习一下.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

能不能写成5线程的.
这样更有用一些.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

这和以前的有什么不一样?

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

&#36;iestr=""
这里面的东西是什么,抓的包么?

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

    那里不是什么"包",而是程序中包含的图片的BASE64编码,这样就可以不用引用外部的图片文件.之前我在黑海有文章写过这个.
    这个是我写图形界面程序练习用的.没想认真做.
    加之现在工作忙,可能没空写了。而且有很多技术细节需要去做.比如多线程对"句柄的读写操作","资源冲突"....想着头疼,没空做.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

呵呵
perl这里研究的也不多.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

多线程也不会很麻烦:)
速度太快反而不好

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

[chinanic奸诈的笑道]:嘿嘿,还是VB利索,用Winsock可以轻松实现多线程。。
只是不知道哪个的扫描速度快点,嗯,还有就是系统资源的占用问题。。哪个大点。

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

似乎任何扫描器都一样占系统资源,特别是在多线程时,这个应该是系统架构的问题,不是编程能解决的.
    多进程就比多线程占资源少.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

多进程少??那搞MDI窗体。。

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

似乎在*uix中 很多人都推荐使用多进程.
  似乎是系统构架的问题.

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

从操作系统的观点来看,多进程就多占用资源
个人觉得多线程好

TOP

[原创]自己用perl写的很不成熟的一段图形界面的端口扫描程序代码

要是ASP 的 代码还能看懂些``

TOP

返回列表 回复 发帖