12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package de.tudarmstadt.informatik.hostage.protocol.smbutils;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import de.tudarmstadt.informatik.hostage.net.MyDatagramSocketFactory;
- public class NMB extends Thread {
-
- private DatagramSocket nbnsSocket;
- private DatagramSocket nbdsSocket;
- private DatagramPacket packet;
- private String ip;
- private String[] ipParts;
- private InetAddress dst;
- private int nbnsPort = 137;
- private int nbdsPort = 138;
- private String username;
- private String workgroup;
-
- public NMB(String ip, String username, String workgroup) {
- try {
- this.username = username;
- this.workgroup = workgroup;
- this.ip = ip;
- ipParts = ip.split("\\.");
- String newHostAddr = ipParts[0] + "." + ipParts[1] + "." + ipParts[2] + ".255";
- dst = InetAddress.getByName(newHostAddr);
- nbnsSocket = new MyDatagramSocketFactory().createDatagramSocket(nbnsPort);
- nbnsSocket.connect(dst, nbnsPort);
- nbdsSocket = new MyDatagramSocketFactory().createDatagramSocket(nbdsPort);
- nbnsSocket.connect(dst, nbdsPort);
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- private void sendPacket(NBNS nbns) {
- try {
- byte[] packetBytes = nbns.getNextPacket();
- packet = new DatagramPacket(packetBytes, packetBytes.length, dst, nbnsPort);
- nbnsSocket.send(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- private void sendPacket(NBDS nbds) {
- try {
- byte[] packetBytes = nbds.getBytes();
- packet = new DatagramPacket(packetBytes, packetBytes.length, dst, nbdsPort);
- nbnsSocket.send(packet);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- private void registrate() {
- NBNS nbns = new NBNS(new byte[]{0x50, 0x00}, Type.REGISTRATION_UNIQUE, Service.SERVER, username, ip);
- sendPacket(nbns);
-
- nbns.setService(Service.MESSENGER);
- sendPacket(nbns);
-
- nbns.setService(Service.WORKSTATION);
- sendPacket(nbns);
-
- nbns.setName(workgroup);
- nbns.setType(Type.REGISTRATION_GROUP);
- sendPacket(nbns);
-
- nbns.setService(Service.BROWSER_ELECTION);
- sendPacket(nbns);
-
- NBDS nbds = new NBDS(new byte[]{0x50, 0x06}, nbns.getAndIncrementTransactID(), nbns.getAddr(), username, workgroup);
- sendPacket(nbds);
-
- nbns.setType(Type.NAME_QUERY);
- nbns.setService(Service.LOCAL_MASTER_BROWSER);
- sendPacket(nbns);
- }
- public void run() {
- registrate();
- nbnsSocket.close();
- nbdsSocket.close();
- }
-
- }
|