Git Product home page Git Product logo

fastjsonscan's Introduction

更新了,注意升级!!更新到v3.9

支持fastjson<=1.2.24和1.2.33<=fatjson<=1.2.47的不出网检测方案!!!!其中有SpringEcho方案,TomcatEcho方案,有DelayTest方案。不出网利用链有3条:dbcp,ibatis和TemplatesImpl,其中TemplatesImpl几乎遇不到,但是也加着。加入回显的文件上传功能(文件大小<64KB),内存马未实现后续添加。新增操作界面和菜单send to fastjsonScan

fastjsonScan

fastjson漏洞burp插件,检测fastjson<=1.2.47基于dnslog和fastjson 1.2.47 的不出网3种TomcatEcho,SpringEcho回显方案,使用ysoserial的tomcatEcho回显方案

附带fastjson1.2.47.tar.gz的web,解压到tomcat 的webapps,和fastjson 1.2.24的jar包,替换1.2.47的jar就能测试1.2.24。

FastjsonScan 更新

  1. 在原来的被动扫描上支持主动扫描,由于主动扫描发送数据包较多,故会多次扫描。
  2. 在原来的rmi协议上支持ldap协议。
  3. 支持fastjson<=1.2.24和1.2.33<=fatjson<=1.2.47回显 ,检测后,发送到Repeater 中,便可以利用。
  4. 支持fastjson<=1.2.24和1.2.33<=fatjson<=1.2.47的延时检测。
  5. 支持fastjson<=1.2.68 的DNSlog检测。
4. 存在攻击行为,非法使用后果自负!!!!
  1. 为防止被动检测多次扫描,同一url被动检测一次,如果重新检测,需要重新加载插件或重启burp,主动扫描可以检测多次,目前主动扫描不会tomcatEcho和SpringEcho。
6. 加入1.2.47-1.2.68 dnslog检测方案,高于1.2.47的利用条件苛刻。

用法:

加到burp插件就行了,流量经过burp就检测。结果在ISSUES中看到,如果fastjson<=1.2.24和1.2.33<=fatjson<=1.2.47的话,自动发送结果到Repeater如下图。

注意:

只检测post,且类型是application/json

如下图:

检测结果ISSUES中看到:

也可以在自定义界面看到

fastjson1.2.47回显存在的话,自动发到Repeater 回显结果,添加Testcmd头执行命令:

一键反弹shell:

加入第二种回显方案: 也是自动检测,存在的话会发送到repeater中,如图,修改echo:test和Testcmd:命令:

第三种回显方案: 自动检测后,发送到repeater种,修改header,加入Testcmd:命令

实现文件上传功能,可上传文件如下图所示,内存马没弄出来,所以是灰色的。由于javassist限制,文件上传大小不能超过64kB,后面再研究限制,除了上传webshell,也可以上传其他任意文件(不存在回显链的无法上传),点击url,右键,弹出文件上传界面:

实现右键菜单一键send to FastScan扫描,只扫描post且类型为application/json的:

fastjsonscan's People

Contributors

zilong3033 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

fastjsonscan's Issues

无法使用

一直处于delayscan,无法进行测试
burpsuite8.0

无回显

测试了vulhub的和作者给的,都是rmi的出网的,没有回显的,自己手动测试是可以回显的
image

报错

环境:mac
版本:burp v2021.8.1
java.lang.NullPointerException: Cannot invoke "burp.IHttpRequestResponse.getHttpService()" because "this.currentlyDisplayedItem" is null
at burp.ib_.d(Unknown Source)
at burp.dxb.getHttpService(Unknown Source)
at burp.dxt.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:149)
at burp.h0d.a(Unknown Source)
at burp.bbc.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.hrn.a(Unknown Source)
at burp.xq.b(Unknown Source)
at burp.g4k.b(Unknown Source)
at burp.hrn.addNotify(Unknown Source)
at java.desktop/java.awt.Container.addImpl(Container.java:1146)
at java.desktop/javax.swing.JSplitPane.addImpl(JSplitPane.java:1009)
at java.desktop/java.awt.Container.add(Container.java:997)
at java.desktop/javax.swing.JSplitPane.setLeftComponent(JSplitPane.java:453)
at burp.hrr.c(Unknown Source)
at burp.hrr.b(Unknown Source)
at burp.hrr.a(Unknown Source)
at burp.hrr.lambda$layoutInitialised$2(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.NullPointerException: Cannot invoke "burp.IHttpRequestResponse.getHttpService()" because "this.currentlyDisplayedItem" is null
at burp.ib_.d(Unknown Source)
at burp.dxb.getHttpService(Unknown Source)
at burp.dxt.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:149)
at burp.h0d.a(Unknown Source)
at burp.bbc.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.hrn.a(Unknown Source)
at burp.xq.b(Unknown Source)
at burp.g4k.b(Unknown Source)
at burp.hrn.addNotify(Unknown Source)
at java.desktop/java.awt.Container.addImpl(Container.java:1146)
at java.desktop/javax.swing.JSplitPane.addImpl(JSplitPane.java:1009)
at java.desktop/java.awt.Container.add(Container.java:997)
at java.desktop/javax.swing.JSplitPane.setLeftComponent(JSplitPane.java:453)
at burp.hrr.c(Unknown Source)
at burp.hrr.b(Unknown Source)
at burp.hrr.a(Unknown Source)
at burp.hrr.lambda$layoutInitialised$2(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.NullPointerException: Cannot invoke "burp.IHttpRequestResponse.getHttpService()" because "this.currentlyDisplayedItem" is null
at burp.ib_.d(Unknown Source)
at burp.dxb.getHttpService(Unknown Source)
at burp.dxt.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:149)
at burp.h0d.a(Unknown Source)
at burp.bbc.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.hrn.a(Unknown Source)
at burp.xq.b(Unknown Source)
at burp.xq.lambda$extensionConfigChanged$4(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.NullPointerException: Cannot invoke "burp.IHttpRequestResponse.getHttpService()" because "this.currentlyDisplayedItem" is null
at burp.ib_.d(Unknown Source)
at burp.dxb.getHttpService(Unknown Source)
at burp.dxt.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:149)
at burp.h0d.a(Unknown Source)
at burp.bbc.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.f2k.a(Unknown Source)
at burp.hrn.a(Unknown Source)
at burp.xq.b(Unknown Source)
at burp.xq.lambda$extensionConfigChanged$4(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

报错

mac
burp 2022.3.6

java.lang.IllegalAccessError: class burp.Gadgets (in unnamed module @0x7cb54c5d) cannot access class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xalan.internal.xsltc.trax to unnamed module @0x7cb54c5d
at burp.Gadgets.createTemplatesTomcatEcho(Gadgets.java:25)
at burp.BurpExtender.buildPayload(BurpExtender.java:532)
at burp.BurpExtender.doScan(BurpExtender.java:363)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:147)
at burp.gpg.run(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
java.lang.IllegalAccessError: class burp.Gadgets (in unnamed module @0x7cb54c5d) cannot access class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xalan.internal.xsltc.trax to unnamed module @0x7cb54c5d
at burp.Gadgets.createTemplatesTomcatEcho(Gadgets.java:25)
at burp.BurpExtender.buildPayload(BurpExtender.java:532)
at burp.BurpExtender.doScan(BurpExtender.java:363)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:147)
at burp.gpg.run(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
java.lang.IllegalAccessError: class burp.Gadgets (in unnamed module @0x7cb54c5d) cannot access class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xalan.internal.xsltc.trax to unnamed module @0x7cb54c5d
at burp.Gadgets.createTemplatesTomcatEcho(Gadgets.java:25)
at burp.BurpExtender.buildPayload(BurpExtender.java:532)
at burp.BurpExtender.doScan(BurpExtender.java:363)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:147)
at burp.gpg.run(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)

报错

java.lang.NullPointerException
at burp.bs5.b(Unknown Source)
at burp.gkh.getHttpService(Unknown Source)
at burp.dtp.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:138)
at burp.g_r.a(Unknown Source)
at burp.hfp.a(Unknown Source)
at burp.hfp.a(Unknown Source)
at burp.hdp.a(Unknown Source)
at burp.coa.b(Unknown Source)
at burp.hfp.addNotify(Unknown Source)
at java.desktop/java.awt.Container.addImpl(Container.java:1146)
at java.desktop/javax.swing.JSplitPane.addImpl(JSplitPane.java:1009)
at java.desktop/java.awt.Container.add(Container.java:997)
at java.desktop/javax.swing.JSplitPane.setLeftComponent(JSplitPane.java:453)
at burp.hfj.g(Unknown Source)
at burp.hfj.c(Unknown Source)
at burp.hfj.a(Unknown Source)
at burp.hfj.lambda$layoutInitialised$2(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.NullPointerException
at burp.bs5.b(Unknown Source)
at burp.gkh.getHttpService(Unknown Source)
at burp.dtp.getHttpService(Unknown Source)
at burp.BurpExtender$MarkInfoTab.isEnabled(BurpExtender.java:138)
at burp.g_r.a(Unknown Source)
at burp.hfp.a(Unknown Source)
at burp.hfp.a(Unknown Source)
at burp.hdp.a(Unknown Source)
at burp.coa.b(Unknown Source)
at burp.hfp.addNotify(Unknown Source)
at java.desktop/java.awt.Container.addImpl(Container.java:1146)
at java.desktop/javax.swing.JSplitPane.addImpl(JSplitPane.java:1009)
at java.desktop/java.awt.Container.add(Container.java:997)
at java.desktop/javax.swing.JSplitPane.setLeftComponent(JSplitPane.java:453)
at burp.hfj.g(Unknown Source)
at burp.hfj.c(Unknown Source)
at burp.hfj.a(Unknown Source)
at burp.hfj.lambda$layoutInitialised$2(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
平台:win10 x64
版本:burpsuite 2021.5.3
插件路径为纯英文,
求大佬解答报错原因

报错提示“Unknown Source",环境是:jdk1.8.0_191 Burp1.7.26

java.lang.RuntimeException
at burp.mpf.makeHttpRequest(Unknown Source)
at burp.DnsLog.getDomain(DnsLog.java:35)
at burp.BurpExtender.ScanFastjson47(BurpExtender.java:1169)
at burp.BurpExtender.doScan(BurpExtender.java:419)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:147)
at burp.nic.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.RuntimeException
at burp.mpf.makeHttpRequest(Unknown Source)
at burp.DnsLog.getDomain(DnsLog.java:35)
at burp.BurpExtender.ScanFastjson24(BurpExtender.java:999)
at burp.BurpExtender.doScan(BurpExtender.java:379)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:147)
at burp.nic.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

检测到Json就进行扫描

实际中会遇到很多get型的fastjson,以及post中有一些参数用的json数据,会有这个洞。建议可以加一下下。

无回显

测试了vulhub的和作者给的,都是rmi的出网的,没有回显的,自己手动测试是可以回显的
image

报错

java.lang.ClassNotFoundException: sun.misc.BASE64Encoder
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at burp.BurpExtender.buildPayload(BurpExtender.java:224)
at burp.BurpExtender.ScanFastjson24echo(BurpExtender.java:242)
at burp.BurpExtender.doScan(BurpExtender.java:140)
at burp.BurpExtender.doPassiveScan(BurpExtender.java:91)
at burp.d3.run(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

数据包扫描类型

请问主动扫描和被动扫描也是只扫描post且类型为application/json的吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.