- "J NDC" is the abbreviation of "java no distance connection", which is intended to provide an easy-to-use visual intranet penetration application. The application is written based on java netty.
- The application is built with the Client/Server architecture. Through the idea of "service registration", the local client side provides local services to the server side, and the server side manages and exposes the corresponding services
- The application core is supported by the ndc private protocol, providing "transmission data encryption", "ip black and white list", "client visualization", "service port timing", "domain name routing" functions
- Project source code directory structure
- jndc
- jndc_core # core public implementation
- jndc_server # server implementation
- jndc_client # client implementation
- TCP data flow
broser -------> (tunnel) ---------->local_app
client -------> jndc server <----------> jndc client ---------->local_app
other -------> ---------->local_app
- NDC protocol
- The protocol is designed to only support ipv4
- The data length limit of a single packet, beyond which will be automatically unpacked
public static final int AUTO_UNPACK_LENGTH = 5 * 1024 * 1024
- Agreement description:
--------------------------------
3byte 1byte 1byte
| ndc | version | type |
--------------------------------
4byte
| local ip |
--------------------------------
4byte
| remote ip |
--------------------------------
4byte
| local port |
--------------------------------
4byte
| server port |
--------------------------------
4byte
| remote port |
--------------------------------
4byte
| data length |
--------------------------------
data length byte
| data |
--------------------------------
secrete: "xxx" # Server secret, very important, be sure to change it before use
loglevel: "info"
blackList: # ip access blacklist
#- "192.168.1.1"
whiteList: # whitelist
#- "192.168.1.2"
servicePort: 81 # jndc server running listening port
bindIp: "127.0.0.1" # jndc server running ip
dbConfig:
type: "mysql" # optional values: mysql and sqlite
# type: "sqlite" # optional values: mysql and sqlite
url: "jdbc:mysql://127.0.0.1:3306/jndc?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true"
name: "root"
password: "xxx"
manageConfig: # management-side api service
managementApiPort: 777 #Management api port
useSsl: false # Whether to use ssl
jksPath: "/xx.jks" #jks certificate address
jksPass: "xxx" # jks certificate password
loginName: "xxx" # login user name
loginPassWord: "xxx" # login password
adminEnable: true # Whether to start a static page
webConfig: # http web service
notFoundPage: "/404.html"
httpPort: 80 # http application port
useSsl: false # Whether to use ssl
jksPath: "/xx.jks" #jks certificate address
jksPass: "ddd" # jks certificate password
secrete: "xxx1" # Server secret, it is very important to change it before use
loglevel: "info" # log print level
serverIp: "127.0.0.1" # Server running listening ip
serverPort: "81" # server running port
openGui: false
autoReleaseTimeOut: 600000 # Client auto disconnect time (milliseconds)
clientServiceDescriptions: # register service
- serviceName: "xx"
serviceIp: "xx.com"
servicePort: "80"
serviceEnable: true
- If you have good functional requirements, or bugs in the code, please submit them in the issue
- http certificate configuration support
- data monitoring
- Query syntax optimization
- Thanks to jetbrains for supporting this open source project
- OpenSourceSupport