Te tuhi rorohiko me te mahi o nga taputapu kiritaki-tūmau Windows, wahanga 01

Tena koe.

I tenei ra e hiahia ana ahau ki te titiro ki te tukanga o te tuhi i nga tono a te kiritaki-tūmau e mahi ana i nga mahi o nga taputapu Windows paerewa, penei i te Telnet, TFTP, me era atu, me era atu i roto i te Java parakore. E marama ana kaore au e kawe mai i tetahi mea hou - kua mahi angitu enei taputapu katoa mo te neke atu i te kotahi tau, engari e whakapono ana ahau kaore nga tangata katoa e mohio he aha nga mahi kei raro i te awhi.

Koinei tonu te mea ka korerohia i raro i te tapahi.

I roto i tenei tuhinga, kia kore ai e toia ki waho, hei taapiri atu ki nga korero whanui, ka tuhi noa ahau mo te tūmau Telnet, engari i tenei wa he rauemi ano mo etahi atu taputapu - kei etahi atu waahanga o te raupapa.

Tuatahi, me mohio koe he aha te Telnet, he aha te mea e hiahiatia ana, me te aha e whakamahia ai. Kaore au e whakahua i nga puna korero (mehemea e tika ana, ka whakapirihia e ahau he hononga ki nga rauemi mo te kaupapa i te mutunga o te tuhinga), ka kii noa ahau ka tukuna e Telnet te uru mamao ki te raina whakahau o te taputapu. I te nuinga o te waa, koinei te mutunga o tana mahi (I ata noho wahangu ahau mo te uru atu ki te tauranga tūmau; he nui ake i muri mai). Ko te tikanga mo te whakatinana, me whakaae tatou ki tetahi raina i runga i te kiritaki, tuku atu ki te tūmau, me ngana ki te tuku ki te raina whakahau, panuihia te whakautu raina whakahau, mena he kotahi, whakahokia atu ki te kiritaki me whakaatu ki runga i te mata, ki te hapa ranei, kia mohio te kaiwhakamahi kei te he tetahi mea.

Hei whakatinana i nga korero o runga ake nei, me 2 nga karaehe mahi me etahi akomanga whakamatautau ka whakarewahia e matou te tūmau me te mahi a te kiritaki.
No reira, i tenei wa ko te hanganga tono kei roto:

  • TelenetClient
  • TelnetClientTester
  • TelenetServer
  • TelnetServerTester

Kia haere tatou i roto i ia o ratou:

TelenetClient

Ko nga mea katoa ka taea e tenei akomanga ko te tuku whakahau kua riro mai me te whakaatu i nga whakautu kua tae mai. I tua atu, me kaha koe ki te hono atu ki tetahi tauranga (penei i te korero i runga ake nei) o tetahi taputapu mamao me te momotu mai i tera.

Hei whakatutuki i tenei, i whakatinanahia nga mahi e whai ake nei:

He mahinga ka tango i te wahitau turanga hei tohenga, ka whakatuwhera i te hononga ka tiimata i nga awa whakauru me te whakaputa (kei te korero nga taurangi awa i runga ake nei, kei te mutunga o te tuhinga nga punaa katoa).

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

Te utaina i te mahi kotahi, te hono ki te tauranga taunoa - mo te telnet he 23 tenei


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

Ka panuihia e te mahi nga tohu mai i te papapātuhi ka tukuna ki te turanga putanga - he mea angamaheni, i roto i te aratau raina, ehara i te aratau ahua:


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

Ka whiwhi raraunga te mahi mai i te turanga me te whakaatu ki te mata


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

Ko te mahi ka mutu te tango raraunga me te tuku


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

TelenetServer

Me whai mana tenei karaehe ki te tiki tono mai i te turanga, te tuku kia mahia, me te tuku whakautu mai i te whakahau ki te turanga. Kaore te kaupapa e tirotiro i nga raraunga whakauru, na te mea tuatahi, ahakoa i roto i te "waea pouaka pouaka" ka taea te whakahōputu i te kōpae tūmau, tuarua, ko te take o te haumarutanga i roto i tenei tuhinga ka mahue i runga i te kaupapa, na reira karekau. he kupu mo te whakamunatanga, SSL ranei.

E 2 noa nga mahi (kotahi o aua mea kua taumaha rawa atu), a, i te nuinga o te waa ehara tenei i te mahi tino pai, engari mo nga kaupapa o tenei mahi, he mea tika ki ahau te waiho i nga mea katoa.

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

    }

Ka whakatuwherahia e te papatono te tauranga tūmau, ka panuihia nga raraunga mai i a ia kia tutaki ki tetahi ahuatanga mutunga o te whakahau, ka tukuna te whakahau ki tetahi tukanga hou, ka tukuna ano te putanga mai i te tukanga ki te turanga. He maamaa noa nga mea katoa penei i te pu huaki Kalashnikov.

No reira, he taumahatanga mo tenei mahi me te tauranga taunoa:

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

Na, ko te mahi e aukati ana i te kaimau he mea iti ano hoki, ka haukotia te riu mau tonu, ka takahi i tona ahuatanga.

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

E kore ahau e tuku karaehe whakamatautau ki konei, kei raro iho - ko ta raatau mahi he tirotiro i nga mahi o nga tikanga a te iwi. Ko nga mea katoa kei runga i te git.

Hei whakarāpopoto, i roto i nga ahiahi e rua ka mohio koe ki nga kaupapa o te mahi o nga taputapu papatohu matua. Inaianei, ka waea waea ki te rorohiko mamao, ka mohio tatou he aha te mahi - kua ngaro te makutu)

Na, ko nga hononga:
Ko nga puna katoa i mua, kei konei, kei konei
Mo Telnet
He korero ano mo Telnet

Source: will.com

Tāpiri i te kōrero