what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

rawclient.java

rawclient.java
Posted Sep 22, 1999

A java program to with allows one to experiment with various protocols.

tags | java, protocol
SHA-256 | 54df769e7add98507c2c2dbf5d45b9b46f3fde0beb12d1dceb1dadf817642cfa

rawclient.java

Change Mirror Download
/************************************
* *
* Flexible Client Program *
* *
* BY: Simeon Bassett *
* *
* simeon_b@hotmail.com *
* *
* This comment must remain. *
* *******************************************
* *
* More information about the program and the *
* source code can be found within the readme.txt file (if there is one) *
* *
* You may freely ditribute this as you wish, however you may not alter it *
* in any way without my permission. *
* *
* If you do alter it please leave my comments in. *
* You MUST leave in this comment. *
* *
*******************************************************************************/

import java.io.*;
import sun.net.*;

class rawclient extends Thread
{

//Globals
static NetworkClient net; //used to create the client object and then input and print streams from that
static BufferedReader net_input;
static PrintStream net_output;
static BufferedReader input;
static String range = "port must be a whole number in the range of 0 - 65536";

//Here is the string for the help command
static String help = "More information is in the readme.txt file \n\n to send information to the server, simply type in the string and hit enter, to get information, hit enter on a blank line \n\nCommands: \n help - Displays this message \n quit - quits the program \n restart - restarts the program without quitting \n repeat - repeats a certain message \n delay repeat - not implemented yet \n port scan - checks for open ports on a computer \n port fondle - repeatedly connects to a server \n view repeat - view the message send in repeat \n send - send a message to the server, used for sending a piece of information that is already a command such as quit or help \n";

static boolean noCommand = true;
static String header = "Raw Client By: Simeon Bassett simeon_b@hotmail.com \n";
static boolean firstCycle = true;
static String server;
static int port;
static String repeatBuffer = ""; //for the repeat command
static int delay = 200;

public static void main(String arg[])
{
if (firstCycle) //do these only when the program starts
{
System.out.println(header);

input = new BufferedReader(new InputStreamReader(System.in));

firstCycle = false;
}

try
{
System.out.print("server:");
server = input.readLine();
if(server.equals(""))
{
server = "cjnetworks.com";
System.out.println(server);
}
System.out.print("port:");
String tempPort = input.readLine();
if(tempPort.equals(""))
{
port = 25;
}
else
{
port = (new Integer(tempPort)).intValue();
}

System.out.println("port has been read (" + port + ")" ); //debugging info

if( (check_server(server) && check_port(port)) )
{
System.out.println("Creating client object");
net = new NetworkClient(server, port);
System.out.println("Client object Created");
}
else
{
System.out.println("There was an error in the client specification");
main(null);
return;
}

}
catch(IOException e)
{
System.out.println("connection not possible");
}
catch(NumberFormatException e)
{
System.out.println(range);
}
catch(NullPointerException e)
{
System.out.println("There was an error in the client specification");
}

if(!net.serverIsOpen())
{
System.out.println("server is not open");
main(null);
return;
}

net_input = new BufferedReader(new InputStreamReader(net.serverInput));
net_output = net.serverOutput;

program(input, net_input, net_output);

return;

}

/**************************************
* Program Core *
**************************************/

/* I didn't name the variables in the program()
function the same as the globals because
of scope problems that I didn't want to work around
with the scope resolution operator. I guess that will teach me to use
global variables. */

static void program(BufferedReader program_input, BufferedReader program_net_input, PrintStream program_net_output)
{
String command = "";

System.out.print("%");
try { command = program_input.readLine(); } catch(IOException e) { System.out.println(e); return; }


/********************
* Features *
********************/
if (command.equalsIgnoreCase("help"))
{
System.out.println(help);
noCommand = false;
}
if (command.equalsIgnoreCase("quit"))
{
cleanUp();
noCommand = false;
return;
}
if (command.equalsIgnoreCase("restart"))
{
main(null);
return;
}
if (command.equalsIgnoreCase("repeat"))
{
int countMax = 0;
int count = 0;
String sync = "0";
repeatBuffer = "";

System.out.print("message: ");
while(!(repeatBuffer.endsWith("*\n")))
{
try { repeatBuffer += program_input.readLine() + "\n"; } catch(IOException e) { }
}

repeatBuffer = repeatBuffer.substring( 0 , repeatBuffer.length() - 2 ); //shave the ending command off

System.out.print("Times to repeat: ");
try
{
countMax = (new Integer(program_input.readLine())).intValue();
}
catch(IOException e)
{
System.out.println("IO error " + e);
}

System.out.print("Sync to input from server: ");
try { sync = program_input.readLine(); } catch(IOException e) { }
if(sync.equals(""))
{
while(count < countMax)
{
program_net_output.println(repeatBuffer);
count++;
}
}
else
{
String netInput = "";
boolean breakLoop = false;

System.out.println(repeatBuffer);

while(count < countMax)
{
program_net_output.println(repeatBuffer);

while(true) //wait until sync message is encountered before moving on
{
try
{
if(net_input.ready())
netInput = net_input.readLine();

System.out.println(netInput);

if ( netInput.lastIndexOf(sync) != -1 )
{
breakLoop = true;
}

sleep(delay);
}
catch(IOException e)
{
}
catch(InterruptedException e)
{
}

if(breakLoop)
break;

}

count++;
try { sleep(delay); } catch(InterruptedException e) { }
}
}

command = "";
}
if (command.equalsIgnoreCase("delay repeat"))
{

}
if (command.equalsIgnoreCase("port scan"))
{
//Create the variables
String portScanServer = "";
int portsFound = 0;
int startAt = 0;
int endAt = 65536;
int threads = 1;
int timeout = 1000;
int split;
int portPoint;
int extraPorts = 0;
int totalScanningPorts;

//Reset portScan's static variables
portScan.totalPortsFound = 0;
portScan.finishedThreads = 0;
portScan.portsChecked = 0;

//Get user Input
try
{
//lots of user input for this one
System.out.print("Server: ");
portScanServer = program_input.readLine();

System.out.print("Start at: ");
startAt = (new Integer(program_input.readLine())).intValue();

System.out.print("End at: ");
endAt = (new Integer(program_input.readLine())).intValue();

System.out.print("Threads: ");
threads = (new Integer(program_input.readLine())).intValue();

/* System.out.print("timeout: ");
timeout = (new Integer(program_input.readLine())).intValue(); */

System.out.print("Open ports found at: ");
}
catch(IOException e)
{
}

//Variable Arithmetic to set up for port scan
totalScanningPorts = endAt - startAt;

//if there are more thread than ports just go with one thread to each port
if (totalScanningPorts < threads)
threads = totalScanningPorts;

extraPorts = totalScanningPorts % threads;
split = (totalScanningPorts - extraPorts)/threads;
portPoint = startAt + split + extraPorts;

portScan[] scanner = new portScan[threads];

scanner[0] = new portScan(portScanServer , startAt , portPoint , timeout );
scanner[0].start();

portPoint++;

int count = 1;
while (count < threads)
{
scanner[count] = new portScan(portScanServer , portPoint , portPoint + split , timeout);
scanner[count].start();
portPoint += split + 1;
count++;
}

while(portScan.finishedThreads < threads) //check to make sure that all of the threads have finished and wait until they do
{
try
{
sleep(1000);
}
catch(InterruptedException e)
{
}
}

System.out.print("\n");
System.out.println(portScan.portsChecked + " ports were checked");

if(portScan.totalPortsFound == 0)
System.out.print("there were no open ports found, how dissappointing!");
else
System.out.print("there were " + portScan.totalPortsFound + " open ports found ");

System.out.print("\n");
noCommand = false;
}
if (command.equalsIgnoreCase("port fondle"))
{
String server;
int port;
int cycles;
int countInner = 0;
int countOuter = 0;
int connectDelay = 0;

try
{
//the input
System.out.print("Server: ");
server = program_input.readLine();

System.out.print("port: ");
port = (new Integer(program_input.readLine())).intValue();

System.out.print("cycles: ");
cycles = (new Integer(program_input.readLine())).intValue();

System.out.print("delay: ");
connectDelay = (new Integer(program_input.readLine())).intValue();

//The meat
while(countOuter < cycles)
{
while ( countInner < 65536 )
{
try
{
new java.net.Socket(server , port);
sleep(connectDelay);
countInner++;
}
catch(IOException e)
{
}
catch(InterruptedException e)
{
}
}

countOuter++;
System.out.print(".");
}

System.out.println("All cycles complete");
}
catch(IOException e)
{
System.out.print(e);
}

noCommand = false;
}
if (command.equalsIgnoreCase("view repeat"))
{
System.out.println(repeatBuffer);
noCommand = false;
}
if (command.equalsIgnoreCase("send"))
{
System.out.print("-->");
try { command = program_input.readLine(); } catch(IOException e) { }
}
if (noCommand)
{
if(!(command.equals("")))
program_net_output.println(command);
else
printNet();

}
/******************
* End Features *
******************/

program(program_input, program_net_input, program_net_output);

return;
}


/**************************************
* Functions *
**************************************/

static void cleanUp()
{
printNet();

//Clean up time
try
{
//close the global client object
net.closeServer();

//close the global IO streams
net_input.close();
net_output.close();
}
catch(Exception e)
{
System.out.println(e);
}

}

static void printNet()
{
String netInput = "";

try
{
while(net_input.ready())
{
netInput = net_input.readLine();
System.out.println(netInput);
}
}
catch(IOException e)
{
System.out.println("could not get input from server");
}

return;
}

static boolean check_server(String server)
{
if(server.equals(""))
{
System.out.println("server not valid");
return false;
}
return true;
}

static boolean check_port(int port)
{

if(port > 65536)
{
System.out.println(range + " (more than 65536)");
return false;
}

if(port < 0)
{
System.out.println(range + " (less than 0)");
return false;
}

return true;
}

}


/******************************
* Classes *
******************************/

class portScan extends Thread
{

java.net.Socket server;
String serverName;
int startingPort;
int endingPort;
int count;
int timeOut;

static final int portMin = 0;
static final int portMax = 65536;

public static int totalPortsFound = 0;
public static int finishedThreads = 0;
public static int portsChecked = 0;

public portScan(String serverAddress, int startPort, int endPort , int timeout)
{
serverName = serverAddress;
count = startingPort = startPort;
endingPort = endPort;
timeOut = timeout;
}

public void run()
{
while(count <= endingPort)
{
try
{
server = new java.net.Socket(serverName , count);
System.out.print(" " + count + " ");
portScan.totalPortsFound++;
}
catch(IOException e)
{
System.out.print(".");
portsChecked++;
}
count++;
}

finishedThreads++;
return;
}

}
Login or Register to add favorites

File Archive:

September 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Sep 1st
    261 Files
  • 2
    Sep 2nd
    17 Files
  • 3
    Sep 3rd
    38 Files
  • 4
    Sep 4th
    52 Files
  • 5
    Sep 5th
    23 Files
  • 6
    Sep 6th
    27 Files
  • 7
    Sep 7th
    0 Files
  • 8
    Sep 8th
    1 Files
  • 9
    Sep 9th
    16 Files
  • 10
    Sep 10th
    38 Files
  • 11
    Sep 11th
    21 Files
  • 12
    Sep 12th
    40 Files
  • 13
    Sep 13th
    18 Files
  • 14
    Sep 14th
    0 Files
  • 15
    Sep 15th
    0 Files
  • 16
    Sep 16th
    21 Files
  • 17
    Sep 17th
    51 Files
  • 18
    Sep 18th
    0 Files
  • 19
    Sep 19th
    0 Files
  • 20
    Sep 20th
    0 Files
  • 21
    Sep 21st
    0 Files
  • 22
    Sep 22nd
    0 Files
  • 23
    Sep 23rd
    0 Files
  • 24
    Sep 24th
    0 Files
  • 25
    Sep 25th
    0 Files
  • 26
    Sep 26th
    0 Files
  • 27
    Sep 27th
    0 Files
  • 28
    Sep 28th
    0 Files
  • 29
    Sep 29th
    0 Files
  • 30
    Sep 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close