sábado, 15 de diciembre de 2012

Como encontrar Hosts en una red SMB

Para encontrar un Host en una red mediante SMB usaremos la biblioteca Jcifs(deberas importarla en tu proyecto de eclipse).

public class test {

public static void main(String args[]){
SmbFile[] domains;
        try {
            domains = (new SmbFile("smb://")).listFiles(); 
            for (int i = 0; i < domains.length; i++) {
                System.out.println(domains[i]);
                SmbFile[] servers = domains[i].listFiles();
                for (int j = 0; j < servers.length ; j++) {
                    System.out.println("\t"+servers[j]);
                }
            }
        } catch (SmbException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) { 
            e.printStackTrace();
        } catch(IOException e) {
        e.printStackTrace();
        }
}

Cuando lo ejecutemos tendremos una salida como esta:
smb://WORKGROUP/
smb://ALVARO-PC/
smb://COMTREND/
smb://PC-TERRAZA/

Librería de cliente SMB escrita en Java

jCIFS es una librería de cliente SMB escrita completamente en Java que sigue de cerca las especificaciones CIFS Unicode, multiplexación IO de cabezales de llamada, autentificación encriptada, transacciones completas, enumeración de dominio, grupo de trabajo, anfitrión, compartición, enumeración de archivos, dispositivos NetBIOS y nombre de servicios, el protocolo smb:// URL, un java.io. Archivos del tipo AIP, llamadas a RAP, y más.

Para mas informacion ver la pagina del proyecto: http://jcifs.samba.org/

Una alternativa libre para usar SMB/CIFS: Samba


Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipoUNIX. De esta forma, es posible que ordenadores con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios.
Entre los sistemas tipo Unix en los que se puede ejecutar Samba, están las distribuciones GNU/Linux, Solaris y las diferentes variantes BSD entre las que podemos encontrar el Mac OS X Server de Apple.
Samba fue desarrollado originalmente para Unix por Andrew Tridgell utilizando un sniffer o capturador de tráfico para entender el protocolo usando ingeniería inversa. El nombre viene de insertar dos vocales al protocolo estándar que Microsoft usa para sus redes, el SMB o server message block. En un principio Samba tomó el nombre de smbserver pero tuvieron que cambiarlo por problemas con una marca registrada. Tridgell buscó en el diccionario de su máquina Unix alguna palabra que incluyera las letras.
Samba es una implementación de una docena de servicios y una docena de protocolos, entre los que están: NetBIOS sobre TCP/IP (NetBT), SMB (también conocido como CIFS), DCE/RPC o más concretamente, MSRPC, el servidor WINS también conocido como el servidor de nombres NetBIOS (NBNS), la suite de protocolos del dominio NT, con su Logon de entrada a dominio, la base de datos del gestor de cuentas seguras (SAM), el servicio Local Security Authority (LSA) o autoridad de seguridad local, el servicio de impresoras de NT y recientemente el Logon de entrada de Active Directory, que incluye una versión modificada de Kerberos y una versión modificada de LDAP. Todos estos servicios y protocolos son frecuentemente referidos de un modo incorrecto como NetBIOS o SMB.
Samba configura directorios Unix y GNU/Linux (incluyendo sus subdirectorios) como recursos para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas normales de red. Los usuarios de GNU/Linux pueden montar en sus sistemas de archivos estas unidades de red como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp. Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las protecciones del sistema de archivos que se esté usando en GNU/Linux. Por ejemplo, las carpetas homepueden tener permisos de lectura y escritura para cada usuario, permitiendo que cada uno acceda a sus propios archivos; sin embargo, deberemos cambiar los permisos de los archivos localmente para dejar al resto ver nuestros archivos, ya que con dar permisos de escritura en el recurso no será suficiente.
La configuración de Samba se logra editando un solo archivo, ubicado en /etc/smb.conf o en /etc/samba/smb.conf.

¿Qué es SMB/CIFS?


Server Message Block o SMB es un Protocolo de red (que pertenece a la capa de aplicación en el modelo OSI) que permite compartir archivos e impresoras (entre otras cosas) entre nodos de una red. Es utilizado principalmente en ordenadores con Microsoft Windows y DOS.
Los servicios de impresión y el SMB para compartir archivos se han transformado en el pilar de las redes de Microsoft. Con la presentación de la Serie Windows 2000 del software, Microsoft cambió la estructura subyacente para el uso del SMB. En versiones anteriores de los productos de Microsoft, los servicios de SMB utilizaron un protocolo que no es TCP/IP para implementar la resolución de nombres de dominio. Comenzando con Windows 2000, todos los productos subsiguientes de Microsoft utilizan denominación DNS. Esto permite a los protocolos TCP/IP admitir directamente el compartir recursos SMB
SMB fue originalmente inventado por IBM, pero la versión más común hoy en día es la modificada ampliamente por Microsoft. Microsoft renombró SMB a Common Internet File System (CIFS) en 1998 y añadió más características, que incluyen soporte para enlaces simbólicos, enlaces duros (hard links), y mayores tamaños de archivo.
Hay características en la implementación de SMB de Microsoft que no son parte del protocolo SMB original.
También existe Samba, que es una implementación libre del protocolo SMB con las extensiones de Microsoft. Funciona sobre sistemas operativos GNU/Linux y en otros UNIX.