Apologies, I found out that the AdFind.zip file I uploaded wasn’t password protected and caused some download issues. I have uploaded the correct password protected version of the zip file so that should clear up the download issues.
Information about joeware mixed with wild and crazy opinions...
Apologies, I found out that the AdFind.zip file I uploaded wasn’t password protected and caused some download issues. I have uploaded the correct password protected version of the zip file so that should clear up the download issues.
OK… Finally, at long last, an update for AdFind and AdMod. Lots of updates actually. It isn’t that I haven’t been adding things to them, I just haven’t been publicly releasing so that people update AdFind signatures on virus total that feeds all of the random AV/Ant-malware tools to go incorrectly block it.
The last time I publicly updated AdFind was in October 2023 and the last time I publicly udpated AdMod was also in Octover 2023.
This is V01.64.00 (current) vs V01.62.00 (previous). The changelog block in AdFind.cpp covers the full V01.64.00
development cycle (2023-10-13 ? 2026-05-09). Here is the consolidated list, grouped by type.
AdFind V01.64.00 — Changes since V01.62.00
New switches / features
– -kdsrootkeys — query KDS root keys
– -csvbreakcount — break CSV output at a row count
– -onlygroup — new filter switch
– -whoami — promoted from -sc whoami to a first-class switch
– -decattid — ATTID decoding (decode attribute IDs)
– -enccurrentutcgt, -encutcgt — current-time UTC generalized-time encode options
– -outputcurrentint8 / -outputcurrentgt — output current time as Int8 / generalized time
– -jwdsinit, -jwdsstd, -jwdsstdro — DirSync convenience modes, with aliases dirsync_init, dirsync_std, dirsyncro_std
– parentrdn and objrdn — new computed attributes
– Raw hex SID accepted as DN input; file input support for -dechextosid; hex GUID input added to -encguidtoiid
– Comment capability added for the env file
Decode additions / updates
– K25 RootDSE decodes; began adding 2025 "vNext" / Server 2025 decodes
– msDS-ObjectModifyMetaData decode (also binary encoded ObjectModifyMetaData), use -alldc
– msDS-SupportedEncryptionTypes decodes updated
– dsHeuristics decodes updated, including adminSD output tweaks
– TLS 1.3 key-exchange decode fixed
– ldapping / netlogon decodes updated
Bug fixes
– Fixed case-sensitivity issue with -e
– Fixed -incldn + regex interaction
– Fixed -cva bug
– Fixed -sslinfo with a specific attribute; blocked -csv from -sslinfo
– Fixed -gcb + -gco combination; fixed -gui
– Fixed -dirsyncro to include objectGUID
– Fixed metafilterval link= bug
– Fixed SID/GUID DN input bug
– Fixed getsidtype output for unresolved SIDs
– Fixed AJ GUID handling
– Fixed time-encode option error handling
– Fixed -csvbreakcount follow-up issues
– rootdseanon could not detect Server 2022 — fixed
– cmdline.h argument lowercase handling fixed
– Misc usage-text fixes (-tdcsfmt, DirSync, -nirs)
Maintenance / build
– Ported to VS2026
– Updated -po switch
AdMod V01.29.00 — What’s New
This release rolls up a batch of new functionality and bug fixes that have landed since AdMod V01.28.00.
New Features
Hex SID and hex GUID now accepted as a target DN
AdMod has long let you pipe or pass a SID (S-1-5-…) or a braces-style GUID ({FBB09094-…}) in place of a
distinguished name, and it would automatically rewrite it to the <SID=…> or <GUID=…> form the directory
understands.
That recognition is now smarter. AdMod will also detect:
– Raw hex-encoded SIDs (the 0101…, 0102…, 0104…, 0105… binary SID forms), and
– 32-character hex GUIDs (e.g. 9490b0fb52e0374680b841c6c025950a)
…and convert them to the proper <SID=…> / <GUID=…> DN format on the fly. This makes it much easier to feed AdMod
the output of other tools that emit SIDs and GUIDs in their binary/hex representations without having to reformat them
first.
Clone-on-create: rename a new object via name attribute expansion
When creating objects from CSV input, you can now expand the name attribute and have AdMod reflect that change into
the RDN of the object it creates. This is a nice building block for cloning workflows.
Example — given a source DN of cn=joe,ou=testusers,dc=test,dc=loc with name present in the CSV, an expansion of:
name::{{.}}test
…results in a new object cn=joetest,ou=testusers,dc=test,dc=loc being created. Just remember to also pass and update
sAMAccountName and userPrincipalName so the clone is internally consistent.
Comments in -ef environment/parameter files
Environment files (-ef) now support comments. Any line that starts with # or // is ignored, so you can document and
annotate your parameter files inline instead of keeping notes elsewhere. Properties can still be split across multiple
lines as before.
Guardrail: -b combined with special bases now errors cleanly
Using -b together with a special base switch (-default, -schema, -config, -rootdse, etc.) doesn’t make sense, and
AdMod used to let the combination through. It now detects the conflict and exits with a clear error instead of doing
something unexpected. (This also fixed an underlying bitwise-vs-logical OR bug in the special-base detection.)
Bug Fixes
– -treenuke — Fixed a bug in the recursive tree-delete path involving error-code handling during the nuke operation.
– -e — Fixed search-string suffix handling so the trailing-character logic behaves correctly.
– DNS records + updatenchead — Fixed a bug (reported by Nara) where objects under CN=MicrosoftDNS were incorrectly
caught by the NC-head modify safety check, blocking legitimate DNS record updates.
– -sc adac — Corrected the usage text and fixed a bug in the password-set behavior for the adac shortcut, including
the unicodePwd quoting on object creates.
– Usage / help text — Various corrections, including the <SERVICES> expansion description and create/rename wording.
Sorry for that folks. One of the security plugins decided the most secure blog was one that did not function at all a few days ago.
I know it has been broken for a few days but I just finally had time this morning to spend looking at it. But hey, absence makes the heart grow fonder right?? How bad do you want to see the Blog now??? Probably so much more than when it was immediately available at the tip of your fingers. I mean, yes, there are things you can never get enough of, I know that, but I don’t expect this blog is one of them for anyone.
And when I looked into the problem, my first thought was well fuck… I had zero useful logs from the hosting company for any kind of troubleshooting and no CLI access to the OS to get better info, etc.
So I thought, hey, you are playing with AI a lot now, let’s see if Claude (with Sonnet 5) can make heads or tails of what is going on? Use it in true anger because I was hot that the blog wasn’t working.
I uploaded what I had and described what was going on and Claude was basically like… Yeah, you are fucked, we don’t have what we need to troubleshoot. So I asked it, could you write a PHP script that I could upload and run as a web page that could sort out what is going on? And it said great idea, let me create diag.php and boom suddenly I had a script to upload and run and start on the path to troubleshooting. And at one point it started to give up and my gut said we should look at the plugins and prompted Claude as such and it said oh yeah, we should check that first and sure enough, after some digging on plugins, the issue was the WordFence plugin.
Claude made some silly mistakes along the way but overall, HELLA useful and resulted in the blog working again without me trying to walk the hosting company support people what they should look at. This aligns with what I keep saying that AI is good for senior techies who already know what they are doing to assist/accelerate them, much less useful for junior techies who don’t really know what they are doing. Had I not had the background that I had, I would NOT have found the answer with AI today. Plain and simple, and maybe this hurts your feelings if you are a junior techie, but too bad, AI doesn’t make you a senior techie no matter how much you use it. Go learn your trade.
I then upped the model into Fable MAX and told it to review everything discussed to see if it can find anything else that should be checked out and any other recommendations. It was able to find a few other tweaks to hopefully make things run better and more secure. It also cleaned up some 400k apparent spam IDs, so if you had an ID and never commented, your ID is likely irrevocably gone now so you will need to recreate it if you need it. To avoid that again, comment at least once I also asked it to produce one single diag script that can gather all of the information necessary for it to find any similar issue immediately upon looking at the results. It should check all core components and output enough information to more quickly sort out the issue.
joe
I have had my DB util from the blog get me locked out of my mysql servers several times now and it is due to some kind of scanners doing stupid shit. i went through the logs for the last 24 hours and have blocked roughly 2.5 million IP addresses from being able to see things. I will continue to look at logs to see if I see other stupid shit and will block them too.
I looked for the patterns, dug out IPs, looked them up on ICANN and did blocks of the entire space owned by that company.
If you get caught up in this and can no longer see the blog, I am sorry, blame your provider for allowing bullshit in their IP space.
joe
EDIT: Over 21 million IPs blocked now.
EDIT: Over 25 million IPs blocked now.
As I mentioned, i was close to releasing new (to you) versions of AdFind and AdMod a while back and then was told about some new functionality in Windows Server 2025+ v.Next that I have been asking for for over two decades and I wanted to get it all wrapped in a pretty bow including decoding AttIDs on the fly and now it is all “in there’. So I am polishing things, making sure I have the new stuff properly in the usage screens and testing against the latest Windows Server Preview (Windows Server 2025+ (v.Next) (10.0.29595.1000)) meaning I built three new Domain Controllers and six new LDS Instances this morning before breakfast.
As an aside, i wish I had kept count of how many Domain Controllers and LDS instances I have built over the years. It is many thousands for both, probably tens of thousands of LDS instances.I just deleted around 480 or so virtual Domain Controllers from my hypervisor servers cleaning up a month ago. All of that excludes what I have done for work; just testing in my own home on my own machines over the last 26 years, looking closely at the processes for documenting them, breaking in ways I think of and then sorting out the fix path, setting up broken scenarios found on the internet in news groups and web forums to sort out how someone got themselves there and how to get back out, and of course test beds for my tools.
When I say New (to you all) I specifically mean that none of this new to me, obviously. I live and breath dog fooding my latest versions of my tools all of the time. If someone is going to run into an issue, I want it to be me. That being said, I do allow a tiny number of special people to run the beta versions with me. So anything any normal people can get their hands on will have been used many thousands of times in my daily use and testing. Could their still be bugs, absolutely, but they should be minimal.
And once again, there is NOTHING inherently dangerous about AdFind. Anyone saying AdFind is dangerous is a shit quality security person who doesn’t understand the tool or what Security is about and you should buy them a t-shirt that says “I love and rely on security by obscurity.” and on the back it should say “!Security”. Proper Security people do not secure environments by turning the lights off. Be sure to tell them I said that.
joe
So it begins… And anyone who wants to be mad about yet another delay on the latest AdFind release, blame Narayanan Subramanian. He showed me some new functionality in Windows Server 2025 v.Next that I want to get into the tool so I have to sort it out first, and then get it added. It is cool enough stuff to get in there.
Is joe dead?
Is he still working on these apps?
Will we ever see new versions of AdFind and AdMod?
The answers are NO (Well, mostly NO), YES, and YES.
I am testing a release candidate for both tools now, if they clear that testing, I will perform the final compile and release to production. I hope to do that by end of March (if not sooner), assuming no issues.
I am so swamped during the week with work I don’t much like working on computers after hours, so my burn rate has gone down significantly for putting out tool updates, plus realistically, MSFT hasn’t really done much with Active Directory since 2016 (other than me bitching at them to update TLS in Windows Server 2022 to allow for TLS 1.3 for LDAPS connections) so now that they finally have some real updates with Windows Server 2025, it is time for some updates to get out there.
I don’t push after every single update I put in but the number of updates doesn’t much exceed what is in this image for the last year. I did quite a bit last August as I was thinking about releasing a version with a lot of Windows Server 2025 updates but then I got really busy for my day job again. While I do get the occasional donations here, it is not anywhere near being able to allow me to have this be my day job. And no, this image isn’t from my public Github account, that is a self-hosted local virtual gitea server that isn’t available outside of my home network, so don’t think holy moly, the AdFind/AdMod source code is available out there somewhere, I am going to out on my h@<k3r hat and go to town!!! Sorry, not sorry, it is not.
joe
So the same PHP upgrade that messed with downloads on the main site seems to be doing some fun on the blog as well. If you see something off, please feel free to drop me a line at joe@joeware.net
[joeware – never stop exploring… :) is proudly powered by WordPress.]