Edemede sọftụwia nwere ọrụ nke ihe nkesa ndị ahịa-Windows, akụkụ 01

Ekele diri m.

Taa, ọ ga-amasị m ileba anya na usoro nke ide ngwa ahịa-ihe nkesa nke na-arụ ọrụ nke ọkọlọtọ Windows utilities, dị ka Telnet, TFTP, et cetera, et cetera na Java dị ọcha. O doro anya na agaghị m eweta ihe ọhụrụ - ụlọ ọrụ ndị a niile na-arụ ọrụ nke ọma ihe karịrị otu afọ, ma ekwenyere m na ọ bụghị onye ọ bụla maara ihe na-eme n'okpuru mkpuchi.

Nke a bụ kpọmkwem ihe a ga-atụle n'okpuru ịkpụ.

N'isiokwu a, ka ị ghara ịdọrọ ya, na mgbakwunye na ozi n'ozuzu, m ga-ede naanị banyere ihe nkesa Telnet, ma n'oge a nwekwara ihe ndị ọzọ na-arụ ọrụ - ọ ga-abụ na akụkụ ndị ọzọ nke usoro.

Nke mbụ, ịkwesịrị ịchọpụta ihe Telnet bụ, ihe achọrọ ya na ihe eji ya. Agaghị m ekwupụta isi okwu verbatim (ọ bụrụ na ọ dị mkpa, m ga-etinye njikọ na ihe ndị dị na isiokwu ahụ na njedebe nke isiokwu ahụ), naanị m ga-ekwu na Telnet na-enye ohere ịnweta akara iwu nke ngwaọrụ ahụ. N'ozuzu, nke a bụ ebe ọrụ ya kwụsịrị (ama ụma gbachie nkịtị banyere ịnweta ọdụ ụgbọ mmiri nkesa; ọzọ na nke ahụ mechara). Nke a pụtara na iji mejuputa ya, anyị kwesịrị ịnakwere akara na onye ahịa, nyefee ya na ihe nkesa, gbalịa ịnyefe ya na akara iwu, gụọ nzaghachi akara iwu, ọ bụrụ na ọ dị otu, nyefee ya na onye ahịa na gosi ya na ihuenyo, ma ọ bụ, ọ bụrụ na njehie, mee ka onye ọrụ mara na ihe adịghị mma.

Iji mejuputa ihe ndị dị n'elu, ya mere, anyị chọrọ 2 na-arụ ọrụ klaasị na ụfọdụ ule klas nke anyị ga-amalite ihe nkesa na site na nke onye ahịa ga-arụ ọrụ.
N'ihi ya, n'oge a nhazi ngwa gụnyere:

  • Ndị ahịa Telnet
  • TelnetClientTester
  • Ihe nkesa Telnet
  • TelnetServerTester

Ka anyị lelee nke ọ bụla n'ime ha:

Ndị ahịa Telnet

Klas niile a ga-enwe ike ime bụ izipu iwu anatara wee gosi nzaghachi anatara. Na mgbakwunye, ịkwesịrị inwe ike ijikọ na ọdụ ụgbọ mmiri na-enweghị ike (dị ka ekwuru n'elu) nke ngwaọrụ dịpụrụ adịpụ wee kwụpụ na ya.

Iji mezuo nke a, etinyere ọrụ ndị a:

Ọrụ nke na-ewe adreesị oghere dị ka arụmụka, mepee njikọ wee malite ntinye na ntinye iyi (a na-ekwupụta mgbanwe iyi n'elu, isi mmalite zuru oke dị na njedebe nke isiokwu).

 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());
        }
    }

Na-ebufe otu ọrụ ahụ, jikọọ na ọdụ ụgbọ mmiri - maka telnet nke a bụ 23


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

Ọrụ ahụ na-agụ mkpụrụedemede sitere na ahụigodo wee ziga ha na oghere mmepụta - nke a na-ahụkarị, na ọnọdụ ahịrị, ọ bụghị ọnọdụ agwa:


    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());
        }
    }

Ọrụ ahụ na-enweta data site na oghere wee gosipụta ya na ihuenyo


    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());
        }
    }

Ọrụ ahụ na-akwụsị nnabata na nnyefe data


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

Ihe nkesa Telnet

Klas a ga-enwerịrị ọrụ nke ịnata iwu site na oghere, izipu ya maka igbu ya, na izipu nzaghachi site na iwu ahụ laghachi na oghere. Ihe omume a na-ama ụma elele data ntinye, n'ihi na nke mbụ, ọbụna na "boxed telnet" ọ ga-ekwe omume ịmepụta diski ihe nkesa, na nke abụọ, a na-ewepụ okwu nke nchekwa na isiokwu a na ụkpụrụ, ọ bụ ya mere na ọ dịghị. okwu gbasara ezoro ezo ma ọ bụ SSL.

Enwere naanị ọrụ 2 (otu n'ime ha buru ibu), na n'ozuzu nke a abụghị ezigbo omume, mana maka ebumnuche nke ọrụ a, ọ dị m ka m kwesịrị ịhapụ ihe niile dị ka ọ dị.

 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();

    }

Ihe omume ahụ na-emepe ọdụ ụgbọ mmiri nkesa, na-agụ data sitere na ya ruo mgbe ọ na-ezute njirimara njedebe iwu, na-enyefe iwu ahụ na usoro ọhụrụ, na-emegharị mmepụta site na usoro ahụ na oghere. Ihe niile dị mfe dị ka ngwa agha Kalashnikov.

N'ihi ya, enwere oke ibu maka ọrụ a nwere ọdụ ụgbọ mmiri ndabara:

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

Ọfọn, ya mere, ọrụ nke na-akwụsị ihe nkesa ahụ bụkwa ihe na-adịghị mkpa, ọ na-eme ka ọnyà ebighị ebi kwụsị, na-emebi ọnọdụ ya.

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

Agaghị m enye klaasị ule ebe a, ha nọ n'okpuru - naanị ihe ha na-eme bụ ịlele arụmọrụ nke ụzọ ọha. Ihe niile dị na git.

Iji chịkọta, na mgbede ole na ole ị nwere ike ịghọta ụkpụrụ nke ọrụ nke isi ihe njikwa njikwa. Ugbu a, mgbe anyị telenet na kọmputa dịpụrụ adịpụ, anyị na-aghọta ihe na-eme - anwansi ahụ apụọla)

Yabụ, njikọ ndị a:
Isi mmalite niile dị, dị ma ga-adịkwa ebe a
Banyere Telnet
Ihe ndị ọzọ gbasara Telnet

isi: www.habr.com

Tinye a comment