Libraryless. Click here for Pure Java version (9402L/52K).
1 | // TODO: Switch to NIO |
2 | |
3 | srecord noeq PortScan(S ip) { |
4 | settable int numberOfThreads = 10; |
5 | settable double timeout = 10; // seconds |
6 | |
7 | List<Int> openPorts; |
8 | |
9 | ExecutorService es; |
10 | |
11 | run { |
12 | openPorts = new L; |
13 | es = Executors.newFixedThreadPool(numberOfThreads); |
14 | print("Port scanning " + ip + " with timeout " + timeout + " s in " + nThreads(numberOfThreads) + "."); |
15 | new List<Future<Integer>> futures; |
16 | for (int port = 1; port <= 65535; port++) { |
17 | futures.add(portIsOpen(port)); |
18 | } |
19 | es.shutdown(); |
20 | for (Future<Int> f : futures) { |
21 | int port = f!; |
22 | if (port != 0) |
23 | openPorts.add(port); |
24 | } |
25 | } |
26 | |
27 | L<Int> get aka openPorts() { |
28 | if (openPorts == null) run(); |
29 | ret openPorts; |
30 | } |
31 | |
32 | Future<Int> portIsOpen(int port) { |
33 | ret es.submit(new Callable<Integer>() { |
34 | @Override public Integer call() { |
35 | try { |
36 | new Socket socket; |
37 | socket.connect(new InetSocketAddress(ip, port), toMS_int(timeout)); |
38 | print("Connected to " + ip + ":" + port); |
39 | socket.close(); |
40 | return port; |
41 | } catch (Exception ex) { |
42 | return 0; |
43 | } |
44 | } |
45 | }); |
46 | } |
47 | } |
Began life as a copy of #1000796
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): elmgxqgtpvxh, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1035537 |
Snippet name: | PortScan |
Eternal ID of this version: | #1035537/4 |
Text MD5: | 0cd10c9f950aab87a6d17d1ea0f031d6 |
Transpilation MD5: | f641ae6fb9997883806b9cb09de22b50 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-06-05 20:59:37 |
Source code size: | 1237 bytes / 47 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 120 / 206 |
Version history: | 3 change(s) |
Referenced in: | [show references] |