Pereiti prie turinio

C_Linas

Nariai
  • Pranešimai

    174
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

C_Linas Pranešimai

  1. Sveiki,

     

    Bandau įgyvendinti vieną projektą ir man tam reikia sukurti Virtualų privatų tinklą, tačiau tokį, kuris realaus susijungimo su serveriu nedaro. To pasekoje galėčiau stebėti interneto srautą ir atitinkamai kažką praleisti, kažką blokuoti.

     

    Esamoje stadijoje susidūriau su problema ir nežinau kaip teisingai reikėtų judėti toliau, konkrečiai - padaryti, kad susijungimas su tinklapiais/aplikacijomis įvyktų.

     

    Šiuo metu pagaunu paketus, kuriuos iššifravus gaunu panašią informaciją:

    IP Version:4

    Header Length:20

    Total Length:60

    Protocol:6

    Source IP:36.36.36.36 (Dar nepataisytas formatas)

    Destination IP:5.20.5.59

    Hostname:clients4.google.com

     

    Man reiktų sužinoti, kaip gavus tarkim tokius duomenis kaip IP, serverio adresą ar hostname'ą, portą (Nesu tikras, kad teisingą gaunu) padaryti taip, kad užkrautų tiek tinklapius, tiek aplikacijas. Kaip viskas turėtų vykti.

     

    Šiek tiek informacijos esu radęs, tik taip pat nežinau ar ji yra teisinga:

     

    reikia interneto srauto gautus paketus iššifruoti, išmesti headerį (Tiksliai dar neišsiaiškinau kurį ar nuo kurios vietos būtent), išsiųsti paketą per naują Socket susijungimą gautu adresu ir gavus atsaką, perkonstruoti atitinkamai paketą ir įdėti į išvedimo srautą.

     

    Pridedu ir kodo šiek tiek, kad būtų aiškiau kaip kas vyksta.

     

       private static final String TAG = "VpnService";
    
       private String mServerAddress = "127.0.0.1";
       private int mServerPort = 55555;
    
       private Handler mHandler;
       private Thread mThread;
    
       private ParcelFileDescriptor mInterface;
    
       @Override
       public int onStartCommand(Intent intent, int flags, int startId) {
           if (mHandler == null) {
               mHandler = new Handler(this);
           }
    
           if (mThread != null) {
               mThread.interrupt();
           }
           mThread = new Thread(this, "VpnThread");
           mThread.start();
           return START_STICKY;
       }
    
       @Override
       public void onDestroy() {
           if (mThread != null) {
               mThread.interrupt();
           }
           super.onDestroy();
       }
    
       @Override
       public boolean handleMessage(Message message) {
           if (message != null) {
               Toast.makeText(this, (String) message.obj, Toast.LENGTH_SHORT).show();
           }
           return true;
       }
    
       @Override
       public synchronized void run() {
           try {
               Log.i(TAG, "Starting");
               InetSocketAddress server = new InetSocketAddress(mServerAddress, mServerPort);
               run(server);
    
           } catch (Exception e) {
               Log.e(TAG, "Got " + e.toString());
               try {
                   mInterface.close();
               } catch (Exception e2) {  }
               Message msgObj = mHandler.obtainMessage();
               msgObj.obj = "Disconnected";
               mHandler.sendMessage(msgObj);
    
           } finally {
    
           }
       }
    
       DatagramChannel mTunnel = null;
    
    
       protected boolean run(InetSocketAddress server) throws Exception {
           boolean connected = false;
    
           mTunnel = DatagramChannel.open();
    
           if (!protect(mTunnel.socket())) {
               throw new IllegalStateException("Cannot protect the tunnel");
           }
    
           mTunnel.connect(server);
    
           mTunnel.configureBlocking(false);
           handshake();
    
           connected = true;
           Message msgObj = mHandler.obtainMessage();
           msgObj.obj = "Connected";
           mHandler.sendMessage(msgObj);
    
    
    
           new Thread ()
           {
    
               public void run ()
               {
                   FileInputStream in = new FileInputStream(mInterface.getFileDescriptor());
                   ByteBuffer packet = ByteBuffer.allocate(32767);
    
                   DatagramChannel tunnel = mTunnel;
                   FileOutputStream out = new FileOutputStream(mInterface.getFileDescriptor());
                   int length;
                   String destIP;
    
                   try
                   {
    
                       while (true)
                       {
                           while ((length = in.read(packet.array())) > 0) {
                               packet.limit(length);
                               Log.d(TAG, "Total Length:" + mTunnel.socket().getInetAddress());
    
                               mTunnel.write(packet);
                               packet.flip();
                               TCP_IP TCP_debug = new TCP_IP(packet);
                               TCP_debug.debug();
                               destIP = TCP_debug.getDestination();
    
                               mServerAddress = destIP;
                               mServerPort = TCP_debug.getPort();
                               //InetAddress address = InetAddress.getByName(destIP);
                             //  System.out.println(address.getHostAddress()); // Gaunamas IP (185.11.24.36)
                             //  System.out.println(address.getHostName()); // www.15min.lt
                              // Socket conn = new Socket(address.getHostName(), TCP_debug.getPort());
    
                               out.write(packet.array(), 0, length);
                               packet.clear();
    
                               Thread.sleep(100);
    
                           }
                       }
    
                   }
                   catch (IOException e)
                   {
                       e.printStackTrace();
                   } catch (Exception e) {
                       e.printStackTrace();
                   }
    
               }
    
           }.start();
    
    
           return connected;
       }
    
       private void makeConnection(String destination, int port) {
           try {
               run(new InetSocketAddress(destination, port));
           }
           catch (Exception e) {
               Log.d(TAG, "klaida jungiantis");
           }
       }
    
    
       private void handshake() throws Exception {
    
           if (mInterface == null)
           {
               Builder builder = new Builder();
    
               //builder.setMtu(1500);
               //builder.addAddress("10.0.2.0", 32);
              // builder.addRoute("0.0.0.0", 0);
                builder.addAddress("192.168.0.1", 24);
                builder.addDnsServer("8.8.8.8");
                builder.addRoute("0.0.0.0", 0);
    
               try {
                   mInterface.close();
               } catch (Exception e) {
                   // ignore
               }
    
               mInterface = builder.setSession("VPN'as").establish();
           }
       }
    
    

  2. Gyvenu realiai prieš pat narkologinį, pasimojuojam kartais. :) Kaip ir sakė, aplink maximą, daugiau prie stotelių būna tų alkoholikų visokių. Pats dar tik pusmetį gyvenu, bet nieko nėra buvę, o draugai jau 4ti metai ir nesiskundžia šiuo rajonu. Visi ten kur renkasi, tai tu prie jų nelendi, tai ir jie prie tavęs nelys.

     

    Kas dėl ėjimo vakare, tai ir ne kartą yra tekę gryžti namo pėščiomis iš centro, ar vėlesnio kino seanso, draugo taip pat iš naujamiesčio, tačiau kiek ėjau pro kokius aršiau atrodančius žmones, niekas nėra nė žodžio pasakęs. Nebent prie maximos būna paprašo parūkyt, bet tai yra nutike tik dieną.

     

    Galbūt man sekasi, o galbūt situacija iš tikro nėra bloga kaip apie ją kalbama.

    P.S mašinos neturiu, bet mėnesiui laikiau kieme, draugas ir laikydavo, tačiau jokių nusiskundimų, jokių bėdų nekilo ir iš kitų negirdėjau. Galbūt tai ir nuo kiemo priklauso.

     

    P.P.S Jau geri keli mėnesiai pastebiu, kad policija šitam rajone ypač dažnai atvažiuoja ir tiesiog praeina aplink maximą, apeina kelis kiemus, pravaiko visokias padugnes ir išvažiuoja. Tačiau tai kartais gali pamatyti ir kelis kartus per dieną - prižiūro.

     

    Tai tiek. Sėkmės ieškant būsto.

  3. Esmė tokia - paspaudus mygtuką, sukuriamas išokantis dialogas su nuotrauka, vardu ir ID.

    Man reikia paimti to dialogo ID, tai padarau taip:

    var id = $(this).attr("id");

    lyg ir būtų viskas gerai - outpute išvedęs gaunu teisingą reikšmę, tačiau kai pagal tą patį ID noriu paimti susijusius duomenis, kaip tarkim vardą, negaunu jokio outputo.

    Tą darau taip :

     var name = $(id).find("h2").text();

    .

    Tačiau jei vietoj id įrašau pats kokį ID, tarkim "2" - gaunu pavadinimą.

    Tai problema ir yra, kaip paimti ID, kad pagal jį po to galėčiau paimti ir kitus duomenis?

  4. 1. Spaudžiame Start - Run....

     

    2. Rašome gpedit.msc, spaudžiame ENTER.

     

    3. Atsidariusiame lange, kairėje pusėje pasirenkame Administrative Templates, toliau - Network, toliau - QoS Package Scheduler.

     

    4. Dešinėje pusėje matome sąrašą - pasirenkame Limit Reservable Bandwidth ir spaudžiame ant jo du kartus.

     

    5. Atsidariusiame langelyje padarome Enabled, nustatome procentų skaičių (Bandwidth Limit). Renkamės skaičių tokį, kad kiekvienam kompiuteriui būtų po lygiai.

     

    6. Išsaugojame.

     

    7. Kartojame veiksmą visuose kompiuteriuose.

     

    Veikia tik su Windows OS. Patarimas ateičiai: niekada neieškok papildomų programų kažkokiam darbui atlikti, kai tą darbą atlikti be jų pagalbos gali pats. Jei kiekvienam norimam atlikti veiksmui diegsi programą, kompiuteris ilgai neatlaikys :)

     

    P.S. Tavo atveju nurodyta per mažai informacijos - galbūt routeris per silpnas, galbūt pats internetas per silpnas, galbūt neriboji net elementariausio greičio (pvž. down/up).

     

    Ačiū. Dėl routerio ir interneto - ankščiau tokių dalykų nebūdavo.

  5. Sveiki,

     

    Gal žinot kokią programą, kurios pagalba būtų galima kontroliuoti ant to pačio tinklo esančių kompiuterių internego greitį ar prieigą? Problema tokia, kad dažniausiai būna 3 kompai susijungę, 1 per laidą ir 2 per bevielį, tačiau nežinau kodėl, bet būtent kaip vienas kompas, kuris naudoja bevielį, įjungia uTorrent programą, internetas ant visų kitų kompų nebeveikia. Rodo, kad prisijunga, bet puslapių nevarto, skype ir visa kita neveikia.

  6. Kaip man, paprastam klausytojuj, tai patiko, ypač fonas, instrumentalas. Dėl balso pradžioj kažkaip užkliuvo, lyg akcentas šioks toks jaučiasi ar kažkas, bet po to įsibėgėjus kažkaip gražiai susiklausė. Svarbiausia nesustoti, dirbti ir tobulėti toliau. :)

  7. ŠIaip duoda tą patį atsakymą ar taip ar anaip.

     

    bet, jei formatą skaitymo nuskaitau Charo, ir išvedinėju charą - būną gerai, išveda raidę.

     

    O kas dėl to modifierio, tai štai šičia jis irgi yra naudojamas, bet tiksliai jo paskirties nesuprantu. http://crasseux.com/books/ctutorial/sscanf.html

     

    O šiaip turėjau pavyzdį, kur beveik panašiai kaip mano nurodyta eilutė, su tuo pačiu %as , tik ten toliau veiksmai kitokie ir viskas būna good.

  8. Sveiki,

     

    Turiu bėda su nuskaitymu duomenų iš failo.

     

    Naudoju fscanf funkciją fscanf(FailoVardas, Formatas, Kintamasis i kuri irašau). Tokią eilutę parašius viskas veikia, nuskaito, tačiau išveda visai ne į temą dalykus. Gal būtų galinčių pasakyt tiksliau kaip man gaut tą ką nuskaitė?

     

    Ir plius, ką reiškia formas %as , %s - stringas, nuskaito iki tarpo ar kablelio, o ką reiškia %as gal yra žinančių?

     

    Man reikia nuskaityt žodžius iš failo ir ta eilutė atrodo taip:

     

    while (fscanf(dataFile, "%as", &word) != EOF)

     

    word tai yra char pointeris.

     

    Iš karto dėkui už atsakymus.

  9. Sveiki,

     

    Man reikia parašyti programą, kuri skamba šitaip :

     

    "Turime N darbų, kurių atlikimo trukmė t1, t2,..tN­, kurių baigimo terminai d1, d2,..dN. Jei darbai

    neatliekami laiku, bauda atitinkamai b1, b2,..bN. Kokia eilės tvarka atlikti darbus, kad bauda būtų

    minimali."

     

    Tačiau nesugalvoju kaip reiktų tai daryti, tiksliau kokį būtent algoritmą naudoti. Gal būtų galinčių patart kaip išspręsti tai?

     

    P.S Bruteforcas netinka, negalima visų variantų tikrinti

×
×
  • Pasirinkite naujai kuriamo turinio tipą...