返回列表 发帖

[原创]捕获木马或蠕虫的程序

[watermark]木马和蠕虫的横行一直困扰着我们,本程序试图查找特定木马或蠕虫,以便查杀。 本程序适用查找的木马如:http://www.thysea.com/lb/cgi-bin/topic.cgi?forum=1&topic=21947&show=0 首先这个是主程序。
  1. /**
  2. * Created by IntelliJ IDEA.
  3. * User: fengzhizi
  4. * Date: 2006-10-14
  5. * Time: 11:26:00
  6. * To change this template use File | Settings | File Templates.
  7. */
  8. import java.net.*;
  9. import java.util.*;
  10. import java.io.*;
  11. public class Worm&TrojanCatcher{
  12. public static void main(String[] args)
  13. {
  14. ServerSocket serv = null;
  15. ThreadPool tpool = null;
  16. Socket clnt = null;
  17. String tmp = null;
  18. int port = 0;
  19. if (args.length != 1)
  20. {
  21. System.err.println("usage:java Worm&TrojanCatcher"+" <local_port>");
  22. System.err.println("Example:java Worm&TrojanCatcher"+" 80");
  23. System.exit(1);
  24. }
  25. tmp = args[0];
  26. try
  27. {
  28. port = Integer.parseInt(tmp);
  29. tpool = new ThreadPool(5);
  30. try
  31. {
  32. serv = new ServerSocket(port);
  33. }
  34. catch (IOException e)
  35. {
  36. System.out.println(e);
  37. }
  38. while (true)
  39. {
  40. try
  41. {
  42. clnt = serv.accept();
  43. }
  44. catch (IOException e)
  45. {
  46. System.out.println(e);
  47. }
  48. tpool.add(clnt);
  49. }
  50. }
  51. catch (NumberFormatException nfe)
  52. {
  53. System.err.println("NumberFormatException:"+nfe.getMessage());
  54. }
  55. }
  56. }
复制代码
以下是线程池
  1. class ThreadPool
  2. {
  3. private Vector m_queue = new Vector();
  4. public ThreadPool(int thread_count)
  5. {
  6. WorkerThread wt = null;
  7. int x = 0;
  8. for (x=0;x<thread_count;x++)
  9. {
  10. wt = new WorkerThread(m_queue);
  11. wt.start();
  12. }
  13. }
  14. public void add(Object object)
  15. {
  16. synchronized(m_queue)
  17. {
  18. m_queue.add(object);
  19. }
  20. }
  21. }
复制代码
以下是工作线程
  1. class WorkerThread extends Thread {
  2. Vector m_queue = null;
  3. public WorkerThread (Vector queue)
  4. {
  5. m_queue=queue;
  6. }
  7. public void run()
  8. {
  9. InetSocketAddress sa=null;
  10. InputStreamReader isr = null;
  11. LineNumberReader lnr = null;
  12. OutputStream os = null;
  13. InputStream is = null;
  14. InetAddress ria = null;
  15. boolean iscr = false;
  16. Socket clnt = null;
  17. String send = null;
  18. String tmp = null;
  19. int rp = 0;
  20. int x = 0;
  21. System.out.println("***WorkerThreader started.");
  22. while (true)
  23. {
  24. synchronized (m_queue)
  25. {
  26. if (m_queue.size()>0)
  27. {
  28. clnt =(Socket)m_queue.remove(0);
  29. }
  30. }
  31. if (clnt != null)
  32. {
  33. try
  34. {
  35. System.out.println("***new TCP"+"client connection.");
  36. try
  37. {
  38. is = clnt.getInputStream();
  39. }
  40. catch (IOException e)
  41. {
  42. System.out.println(e);
  43. }
  44. isr = new InputStreamReader(is);
  45. lnr = new LineNumberReader(isr);
  46. x = 0;
  47. iscr = false;
  48. while ((tmp=lnr.readLine()) != null)
  49. {
  50. System.out.println(x++ + ") "+tmp);
  51. if (tmp.length() == 0)
  52. {
  53. break;
  54. }
  55. // XXXX是蠕虫或木马所要连接的网址
  56. if (tmp.indexOf("//XXXXX")>0)
  57. {
  58. iscr = true;
  59. }
  60. }
  61. if (iscr = true)
  62. {
  63. InetSocketAddress rsa =(InetSocketAddress)clnt.getRemoteSocketAddress();
  64. ria = rsa.getAddress();
  65. rp = rsa.getPort();
  66. System.out.println("***"+"Worm&Trojan request"+"detected!!!");
  67. System.out.println("Source"+"Address:"+ria);
  68. System.out.println("Source"+"port:"+rp);
  69. }
  70. else
  71. {
  72. send = "HTTP/1.1"
  73. +"200 OK\r\n\r\n"
  74. +"<HTML><BODY"
  75. +"BGCOLOR=&#35;d0d0d0>"
  76. +"<BR><BR><CENTER>"
  77. +"<FONT FACE=Verdana"
  78. +"SIZE=1 COLOR=&#35;0000AA"
  79. +"><B>..::"
  80. +"Worm&TrojanCatcher ::.."
  81. +"</B></FONT>"
  82. +"</CENTER></BODY>"
  83. +"</HTML>";
  84. try
  85. {
  86. os = clnt.getOutputStream();
  87. }
  88. catch (IOException e)
  89. {
  90. System.out.println(e);
  91. }
  92. try
  93. {
  94. os.write(send.getBytes());
  95. }
  96. catch(IOException e)
  97. {
  98. System.out.println(e);
  99. }
  100. }
  101. }
  102. catch (Throwable t)
  103. {
  104. System.err.println("Throwable:"+t.getClass().getName()+":"+t.getMessage());
  105. }
  106. try
  107. {
  108. clnt.close();
  109. }
  110. catch (IOException e)
  111. {
  112. System.out.println(e);
  113. }
  114. finally
  115. {
  116. clnt = null;
  117. }
  118. try
  119. {
  120. Thread.sleep(10);
  121. }
  122. catch (InterruptedException ie)
  123. { }
  124. }
  125. }
  126. }
  127. }
复制代码
通过配置端口和木马或蠕虫访问的网页查找特定的木马或蠕虫,也可以把这些信息也入XML文件,让XML来配置这些信息,这样就不止查找某一个特定的木马或蠕虫了,这就成了一个通用的程序。本程序亦可修改成局域网内查找木马的程序,那样的意义就更大了,因此只在这里抛砖引玉。[/watermark]

[原创]捕获木马或蠕虫的程序

相当不错!
其实一说到java很多人可能第一反应就是JSP,以为java只是在这一方面有所建树而忽略了java本身就是一个完整的编程语言这一事实。所以风之子在此公布他的原创作品想大家展示java在web以外的应用。在用了太多API之后其实如果能够自己写出一个较完整的应用也是相当可贵的,感谢他的能够将自己的原创公布与众,支持原创!

TOP

[原创]捕获木马或蠕虫的程序

Java的优势在网络、在服务器端

TOP

[原创]捕获木马或蠕虫的程序

不错,风灵还是整个程序给逍遥阿姨吧,她老人家的机子,经常。。咳,是经常有小马去玩咯。。

TOP

[原创]捕获木马或蠕虫的程序

if (iscr = true)
这里好象不对哦,

TOP

[原创]捕获木马或蠕虫的程序

额~~~~能说下怎么拿去用不..嘎嘎!

   偶的机子进入更年期  脾气很是古怪

TOP

返回列表 回复 发帖