Sep 252000
I wrote this to bulk spam mail newsgroups advertising my bin laden beat em up. Someone may find this code useful. Due to sandbox restrictions it won’t run from a webpage without granting special permissions so I haven’t bothered making the page for it.
import java.awt.*; import java.applet.*; import java.net.*; import java.io.*; import java.awt.event.*; import com.ms.security.*; public class AtNews extends Applet implements ActionListener, ItemListener { private final int Port=119; private int lineCount; private String server, username, password, from, subject, body, groups[][], groupComp; private InetAddress HostAddr; private Socket Sock; private BufferedReader In; private PrintWriter Out; private TextField tf_server, tf_login_name, tf_login_password, tf_from, tf_subject, tf_group_file; private Checkbox cb_login; private TextArea ta_body, ta_response; private Button b_send, b_group_file; protected File f_group_file; public void init(){ // NewsHost = "202.85.164.51" // NewsHost = "news.tcp.co.uk"; // NewsHost = "graf.CS.Uni-Magdeburg.De"; tf_server = new TextField("News Server",25); cb_login = new Checkbox("Username/Password Required",false); tf_login_name = new TextField("Login Name",25); tf_login_name.setEditable(false); tf_login_password = new TextField("Login Password",25); tf_login_password.setEditable(false); tf_from = new TextField("From",25); tf_subject = new TextField("Message Subject",25); b_group_file = new Button(); b_group_file.setLabel("Select Group File"); tf_group_file = new TextField("Group File",25); tf_group_file.setEditable(false); ta_body = new TextArea("Message Body",5,25); ta_body.setText("Message Body"); ta_response = new TextArea("Server Response",5,25); ta_response.setText("Server Response"); ta_response.setEditable(false); b_send = new Button(); b_send.setLabel("Send"); this.add(tf_server); cb_login.addItemListener(this); this.add(cb_login); this.add(tf_login_name); this.add(tf_login_password); this.add(tf_from); this.add(b_group_file); b_group_file.addActionListener(this); this.add(tf_group_file); this.add(tf_subject); this.add(ta_body); this.add(b_send); b_send.addActionListener(this); this.add(ta_response); local(); } private void local(){ tf_server.setText("20.80.164.51"); tf_login_name.setText("news22826"); tf_login_password.setText("password"); tf_from.setText("email@email.com"); tf_subject.setText("Heading"); ta_body.setText("Body"); } public void itemStateChanged(ItemEvent ie){ if (cb_login.getState()){ tf_login_name.setEditable(true); tf_login_password.setEditable(true); } else { tf_login_name.setEditable(false); tf_login_password.setEditable(false); } } public void actionPerformed(ActionEvent ae){ if (ae.getSource()==b_group_file){ try { File group_file = getFile(); setFile(group_file); tf_group_file.setText(group_file.toString()); } catch (Exception e){ tf_group_file.setText("NO GROUP FILE SELECTED"); } } if (ae.getSource()==b_send){ retrievePrams(); } } public void start(){ // readMessage(); // try {readGroups();} catch (Exception e){System.out.println("Failed reading groups : "+e);} // try {connect();} catch (Exception e){System.out.println("From connect fail : "+e);} // try {login();} catch (Exception e){ System.out.println("From login fail : "+e);} /* sendString("QUIT",true); try { In.close(); Out.close(); } catch (Exception e){}*/ } public void destroy(){ try { In.close(); Out.close(); } catch (Exception e){} } public File getFile(){ try { if (Class.forName("com.ms.security.PolicyEngine") != null) { PolicyEngine.assertPermission(PermissionID.UI); } } catch (Throwable cnfe) {System.out.println(cnfe);} FileDialog fd_GroupFile = new FileDialog (new Frame(),"Slect USENET Group file",FileDialog.LOAD); fd_GroupFile.setVisible(true); File f_groupFile = new File (fd_GroupFile.getDirectory(),fd_GroupFile.getFile()); return f_groupFile; } public void setFile(File group_file){ f_group_file=group_file; } private void retrievePrams(){ boolean fail = false; if ((tf_server.getText().equals("News Server"))||(tf_server.getText().equals("ENTER NEWSSERVER"))){ tf_server.setText("ENTER ENTER NEWSSERVER"); fail = true; } if (cb_login.getState()){ if ((tf_login_name.getText().equals("Login Name"))||(tf_login_name.getText().equals("ENTER USERNAME"))){ tf_login_name.setText("ENTER USERNAME"); fail = true; } if ((tf_login_password.getText().equals("Login Password"))||(tf_login_password.getText().equals("ENTER PASSWORD"))) { tf_login_password.setText("ENTER PASSWORD"); fail = true; } } if ((tf_from.getText().equals("From"))||(tf_from.getText().equals("ENTER FROM"))){ tf_from.setText("ENTER FROM"); fail = true; } if ((tf_subject.getText().equals("Message Subject"))||(tf_subject.getText().equals("ENTER SUBJECT"))){ tf_subject.setText("ENTER SUBJECT"); fail = true; } if ((tf_group_file.getText().equals("Group File"))||(tf_group_file.getText().equals("NO GROUP FILE SELECTED"))){ tf_group_file.setText("NO GROUP FILE SELECTED"); fail = true; } if ((ta_body.getText().equals("Message Body"))||(ta_body.getText().equals("ENTER MESSAGE BODY"))){ ta_body.setText("ENTER MESSAGE BODY"); fail = true; } if (!fail){ server = tf_server.getText(); from = tf_from.getText(); subject=tf_subject.getText(); username=tf_login_name.getText(); password=tf_login_password.getText(); subject=tf_subject.getText(); body=ta_body.getText(); try {readGroups(f_group_file);} catch (IOException ioe) {} ta_response.setText(""); comms(); } } public void comms(){ // try {connect();} catch (IOException ioe){ta_response.append("L: Error Reading Groups : "+ioe+"\r\n");} if (cb_login.getState()) login(); // try { for (int a=0;a<groups.length;a++){ groupComp=" "; for (int b=0;b<10;b++){ if (groups[a][b]==null) break; groupComp=groupComp+groups[a][b]+","; } int stringLength = groupComp.length(); groupComp = groupComp.substring(0,groupComp.length()-1); // post(groupComp); System.out.println(groupComp); } // } catch (IOException ioe){ta_response.append("L: Server not Responding : "+ioe+"\r\n");} // sendString("QUIT",true); try { In.close(); Out.close(); } catch (Exception e){} } public void readGroups(File f_groupFile) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f_groupFile))); do { lineCount++; } while (in.readLine()!=null); in.close(); groups = new String[((lineCount-1)/10)+1][10]; BufferedReader in2 = new BufferedReader(new InputStreamReader(new FileInputStream(f_groupFile))); for (int a=0;a<groups.length;a++){ for (int b=0;b<10;b++){ groups[a][b]=in2.readLine(); } } in2.close(); } public void connect() throws IOException { try { if (Class.forName("com.ms.security.PolicyEngine") != null) { PolicyEngine.assertPermission(PermissionID.SYSTEM); } } catch (Throwable cnfe) {System.out.println(cnfe);} HostAddr=InetAddress.getByName(server); Sock=new Socket(HostAddr, Port); In = new BufferedReader(new InputStreamReader(Sock.getInputStream())); Out=new PrintWriter(new BufferedOutputStream(Sock.getOutputStream())); ta_response.append("S: "+getResponse()+"\r\n"); } private String getResponse() throws IOException { String line=In.readLine(); // System.out.println(line); return line; } public void post(String groupsMulti) throws IOException { int code; String NewBody; sendString("post",true); sendString("From: "+from+"\r\nSubject: "+subject+"\r\nNewsgroups:"+groupsMulti+"\r\nBody: \r\n",false); // sendString("\r\n",false); sendString(body,false); sendString(".\r\n",true); } private void login() { sendString("AUTHINFO USER "+username,true); sendString("AUTHINFO PASS "+password,true); } private synchronized void sendString(String command, boolean response){ try { Out.println(command); if (response){ ta_response.append("L: "+command+"\r\n"); Out.flush(); ta_response.append("S: "+getResponse()+"\r\n"); } } catch (Exception e){ System.out.println("Exception with "+command+" = "+e.getMessage()); } } }