jscanner

A Java 21+ based network scanner using virtual threads
Log | Files | Refs | README | LICENSE

DateCommit messageAuthorFiles+-
2026-07-08 17:36Fixed error outputMatthias Jaros1+3-2
2026-07-08 17:22Changed thread counting. Currently it was actually counting submitted but not really running threads. So now it is more clear what is going on and what is being countedMatthias Jaros1+45-34
2026-07-07 22:13Early exit through canceled check. Now shutdown is dramatically fasterMatthias Jaros1+3-2
2026-07-07 21:50Calculate columnwidth each redraw.Matthias Jaros1+1-1
2026-07-07 21:49Moved host counters into one place to have them together and actually changed meaning of host total counter to what it actually is. a total counter and not a done hosts counterMatthias Jaros2+8-8
2026-07-06 13:42Reworked exception handling. Collect now only weird exceptions and print them before results to stderrMatthias Jaros6+70-13
2026-07-06 12:32Updated defaults. Now that my statusline is pretty lean i put the values much higher since the scanner can handle a lotMatthias Jaros1+3-3
2026-07-06 11:02Completetly reworked progress output. Now instead of individual hosts give a statusline that prints current stats to errMatthias Jaros5+169-175
2026-07-06 09:05Changing scanner from collecting all results to a stream of output. Saves RAM and is not necessary to first collect everythingMatthias Jaros3+9-20
2026-07-05 05:09Improved shutdown logic that finally works properly Now if the user quits, then the main thread continues to collect all available results the producer and the host scan port threads close as soon as they check the flag and return whatever they have till nowMatthias Jaros2+43-24
2026-07-05 05:06CleanupMatthias Jaros1+9-6
2026-07-05 05:01Same optimization for scanHostPorts as for runScan. Moved producer into same method using function and genericsMatthias Jaros2+59-65
2026-07-05 04:34Moved producer thread into custom method which encapsulates logic for that producer -> reduced complexity of runScan methodMatthias Jaros2+65-38
2026-07-04 18:00Changed aquireUni.. to aquiere so that it can be interrupted in case of sudden shutdownMatthias Jaros1+9-5
2026-07-04 12:20Improved algorithm by sorting first and then removing all that are 100% and break once we reach one that does not have thatMatthias Jaros1+5-2
2026-07-04 11:03Replaced thread unsafe usage of hasNext()Matthias Jaros1+13-4
2026-07-04 10:39Minor improvementsMatthias Jaros2+2-3
2026-07-04 10:29Fix memory hole in quiet mode at ProgressBarMatthias Jaros2+10-8
2026-07-04 10:06Same producer pattern for ports as for hostsMatthias Jaros1+44-30
2026-07-04 09:55Replaced nested while loops with producer thread and consumer stays in main threadMatthias Jaros1+38-18
2026-07-04 08:04Only save results that found something. Not reachable hosts or no open or filtered ports add no value to the scan and thus only cost RAMMatthias Jaros1+5-1
2026-07-03 16:44Minor refactoringMatthias Jaros1+9-5
2026-07-03 14:38Added ability to read from stdin using Streams Replaced useless counters with already existing hasNext() methodsMatthias Jaros2+41-24
2026-07-03 10:21Added comments and minor refactoringMatthias Jaros2+15-4
2026-07-03 10:11Adjusted shutdown logic.Matthias Jaros1+6-5
2026-07-03 10:06Replaced the nested executors with one per scanner. Which is fine for a virtualthread executorMatthias Jaros1+86-87
2026-07-02 17:39Default timeout for close operation to 60 secondsMatthias Jaros2+3-3
2026-07-02 17:33Finally managed to get a gracefull shutdown with information about the current state of scanned portsMatthias Jaros2+90-55
2026-07-02 16:09Reformatted code so that Scan is initialized in Scan class and Scanner takes care of the actual Scan and not initializing Scan objects anymoreMatthias Jaros5+104-76
2026-07-02 12:55Refactoring for better readabilityMatthias Jaros2+36-17
2026-07-02 12:21Changed timingsMatthias Jaros1+2-2
2026-07-02 12:17Minor fixesMatthias Jaros2+8-0
2026-07-02 12:12Finally i managed to print also intermediate results when stopping process from running with strg-cMatthias Jaros4+67-44
2026-07-02 10:45Changed scanstate to class that now owns completetly the Result List and does not allow modifications outside of defined methods. -> thread safeMatthias Jaros2+42-10
2026-07-02 09:49Added banner recognition parameter to enable it depending on use caseMatthias Jaros4+42-34
2026-07-02 09:29Added new Class ScanState in order to make Scanner stateless during scan process. Not regarding config which is given to the constructorMatthias Jaros3+47-31
2026-07-01 20:07Make scanner gracefully shutdown on Strg-CMatthias Jaros2+55-8
2026-07-01 18:39Added quiet flagMatthias Jaros6+37-23
2026-07-01 17:09Improve readability in cliMatthias Jaros1+1-0
2026-07-01 16:49CLI options sorted, renamed and description fixed Fixed wrong default values by using one source of truthMatthias Jaros3+28-20
2026-07-01 16:12Added CompletionServiceMatthias Jaros1+56-48
2026-07-01 12:09Added dns to service detectorMatthias Jaros2+12-12
2026-07-01 12:09Fixed naming inconsistencyMatthias Jaros1+1-1
2026-07-01 11:45Do not redraw too oftenMatthias Jaros1+1-1
2026-07-01 11:45Fixed port parsing logicMatthias Jaros1+39-24
2026-07-01 11:44Properly and consistently named cli parameter and its internal representationMatthias Jaros2+11-11
2026-07-01 11:43Added banner recognition for basic discovery of servicesMatthias Jaros7+135-24
2026-04-13 15:31Renamed package from network_scanner to jscannerMatthias Jaros25+641-642
2026-04-13 15:29Improved ProgressBar outputMatthias Jaros1+1-1
2026-04-13 09:16Formatted fileMatthias Jaros1+88-89
2026-04-06 18:24Replaced use of cut with java regex matcherMatthias Jaros1+11-4
2026-04-06 18:07Make bar adjust to terminal widthMatthias Jaros1+28-5
2026-03-30 11:49Improved namingMatthias Jaros3+13-13
2026-03-30 11:14Added cli help text for file optionMatthias Jaros1+1-0
2026-03-30 10:20Refactored cli option parsing and added -file option. Refactored reading of hosts to have less redundancy.Matthias Jaros3+87-41
2026-03-30 09:16Fix tab alignmentMatthias Jaros1+3-3
2026-03-23 15:50Forgot one placeMatthias Jaros2+4-4
2026-03-23 15:49Consistent naming of host instead of targetMatthias Jaros5+42-42
2026-03-23 15:42Added disable target check optionMatthias Jaros1+1-1
2026-03-23 15:37Added cli option for online checkMatthias Jaros5+16-8
2026-03-23 15:19Added host online checkMatthias Jaros2+18-2
2026-03-23 14:41Added cli defaults classMatthias Jaros2+19-7
2026-03-23 13:29Renamed blocked to filtered ports to do it like nmap and changed default scan valuesMatthias Jaros8+33-30
2026-03-23 11:53Tiny refactoringMatthias Jaros1+7-4
2026-03-23 11:38Added cli option to be able to select whether to display blocked ports or notMatthias Jaros3+17-13
2026-03-23 11:30Added feature to distinguish between blocked by firewall and open portsMatthias Jaros7+61-43
2026-03-23 10:38Fixed progress bar duplicates and now only redraw lines that actually changes and the rest is fixedMatthias Jaros1+14-2
2026-03-16 22:34Added maxTargetLimit for a cap that defines how many targets are scanned at the same time.Matthias Jaros4+23-8
2026-03-16 16:25FormattingMatthias Jaros1+5-5
2026-03-16 15:41Renamed packageMatthias Jaros19+472-472
2026-03-16 15:39Fixed more sonarlint findingsMatthias Jaros3+8-6
2026-03-16 15:30RefactoringMatthias Jaros1+1-5
2026-03-16 15:26.Matthias Jaros1+3-3
2026-03-16 15:25Tiny improvementsMatthias Jaros1+2-2
2026-03-16 15:21Added cli option for worker threads per hostMatthias Jaros4+18-10
2026-03-16 14:57Replaced printStackTrace with proper message, handling interrupts now and also moved workerthreads to target level instead of global levelMatthias Jaros2+22-12
2026-03-16 11:13Set maxWorker cap to 1000 because consistently better and faster results, then when setting it lower or higher the value.Matthias Jaros1+1-1
2026-03-16 11:05- Removed synchronized on PortRange class, because only called from one thread only. - Added max virtual thread worker cap to reduce memory consumption if required. Therefore also moved progress update into virtual thread, otherwise progress just gets updated at the end of a target host scan.Matthias Jaros2+16-7
2026-03-09 16:00Moved portslot factory out of input parameters to have less confusionMatthias Jaros1+5-3
2026-03-09 15:33Changed result Queue to BitSet, which is more memory efficientMatthias Jaros4+8-9
2026-03-09 15:19Further broke down structure and fixed bug that not all ports got scanned due to early executor shutdown. now handling everything nice in a future that gives return port if it is openMatthias Jaros2+31-20
2026-03-09 13:48Removed unused comments and codeMatthias Jaros1+0-3
2026-03-09 13:47Tiny rename and scope changeMatthias Jaros1+3-3
2026-03-09 13:41Finally refactored structure of virtual threads in a way that makes sense and feels more natural. Each layer, host target and target port scan has it's own executor and is responsible for it's own updates. return statement is called only when everything is finishedMatthias Jaros4+38-30
2026-03-09 11:59Refactored printing of progress bars to be able to handle adding of more hosts during timeMatthias Jaros2+28-13
2026-02-22 20:22RefactoringMatthias Jaros1+3-3
2026-02-22 20:20RefactoringMatthias Jaros2+11-11
2026-02-22 20:12Refactoring für bessere Visibility und VerständnisMatthias Jaros2+28-26
2026-02-22 19:32Ignore SocketExceptions in case network is not reachableMatthias Jaros1+2-2
2026-02-22 19:30Refactored port scan method and fixed open ports indicatorMatthias Jaros2+30-20
2026-02-16 16:58Removed unneded variableMatthias Jaros1+1-2
2026-02-16 16:56Fixed missing 100% on progressbarMatthias Jaros1+23-10
2026-02-16 16:38Fixed bug that cursors moves too much up and deletes lines depending on number of target hostsMatthias Jaros1+15-10
2026-02-16 16:27Fixed bug, using the same portrange class per hostMatthias Jaros1+3-2
2026-02-16 16:24Added checks to prevent illegal port numbersMatthias Jaros1+28-3
2026-02-16 16:14Changed names and removed unused variablesMatthias Jaros1+15-16
2026-02-16 16:14Report order changedMatthias Jaros1+2-1
2026-02-16 16:07Added PortRange class that generates ports to scanMatthias Jaros2+74-7
2026-02-16 16:07Added cli option for portsMatthias Jaros2+8-3
2026-02-16 16:06Make result output more visible by enclosing ip addresses in []Matthias Jaros1+7-2
2026-01-26 18:06Better output handlingMatthias Jaros1+3-3
2026-01-26 17:28Added progress bar :-)Matthias Jaros3+69-4
2026-01-26 16:50Added timeout to cli optionsMatthias Jaros4+43-28
2026-01-26 14:58Added timeoutMatthias Jaros1+1-1
2026-01-26 14:10Added multi-target functionalityMatthias Jaros6+72-44
2026-01-23 23:15Adjusted cliparser optionsMatthias Jaros2+19-19
2026-01-23 21:39Added support for delayInMillis in between connection attemptsMatthias Jaros3+14-10
2026-01-23 21:14Added cli parserMatthias Jaros5+78-68
2026-01-22 20:39Added baseline fdMatthias Jaros2+7-0
2026-01-22 20:05Working version with semaphore counter and rate limiterMatthias Jaros8+252-0
2026-07-09 07:49LICENSEMatthias Jaros2+681-0
2026-01-19 18:00READMEMatthias Jaros1+5-0