SMB

SMB2

SMB3

CIFS

Pure Java SMB Client

jNQ™

jNQ™는 SMB 파일 공유 서비스를 Java1.5 이상의 플랫폼을 기반으로 한 모든 Java 응용 프로그램에 제공하는 현재 사용할 수 있는 유일한 Java SMB 솔루션입니다.

여기 에서 jNQ™ 백서 (영어 버전)을 다운로드 할 수 있습니다.

NQE™ 기술을 바탕으로 개발 된 jNQ™는 SMBv3.1.1까지의 모든 SMB 버전을 지원합니다. jNQ™ 클라이언트는 제공된 API로 사용할 수 있는 100 % Java 라이브러리 입니다.

jNQ™가 지원하는 SMBv3.1.1의 end-to-end 암호화 기능을 통해 개발자들은 완전히 안전한 파일 공유 서비스를 제공 할 수 있습니다. SMBv3.1.1 사양의 완전한 지원을 제공하는 유일한 Java SMB 솔루션으로 jNQ™은 사용자와 제품, 그리고 고객을 기존 SMB 버전의 취약점을 악용 한 Wannacry과 Petya 등 최근의 사이버 공격으로부터 보호 할 수 있습니다. jNQ™가 제공하는 보안은 이러한 위협 이후 매우 중요한 것으로 되어 있습니다. 악의적 인 공격을 방지하기 위해서는 SMB 서명 SMB 암호화, Active Directory 인증 Kerberos 인증 Pre-Logon Integrity (사전 인증 무결성) 등 SMBv3.1.1 보안 수단이 필수적입니다.

보안 이외에 jNQ™는 Java 커뮤니티를 최신 SMB 프로토콜에 업데이트시킵니다. Microsoft는 안정성 및 성능 문제에서 Windows10 RS3는 SMBv1 프로토콜을 기본적으로 사용하고 있습니다 (2017 년 9 월) 따라서 SMBv1는 최신 Windows 버전과 SMB 통신을 할 수 없습니다.

Visuality Systems jNQ Video

jNQ™ 아키텍처

jNQ™ 가 제공하는 완전하고 직관적 인 API를 사용 할 수 있습니다.

JNQ™: A Pure Java SMB Client Architecture

 

jNQ™ 기능

  • 모든 관련 Microsoft 사양에 준거
  • NetBIOS WINS, DNS 이름 확인 기능
  • 보안 : jNQ™가 제공하는 강력한 보안 시스템
  • LM, NTLM LMv2, NTLMv2, NTLMSSP, SPNEGO 및 Kerberos에서의 인증
  • 도메인 (AD) 인증
  • SMB 암호화
  • SMB 서명
  • Pre-Logon Integrity (사전 인증 무결성)
  • 파일 폴더 조작 :( 파일 폴더) 새로 만들기, 열기, 이름 변경, 정보 표시, 독점적 설정
  • 파일 조작 : 읽기, 쓰기, 비동기 읽기 비동기 쓰기
  • 네트워크 브라우징 지원
  • DFS
  • RPC 지원 : SAMR, LSA, WINREG, SRVSVC, DSSETUP (모든 확장 가능. 일반적인 DCERPC 프레임 워크의 사용에 더 많은 RPC가 개발 가능)
  • 투명 장애 조치 (영구 지속 핸들 지원)

 

jNQ™ 시장

  • SIEM
  • 데이터 관리
  • 검색 및 인덱싱 서비스
  • eDiscovery
  • MFT 파일 전송
  • 정보 보안
  • Android 앱

jNQ™의 특징

  • SMBv3.1.1까지의 모든 SMB 버전에 대응
  • 함께 API에서 사용할 수 있는 SMB 클라이언트 소프트웨어 라이브러리
  • 100 % Java로 개발. 버전 1.5 이상의 어떤 Java 환경에서도 동작 가능
  • 최적화 된 Read 및 Write
  • 멀티 스레드와 비동기 처리에 의한 고성능

GPL 무료 상용 네트워크 스택 jNQ™를 채용하는 것으로, 고객은 귀중한 R & D에 시간과 돈을 절약하고 최신 SMB 버전을 입수 핵심 기술에 초점을 맞출 수 있습니다.

jNQ™ 샘플 코드

Mount

PasswordCredentials cr = new PasswordCredentials(
     "userName", "password", "domain");
// Create a new Mount Point
Mount mt = new Mount("IpAddress","ShareName", cr);
// Close all connections and mount points
Client.stop();
 

Open, read, write and delete file

PasswordCredentials cr = new PasswordCredentials(
     "userName", "password", "domain");
Mount mt = new Mount("IpAddress","ShareName", cr);
Params pr = new File.Params(File.ACCESS_WRITE, File.SHARE_FULL,
                                File.DISPOSITION_OPEN, false);
File file = new File(mt, "text.txt", pr);
Buffer buff = new Buffer(DATASIZE);
// read DATASIZE from the begginig of the file.
file.read(buff);
// write the buff from the offset DATASIZE.
file.write(buff);
// mark the file for delete.
file.deleteOnClose();
// close the file.
file.close();
// close the mount point 
 mt.close();
 

Delete file by name

PasswordCredentials cr = new PasswordCredentials(
      "userName", "password", "domain");
Mount mt = new Mount("IpAddress","ShareName", cr);
File.delete(mt, "text.txt");
// close the mount point 
mt.close();
 

Browsing directory

PasswordCredentials cr = new PasswordCredentials(
     "userName", "password", "domain");
Mount mt = new Mount("IpAddress","ShareName", cr);
Directory dir = new Directory(mt, "dir1");
Directory.Entry entry;
System.out.println(DIR + " scan:");
do {
    entry = dir.next();
    if (null != entry)
        System.out.println(entry.name + " : size = " + entry.info.eof);
} while (entry != null);
// close the directory browsing.
dir.close();
// close the mount point 
mt.close();
 

Access via Streaming

PasswordCredentials cr = new PasswordCredentials(
     "userName", "password", "domain");
// Create a new Mount Point
Mount mt = new Mount("IpAddress","ShareName", cr);
// create a new file.
File.Params fileParams = new File.Params(
        File.ACCESS_READ | File.ACCESS_WRITE | 
        File.ACCESS_DELETE, File.SHARE_FULL, 
        File.DISPOSITION_OPEN_IF, false);
File file = new File(mt, "myCreatedFile.txt", fileParams);
// create output stream
OutputStream outputStream = new SmbOutputStream(file);
// create some data to write
int totalAmountOfData = 1024 * 1024 * 10;
byte [] data = createByteBuffer( totalAmountOfData);

// write all the bytes -- buffering is done by TCP networking code
outputStream.write(data);
    
// alternative way of writing all the bytes with a little more control
int amountToWriteEachTime = 1024 * 1024;
int currentPosition = 0;
while (currentPosition < data.length) {
    file.setPosition( currentPosition);
    outputStream.write(data, currentPosition, amountToWriteEachTime);
    currentPosition += amountToWriteEachTime;
}
// close the stream
outputStream.close()
// close the mount point 
mt.close();
 

Follow Us

News

  November 06, 2018

Visuality Systems will be a sponsor at the SDC EMEA conference to be held at the Sheraton hotel, Tel-Aviv, Israel on January 30. The event will be co-located with an SMB3 testing Plugfest held on January 28-31.

See Link

 

   August 12, 2018

Windows XP and Server 2003 users can now seamlessly upgrade from the now-defunct SMB1 stack to the encrypted up to date SMB3 protocol with the latest NQE Server. 

 

  July 31, 2018

Visuality Systems has released jNQ™ 1.0.1 adding security features and performance improvements to the SMB3.1.1 NQ Java library.

 

 November 01, 2017

Visuality Systems has released jNQ™ 1.00, features the latest SMB 3.1.1 support in Pure JAVA

 

May 15, 2017

The WannaCry Ransomware cyber-attack succeeded due to exploiting the vulnerability of non-encrypted SMB versions – SMB1/SMB2. Moving to SMB3.1.1 has become a MUST.

See Link

 

March 27, 2017

The VxWorks version of NQE 2.00 is now released.

 

December 04, 2016

Visuality Systems has released NQE™ 2.00, features the latest SMB 3.1.1 support.