2012-12-18 69 views
3

下面是我非常粗糙的小程序代碼。在最底層,我執行client.clientProcess();java小程序在部署時不運行,但在eclipse中運行時工作

import javax.swing.*; 

import com.pega.Messaging.Client; 
import com.pega.Messaging.MessagingHelper; 

import java.awt.event.*; 
import java.awt.*; 
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.net.InetAddress; 
import java.net.ServerSocket; 
import java.net.Socket; 


@SuppressWarnings("serial") 
public class PRPCPassCrackApplet extends JApplet{ 


    JLabel message; 

    JLabel lpmsg; 
    JTextField localPort;  

    JLabel snmsg; 
    JTextField serverName; 

    JLabel spmsg; 
    JTextField serverPort; 

    JButton button; 
    JLabel error; 

    public void init(){ 

     setSize(600,150); 
     setBackground(Color.BLACK); 

     message = new JLabel("Client Parameters\n"); 
     lpmsg = new JLabel("Local Port: "); 
     snmsg = new JLabel("Server Name: "); 
     spmsg = new JLabel("Server Port: "); 
     localPort = new JTextField(); 
     serverName = new JTextField(); 
     serverPort = new JTextField(); 
     localPort.setPreferredSize(new Dimension(450, 10)); 
     serverName.setPreferredSize(new Dimension(450, 10)); 
     serverPort.setPreferredSize(new Dimension(450, 10)); 

     button = new JButton("Send To Server"); 
     button.setPreferredSize(new Dimension(450,10)); 

     error = new JLabel(""); 
     error.setForeground(Color.red); 

     Container window = getContentPane(); 
     window.setLayout(new GridLayout(0,2)); 
     button.addActionListener(new ButtonListener()); 

     window.add(message); 
     window.add(new JLabel("")); 
     window.add(lpmsg); 
     window.add(localPort); 
     window.add(snmsg); 
     window.add(serverName); 
     window.add(spmsg); 
     window.add(serverPort); 
     window.add(button); 
     window.add(error); 
    } 

    private class ButtonListener implements ActionListener{ 
     public void actionPerformed(ActionEvent push){ 
      String lp = localPort.getText(); 
      String sn = serverName.getText(); 
      String sp = serverPort.getText(); 
      int lpint = -1; 
      int spint = -1; 
      ServerSocket listenSocket = null; 
      Socket socketToServer = null; 

      try{ 
       lpint = Integer.parseInt(lp); 
      }catch(NumberFormatException e){ 
       error.setText("Local Port is not a number"); 
       return; 
      } 

      try{ 
       spint = Integer.parseInt(sp); 
      }catch(NumberFormatException e){ 
       error.setText("Server Port is not a number"); 
       return; 
      } 

      try{ 
       listenSocket = new ServerSocket(lpint); 
      }catch(Exception e){ 
       error.setText("Could not open local port: " + lp +". Choose another."); 
       return; 
      } finally{ 
       try { 
        listenSocket.close(); 
       } catch (IOException e) { 
       } 
      } 

      try{ 
       //open connection to server 
       InetAddress serverAddress = InetAddress.getByName(sn); 
       socketToServer = new Socket(serverAddress, spint); 
       //create initial connection 
       OutputStream os = socketToServer.getOutputStream(); 
       OutputStreamWriter osw = new OutputStreamWriter(os); 
       BufferedWriter bw = new BufferedWriter(osw); 

       //report in 
       String status = "ping"; 
       bw.write(MessagingHelper.createPacket(status, sn, lp, "")); 
       bw.close(); 

      }catch(Exception e){ 
       error.setText("Can't connect to Server: " + sn + " on port: " + sp); 
       return; 
      }finally{ 
       try { 
        socketToServer.close(); 
       } catch (IOException e) { 
       } 
      } 
      error.setText("Beginning Execution"); 
      error.setForeground(Color.BLUE); 
      button.setVisible(false); 
      Client client = new Client(spint, sn, lpint, true); 
      client.clientProcess();  

     } 
    } 
} 

當我在Eclipse中運行這個,我的計劃順利地執行,正確完成,但我通過右鍵點擊>導出> JAR文件導出的jar我不能運行我的小程序用下面的代碼:

<!DOCTYPE html> 

<html> 

<head> 
<title>Client Testing</title> 
</head> 

<body> 
<h1 id="header1"> Distributed Brute Force Attacks </h1> 


<applet 
class="blah.blah.blah.blah.Applet" <!--not actually blah.blah I had to obfuscate--> 
archive="client.jar" 
code="blah.blah.blah.blah.Applet.class" 
width="1000" 
height="250" 
vspace="10" 
hspace="10" 
align="center" 
alt="You need Java to run this Applet" 
name="clientApplet" 
mayscript > 
</applet> 


</body> 

</html> 

如果它在eclipse中有幫助,我選中「導出生成的類文件和資源」和「導出Java源文件和資源」,並且沒有定義Main類。

該小程序正確顯示並正確執行錯誤檢查,但似乎無法運行該clientProcess。我能做些什麼來讓用戶通過applet運行我的代碼?

+2

我可能會嘗試提供幫助,但是您在名爲「分佈式蠻力攻擊」的小程序中打開服務器套接字。是的,沒有。 – Perception

+0

@Perception什麼是Distibuted蠻力攻擊? – Smit

+0

對,所以程序是使用多臺機器來攻擊Web服務器進行工作。這是我無法顯示小程序名稱的原因,因爲它有我的作品名稱。網絡服務器是工作的一部分,這是允許的,因爲我在我們的安全團隊。我明白你對這個問題的擔心,並且可以隨時保持鎮定,但是強姦自己的機器並不違法。 – tophersmith116

回答

1

確保設置了類路徑。當您在eclipse中運行此applet時,所有類文件都存在於包括jar文件的類路徑中。

+0

是的,我已經做到了。我不知道發生了什麼,但我認爲這與我的線程突然死亡有關...... – tophersmith116

相關問題