Software ea ho ngola e nang le ts'ebetso ea lisebelisoa tsa Windows client-server, karolo ea 01

Lumelang.

Kajeno ke rata ho sheba mokhoa oa ho ngola likopo tsa bareki-server tse etsang mesebetsi ea lits'ebeletso tse tloaelehileng tsa Windows, joalo ka Telnet, TFTP, et cetera, et cetera ho Java e hloekileng. Ho hlakile hore nke ke ka tlisa letho le lecha - lisebelisoa tsena kaofela li 'nile tsa sebetsa ka katleho nako e fetang selemo, empa ke lumela hore hase bohle ba tsebang se etsahalang tlas'a hood.

Sena ke sona hantle se tla tšohloa tlas'a sehiloeng.

Sehloohong sena, e le hore ke se ke ka e hula, ho phaella boitsebisong bo akaretsang, ke tla ngola feela ka seva sa Telnet, empa hona joale ho na le boitsebiso bo mabapi le lisebelisoa tse ling - e tla ba likarolong tse ling tsa letoto.

Pele ho tsohle, o hloka ho tseba hore na Telnet ke eng, e hloka eng, le hore na e sebelisetsoa eng. Nke ke ka qotsa mehloli ea mantsoe (haeba ho hlokahala, ke tla hokela sehokelo ho lisebelisoa tse mabapi le sehlooho qetellong ea sengoloa), ke tla re feela Telnet e fana ka phihlello e hole ho mohala oa taelo oa sesebelisoa. Ka kakaretso, ke hona moo ts'ebetso ea eona e fellang teng (ke ile ka khutsa ka boomo mabapi le ho fihlella boema-kepe ba seva; ho feta moo hamorao). Sena se bolela hore ho e kenya ts'ebetsong, re hloka ho amohela mohala ho mofani, ho o fetisetsa ho seva, ho leka ho o fetisetsa molaong oa taelo, ho bala karabo ea molaetsa oa taelo, haeba ho na le e 'ngoe, e fetisetse ho moreki le e hlahise skrineng, kapa, haeba liphoso, tsebisa mosebelisi hore ho na le phoso.

Ho kenya ts'ebetsong se boletsoeng ka holimo, ka hona, re hloka lihlopha tse 2 tse sebetsang le sehlopha sa liteko tseo re tla qala seva ho tsona le tseo mofani a tla sebetsa ka tsona.
Ka hona, hajoale sebopeho sa kopo se kenyelletsa:

  • TelnetClient
  • TelnetClientTester
  • TelnetServer
  • TelnetServerTester

Ha re hlahlobeng e 'ngoe le e 'ngoe ea tsona:

TelnetClient

Sohle seo sehlopha sena se lokelang ho se etsa ke ho romella litaelo tse amoheloang le ho bontša likarabo tse amoheloang. Ho phaella moo, o hloka ho khona ho hokela boema-kepe bo sa reroang (joalo ka ha ho boletsoe ka holimo) sa sesebelisoa se hole mme o hane ho sona.

Ho finyella sena, ho ile ha kengoa tšebetsong mesebetsi e latelang:

Mosebetsi o nkang aterese ea sokete e le khang, o bula khokahano 'me o qala melapo ea ho kenya le ho tsoa (liphatlalatso tse fapaneng li phatlalatsoa ka holimo, mehloli e feletseng e qetellong ea sehlooho).

 public void run(String ip, int port)
    {
        try {
            Socket socket = new Socket(ip, port);
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
            Scanner keyboard = new Scanner(System.in);
            reader = new Thread(()->read(keyboard, sout));
            writer = new Thread(()->write(sin));
            reader.start();
            writer.start();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

Ho jarisa ts'ebetso e ts'oanang, ho hokela boema-kepe ba kamehla - bakeng sa telnet sena ke 23


    public void run(String ip)
    {
        run(ip, 23);
    }

Ts'ebetso e bala litlhaku ho tsoa ho keyboard ebe e li romella ho socket ea tlhahiso - e tloaelehileng, ka mokhoa oa mohala, eseng mokhoa oa sebapali:


    private void read(Scanner keyboard, OutputStream sout)
    {
        try {
            String input = new String();
            while (true) {
                input = keyboard.nextLine();
                for (char i : (input + " n").toCharArray())
                    sout.write(i);
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

Ts'ebetso e fumana data ho tsoa ho sokete ebe e e bonts'a skrineng


    private void write(InputStream sin)
    {
        try {
            int tmp;
            while (true){
                tmp = sin.read();
                System.out.print((char)tmp);
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

Ts'ebetso e emisa kamohelo ea data le phetiso


    public void stop()
    {
        reader.stop();
        writer.stop();
    }
}

TelnetServer

Sehlopha sena se tlameha ho ba le ts'ebetso ea ho amohela taelo ho tsoa ho sokete, ho e romella hore e phethoe, le ho romella karabo ho tsoa ho taelo ho khutlela soketeng. Lenaneo ka boomo ha le hlahlobe lintlha tsa ho kenya, hobane pele, esita le "boxed telnet" hoa khoneha ho fomata disk ea seva, 'me ea bobeli, taba ea ts'ireletso sehloohong sena e siiloe ka molao, ke ka lebaka leo ho seng joalo. lentsoe mabapi le encryption kapa SSL.

Ho na le mesebetsi e 2 feela (e 'ngoe ea tsona e imetsoe),' me ka kakaretso ena hase mokhoa o motle haholo, empa ka morero oa mosebetsi ona, ho ne ho bonahala ho loketse ho 'na ho tlohela ntho e' ngoe le e 'ngoe kamoo e leng kateng.

 boolean isRunning = true;
    public void run(int port)    {

        (new Thread(()->{ try {
            ServerSocket ss = new ServerSocket(port); // создаем сокет сервера и привязываем его к вышеуказанному порту
            System.out.println("Port "+port+" is waiting for connections");

            Socket socket = ss.accept();
            System.out.println("Connected");
            System.out.println();

            // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту.
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();

            Map<String, String> env = System.getenv();
            String wayToTemp = env.get("TEMP") + "tmp.txt";
            for (int i :("Connectednnr".toCharArray()))
                sout.write(i);
            sout.flush();

            String buffer = new String();
            while (isRunning) {

                int intReader = 0;
                while ((char) intReader != 'n') {
                    intReader = sin.read();
                    buffer += (char) intReader;
                }


                final String inputToSubThread = "cmd /c " + buffer.substring(0, buffer.length()-2) + " 2>&1";


                new Thread(()-> {
                    try {

                        Process p = Runtime.getRuntime().exec(inputToSubThread);
                        InputStream out = p.getInputStream();
                        Scanner fromProcess = new Scanner(out);
                        try {

                            while (fromProcess.hasNextLine()) {
                                String temp = fromProcess.nextLine();
                                System.out.println(temp);
                                for (char i : temp.toCharArray())
                                    sout.write(i);
                                sout.write('n');
                                sout.write('r');
                            }
                        }
                        catch (Exception e) {
                            String output = "Something gets wrong... Err code: "+ e.getStackTrace();
                            System.out.println(output);
                            for (char i : output.toCharArray())
                                sout.write(i);
                            sout.write('n');
                            sout.write('r');
                        }

                        p.getErrorStream().close();
                        p.getOutputStream().close();
                        p.getInputStream().close();
                        sout.flush();

                    }
                    catch (Exception e) {
                        System.out.println("Error: " + e.getMessage());
                    }
                }).start();
                System.out.println(buffer);
                buffer = "";

            }
        }
        catch(Exception x) {
            System.out.println(x.getMessage());
        }})).start();

    }

Lenaneo le bula sekepe sa seva, le bala data ho lona ho fihlela le kopana le sebopeho sa ho qetela sa taelo, le fetisetsa taelo ho ts'ebetso e ncha, 'me le khutlisetsa tlhahiso ho tloha ts'ebetsong ho ea ho sokete. Ntho e 'ngoe le e' ngoe e bonolo joaloka sethunya sa Kalashnikov.

Ka hona, ho na le moroalo o mongata bakeng sa ts'ebetso ena ka port ea kamehla:

 public void run()
    {
        run(23);
    }

Hantle, ho ea ka, mosebetsi o emisang seva o boetse o fokola, o sitisa loop e sa feleng, e tlōla boemo ba eona.

    public void stop()
    {
        System.out.println("Server was stopped");
        this.isRunning = false;
    }

Nke ke ka fana ka litlelase tsa liteko mona, li ka tlase - sohle seo ba se etsang ke ho lekola ts'ebetso ea mekhoa ea sechaba. Tsohle li ho git.

Ho akaretsa, mantsiboeeng a 'maloa u ka utloisisa melao-motheo ea ts'ebetso ea lisebelisoa tse kholo tsa console. Joale, ha re letsetsa komporong e hole, re utloisisa se etsahalang - boloi bo nyametse)

Kahoo, li-link:
Mehloli eohle e ne e le teng, e teng ebile e tla ba teng
Mabapi le Telnet
Tse ling ka Telnet

Source: www.habr.com

Eketsa ka tlhaloso