summitt / Nope-Proxy

TCP/UDP Non-HTTP Proxy Extension (NoPE) for Burp Suite.
1.52k stars 236 forks source link

`"this.datagramSocket" is null` when `Start and Stop DNS Server` #76

Closed kocoten1992 closed 4 months ago

kocoten1992 commented 4 months ago

When I try Start and Stop DNS Server, I got this error:

java.net.BindException: Permission denied
    at java.base/sun.nio.ch.Net.bind0(Native Method)
    at java.base/sun.nio.ch.Net.bind(Net.java:555)
    at java.base/sun.nio.ch.DatagramChannelImpl.bindInternal(DatagramChannelImpl.java:1194)
    at java.base/sun.nio.ch.DatagramChannelImpl.bind(DatagramChannelImpl.java:1164)
    at java.base/sun.nio.ch.DatagramSocketAdaptor.bind(DatagramSocketAdaptor.java:107)
    at java.base/java.net.DatagramSocket.createDelegate(DatagramSocket.java:1426)
    at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:330)
    at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:389)
    at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:355)
    at josh.dnsspoof.UDPListener.run(UDPListener.java:155)
    at java.base/java.lang.Thread.run(Thread.java:840)
java.lang.NullPointerException: Cannot invoke "java.net.DatagramSocket.receive(java.net.DatagramPacket)" because "this.datagramSocket" is null
    at josh.dnsspoof.UDPListener.run(UDPListener.java:170)
    at java.base/java.lang.Thread.run(Thread.java:840)
java.lang.NullPointerException: Cannot invoke "java.net.DatagramSocket.close()" because "this.datagramSocket" is null
    at josh.dnsspoof.UDPListener.StopServer(UDPListener.java:132)
    at burp.BurpExtender$1$2.DNSToggle(BurpExtender.java:107)
    at josh.ui.NonHttpUI.ToggleDNS(NonHttpUI.java:2728)
    at josh.ui.NonHttpUI.access$200(NonHttpUI.java:148)
    at josh.ui.NonHttpUI$1.actionPerformed(NonHttpUI.java:287)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
    at java.desktop/java.awt.Component.processEvent(Component.java:6391)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
    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)

OS: ubuntu 23.10 BurpSuite: 12.1.5

kocoten1992 commented 4 months ago

The issue was 53 is below 1024, any port below 1024 need to have root privilege, just change the port to 53535 and you will be fine (5353 did not work for me because of chrome also using that port).

kocoten1992 commented 4 months ago

on another note, android setting does not seem to support port other 53, if you using 53535, you may need to use socat to redirect traffic from 53 to 53535.