
छिपे हुए संचार प्रणालियों के लिए औपचारिक मॉडलिंग और विश्लेषण ढाँचा, जो गुप्त चैनलों, विरोधी मॉडलों की विशिष्टता और अज्ञेयता-प्रदर्शन व्यापार-बंद के सांख्यिकीय मॉडल जाँच को सक्षम बनाता है।
Maude-HCS वास्तविक दुनिया के पैमानों पर छिपे संचार प्रणालियों (HCS) को औपचारिक रूप से निर्दिष्ट करने और उनके बारे में तर्क करने के लिए पहली सामान्यीकृत और मॉड्यूलर टूलचेन में से एक है। यह नेटवर्क डिजाइनरों को वैकल्पिक HCS डिजाइनों का शीघ्र और प्रभावी ढंग से पता लगाने में सक्षम बनाता है और डिजाइन पर भरोसा करने के लिए आवश्यक औपचारिक गोपनीयता-प्रदर्शन गारंटी प्रदान करता है।
छिपे संचार प्रणालियाँ (HCS) संचार की उपस्थिति को छिपाने के लिए सामान्य नेटवर्क गतिविधि के भीतर गुप्त संदेशों को एम्बेड करती हैं। व्यवहार में, HCS की अज्ञेयता का मूल्यांकन आमतौर पर तदर्थ यातायात आँकड़ों या विशिष्ट डिटेक्टरों का उपयोग करके किया जाता है, जिससे सुरक्षा दावे प्रयोगात्मक सेटअपों और निहित प्रतिकूल धारणाओं से कसकर जुड़ जाते हैं।
Maude-HCS एक निष्पादन योग्य मॉडलिंग और विश्लेषण ढांचा है जो जटिल HCS डिजाइनों में अज्ञेयता-प्रदर्शन व्यापार-बंदों के बारे में तर्क करने के लिए एक सैद्धांतिक और निष्पादन योग्य आधार प्रदान करता है। डिजाइनर औपचारिक रूप से प्रोटोकॉल व्यवहार, प्रतिकूल अवलोकन योग्यताएं और पर्यावरणीय धारणाएँ निर्दिष्ट करते हैं, और प्रेरित ट्रेस वितरणों से मोंटे कार्लो नमूने उत्पन्न करते हैं। इनका उपयोग एक सांख्यिकीय परीक्षण की सही और गलत सकारात्मक दरों का अनुमान लगाकर और इन अनुमानों को अज्ञेयता मापों पर निचली सीमाओं में परिवर्तित करके अज्ञेयता के दावों का ऑडिट करने के लिए किया जा सकता है। यह स्पष्ट रूप से बताई गई मॉडलिंग धारणाओं के तहत पता लगाने की क्षमता और प्रदर्शन के साथ इसके व्यापार-बंदों का व्यवस्थित मूल्यांकन सक्षम बनाता है।
कृपया यदि आपको अपने HCS के मॉडलिंग और तर्क में सहायता की आवश्यकता हो तो हमसे संपर्क करें। और कृपया यदि आप इसे अपने शोध के भाग के रूप में उपयोग करते हैं तो हमारे कार्य का उल्लेख करने पर विचार करें।```bibtex @article{khoury2026maude, title={Maude-HCS: Model Checking the Undetectability-Performance Tradeoffs of Hidden Communication Systems}, author={Khoury, Joud and Kim, Minyoung and Merlin, Christophe and Meseguer, Jos{'e} and Ratliff, Zachary and Talcott, Carolyn}, journal={arXiv preprint arXiv:2603.03369}, year={2026} }
## आवश्यकताएँ
python संस्करण `3.12.4` आवश्यक है
अपना पसंदीदा वातावरण बनाएँ और इसे सक्रिय करें, उदाहरण के लिए
pyenv के लिए```bash
pyenv install 3.12.4
pyenv local 3.12.4
conda के लिए```bash conda create --name pwnd2 python=3.12.4 conda activate pwnd2
virtual env के लिए```bash
python -m venv venv
source venv/bin/activate
We structured the repo source code so that we import dns-formalization-maude as a dependency (a submodule). We created a fork of this dependency so that we can track our changes to it. We use sparse-checkout to avoid needing to checkout all the source of the dependency which includes many irrelevant files (such as Testbed).
To clone the main repo```shell git clone [email protected]:raytheonbbn/maude-hcs.git
मुख्य शाखा में नवीनतम (संभवतः अस्थिर) स्रोत है।
`pwnd.cp1` जैसी पुरानी शाखाएँ/टैग स्थिर स्नैपशॉट को संदर्भित करते हैं जिनका उपयोग मूल्यांकन के दौरान परिणाम उत्पन्न करने के लिए किया गया था
(उदा., `pwnd.cp1` चैलेंज प्रॉब्लम 1 के लिए उपयोग किया गया, और इसी प्रकार `pwnd.cp2`)।
किसी पुराने स्नैपशॉट का उपयोग करने के लिए, विशिष्ट शाखा को चेकआउट करें (जैसे `pwnd.cp1`)।
हमारे कोड के क्लोन का उपयोग करके dns सबमॉड्यूल सेटअप करें ताकि हम मूल स्रोत में किए गए परिवर्तनों को ट्रैक कर सकें,
केवल प्रासंगिक स्रोत रखने के लिए स्पार्स-चेकआउट का उपयोग करें।```shell
cd maude-hcs
mkdir -p maude_hcs/deps
git submodule add -b <branch> -f [email protected]:raytheonbbn/dns-formalization-maude.git \
maude_hcs/deps/dns_formalization
cd maude_hcs/deps/dns_formalization
git sparse-checkout init --cone
git sparse-checkout set "Maude/dns" "Maude/common" "Maude/test" "Maude/attack_exploration"
cd ../../../
git reset .gitmodules
git reset maude_hcs/deps/dns_formalization
उपरोक्त कमांड में <branch> को या तो pwnd.43.rb1 पर सेट करें ताकि चैलेंज प्रॉब्लम 1 के परिणामों को पुनः प्रस्तुत किया जा सके,
या नवीनतम संस्करण के लिए pwnd पर सेट करें।
उपरोक्त को .git/modules/maude_hcs/deps/dns_formalization/info/ के अंतर्गत sparse-checkout नामक एक नई फ़ाइल बनानी चाहिए
और इसे केवल Maude/src जैसी कुछ निर्देशिकाओं को शामिल करने का निर्देश देना चाहिए।
इस बिंदु पर git status एक साफ़ स्टार्ट दिखाना चाहिए।
इंस्टॉल करने के लिए, पहले dns नामक पैकेज के रूप में निर्भरता इंस्टॉल करें, हम इसे Maude.* के रूप में आयात करते हैं,
फिर maude_hcs को एक पैकेज के रूप में इंस्टॉल करें (dns पर निर्भरता के साथ)।```shell
cd maude_hcs/deps/dns_formalization
pip install -e .
cd ../../../
pip install -e .
## स्वचालित रूप से उपयोगकर्ता मॉडल उत्पन्न करें
उपयोगकर्ता मॉडल मार्कोव मॉडल होते हैं जिनका उद्देश्य यह दर्शाना है कि उपयोगकर्ता कैसे व्यवहार करते हैं।
ये json प्रारूप में दिए गए हैं।
पहला कदम इन्हें औपचारिक maude प्रस्तुतियों में परिवर्तित करना है।
ऐसा करने के लिए, निम्नलिखित निर्दिष्ट करें
- protocol: dns या mastodon
- input directory जिसमें वे सभी json मॉडल हैं जिन्हें आप कनवर्ट करना चाहते हैं
- output directory जिसमें json मॉडलों के सभी maude संस्करण होंगे
उदाहरण के लिए,```shell
# convert dns tgen user models
maude-hcs --verbose \
--protocol=dns markov \
--json-dir=../pwnd-cp2/src/static/tgen_models/dns/ \
--maude-dir=./maude_hcs/lib/tgen/maude/dnsprofiles/markov/
# convert mastodon tgen models
maude-hcs --verbose \
--protocol=mastodon markov \
--json-dir=../pwnd-cp2/src/static/tgen_models/mastodon \
--maude-dir="./maude_hcs/lib/raceboat/maude/mastodonprofiles/"
मार्कोव जेसन विनिर्देशों के उदाहरण ./maude_hcs/lib/tgen/maude/dnsprofiles/markov/ के अंतर्गत देखें
(और इसी प्रकार मास्टोडॉन के लिए), साथ ही उनके रूपांतरित मौड विनिर्देशों के साथ।
हम generate कमांड का उपयोग करके प्रारंभिक कॉन्फ़िगरेशन उत्पन्न करते हैं।
HCS कॉन्फ़िगरेशन को सीधे HCS कॉन्फ़िगरेशन पैरामीटर का उपयोग करके जेसन में पास किया जा सकता है,
या Shadow प्रयोग कॉन्फ़िगरेशन फ़ाइल का उपयोग करके, या YML कॉन्फ़िगरेशन फ़ाइल का उपयोग करके।
इनमें से प्रत्येक का वर्णन आगे किया गया है।
maude-hcs json कॉन्फ़िगरेशन फ़ाइल को इस प्रकार पास करें,
आयोडीन के साथ एक प्रोबेबिलिस्टिक DNS मॉडल कॉन्फ़िगरेशन उत्पन्न करने और आउटपुट फ़ाइल नाम निर्दिष्ट करने के लिए,```shell
maude-hcs --verbose generate
--run-args="./use-cases/challenge-problem-2/cp2_scenarios/cp2_scenario_1-hcsconfig.json"
--model=prob
--filename="cp2_scenario_1"
--output-dir="./use-cases/challenge-problem-2/cp2_scenarios/"
`--model=nondet` सेट करें ताकि एक गैर-निश्चयात्मक संस्करण उत्पन्न हो।
यह आउटपुट निर्देशिका में निष्पादन योग्य maude फ़ाइल (और संबंधित HCS config json) उत्पन्न करता है।
इनपुट json कॉन्फ़िगरेशन फ़ाइल को समझना सीधा होना चाहिए। इसमें निम्नलिखित का विनिर्देश शामिल है:
* नेटवर्क टोपोलॉजी (लिंक और उनकी विशेषताएँ)
* प्रतिद्वंद्वी (इस मामले में zeek डिटेक्टर प्रोफ़ाइल, मूविंग एवरेज डिटेक्टरों के लिए बेसलाइन डेटा, और उनके कॉन्फ़िगरेशन)
* चैनल/प्रोटोकॉल: प्रत्येक प्रोटोकॉल में एक weird नेटवर्क और एक अंतर्निहित नेटवर्क प्रोटोकॉल शामिल होता है। पहला दूसरे में डेटा छिपाता/एम्बेड करता है। उदाहरण के लिए, Iodine DNS में एम्बेड होता है (इसलिए चैनल को iodine-dns कहा जाता है) और Destini Mastodon में एम्बेड होता है
कुछ पैरामीटरों के विवरण के लिए [HCSParamsGuide](https://github.com/raytheonbbn/maude-hcs/blob/HEAD/HCSParamsGuide.md) देखें।
ध्यान दें कि संभाव्य मॉडल गैर-निश्चयात्मक पैरामीटरों के साथ-साथ संभाव्य पैरामीटरों (जो गैर-निश्चयात्मक पैरामीटरों को ओवरराइड करते हैं) को भी जोड़ देगा।
### YML कॉन्फ़िगरेशन का उपयोग करना
#### एकल कॉन्फ़िगरेशन
एक YML कॉन्फ़िगरेशन में टनलों और अंतर्निहित नेटवर्कों का पूर्ण कॉन्फ़िगरेशन होता है।
हम इससे सीधे HCS config उत्पन्न कर सकते हैं।```shell
maude-hcs --verbose generate --yml-filename=./use-cases/challenge-problem-2/cp2_setup_example.yml --model=prob --filename=generated_test_yml
बैच्ड कॉन्फ़िगरेशन के लिए, जैसे कि CP2 में, एकाधिक YML फ़ाइलों को Maude परिदृश्य फ़ाइलों में रूपांतरित करें:```shell ./scripts/generate_cp2_maude.sh [scenario_dir]
जहाँ `scenario_dir` वैकल्पिक है (डिफ़ॉल्ट `../pwnd_cp2`)
### Shadow yaml विन्यास का उपयोग करना
नेटवर्क विन्यास हमारे HCS कॉन्फ़िग json के बजाय एक shadow फ़ाइल का उपयोग करके निर्दिष्ट किया जा सकता है
(Shadow विनिर्देशों के बारे में अधिक जानकारी के लिए [Shadow](https://github.com/shadow/shadow) सिम्युलेटर देखें)।
एक मॉडल उत्पन्न करने के लिए जो shadow फ़ाइल में परिभाषित विशेषताओं का उपयोग करता है, निर्दिष्ट करें:```shell
--shadow-filename <path_to_shadow_file.yaml>
shadow yaml फ़ाइल नेटवर्क, होस्ट और प्रक्रिया कॉन्फ़िगरेशन निर्दिष्ट करती है।
मान लें कि shadow नेटवर्क कॉन्फ़िगरेशन निर्देशिका ../pwnd-cp1 में स्थित है, तो चलाएँ```shell
maude-hcs --verbose --protocol=dns generate --shadow-filename=../pwnd-cp1/shadow_files/examples/cp1_sim_config.yaml --model=prob --filename=generated_test_shadow
## HCS कॉन्फ़िगरेशन चलाएँ
### Maude के साथ स्वतंत्र रूप से चलाएँ
एक कॉन्फ़िगरेशन को स्वतंत्र मॉड में चलाने के लिए, पहले अपने सिस्टम के लिए [स्वतंत्र मॉड](https://github.com/maude-lang/Maude) स्थापित करें (हम संस्करण 3.5.0 या उससे नीचे की सलाह देते हैं)
एक एकल कॉन्फ़िगरेशन चलाने के लिए, मॉड को फ़ाइल नाम के साथ आमंत्रित करें, उदाहरण के लिए, `results` में,```shell
maude ./use-cases/challenge-problem-2/cp2_scenarios/cp2_scenario_1.maude
Maude प्रॉम्प्ट के अंदर, टाइप करें```shell rew initConfig .
यह सभी पुनर्लेखनों को तब तक निष्पादित करेगा जब तक कोई और नियम नहीं मिलते और कोई प्रगति नहीं हो सकती। लॉगिंग जोड़ने से निष्पादन की वाचालता बढ़ जाएगी,```shell
set print attribute on .
निष्पादन को निम्नलिखित कमांड के साथ भी चरणबद्ध किया जा सकता है (maude मैनुअल देखें)```shell rew[1] initConfig . cont 1 .
### सांख्यिकीय मॉडल जाँच
सांख्यिकीय मॉडल जाँच [QMaude](https://github.com/fadoss/umaudemc) में scheck उपकमांड के माध्यम से उपलब्ध है:```shell
maude-hcs scheck [-h] [--advise]
[--protocol {dns}] [--file FILE] [--test TEST] [--initial INITIAL] [--query QUERY]
[--assign METHOD] [--alpha ALPHA] [--delta DELTA]
[--seed SEED] [--jobs JOBS] [--format {text,json}]
options:
--help, -h Show help message and exit
--advise Do not suppress debug messages from Maude
--protocol PR The protocol module being analyzed e.g., dns, which points to an smc file specific to that protocol.
--file FILE Maude source file specifying the model-checking problem. If --protocol is specified, this parameter becomes optional, and if specified overrides the protocol smc file.
--test TEST Test generated from maude-hcs, default=results/generated_test.maude
--initial INITIAL Initial term, default=initConfig
--query QUERY QuaTEx query, default=smc/query.quatex
--assign METHOD Assign probabilities to the successors according to the given method, default=pmaude
--alpha ALPHA, -a ALPHA Required significance level for the confidence interval, default=0.05
--delta DELTA, -d DELTA Maximum admissible radius for the confidence interval around the mean, default=0.5
--seed SEED, -s SEED Random seed
--jobs JOBS, -j JOBS Number of parallel simulation threads, default=1, -j 0 will start as many jobs as CPU units
--format {text,json} Output format for the simulation results, default=text
--distribute WORKERS Distribute the computation across multiple machines, specified as a list of workers for the simulation.
--dump OUTPUTFILE Dump query evaluations into the given file. Currently, it only works with the sequential version (-j 1).
For each simulation, a line is written with the result of all queries separated by space.
-D D Define a constant to be used in QuaTEx expressions.
उपरोक्त कमांड द्वारा उत्पन्न फ़ाइल के लिए एक नमूना SMC रन है:```shell maude-hcs scheck --test ./use-cases/challenge-problem-2/cp2_scenarios/cp2_scenario_1.maude --query ./smc/cp2_eval_cp2_scenario_1.quatex -j 0 -n 30-120
प्रायिकता मॉडल और इसकी प्रारंभिक कॉन्फ़िगरेशन Maude में निर्दिष्ट की जानी चाहिए और इसे ``--test TEST`` विकल्प (डिफ़ॉल्ट: ``results/generated_test.maude``) के माध्यम से प्रदान किया जाना चाहिए।
Maude निष्पादन ``--initail INITIAL`` विकल्प (डिफ़ॉल्ट: ``TEST`` में निर्दिष्ट ``initConfig``) के माध्यम से प्रदान किए गए प्रारंभिक टर्म से शुरू होता है और अंतिम कॉन्फ़िगरेशन तक पुनर्लेखन करता है।
अंतिम कॉन्फ़िगरेशन से, मॉडल जाँच समस्या के लिए Maude स्रोत फ़ाइल में निर्दिष्ट मॉनिटर और प्रतिद्वंद्वी अभिनेताओं का उपयोग करके प्रेक्षणीयों को निकाला जाता है, जो ``--file FILE`` विकल्प या ``--protocol PR`` विकल्प के माध्यम से प्रदान किया जाता है।
उदाहरण के लिए ``--protocol dns`` एक मॉडल जाँच फ़ाइल को संदर्भित करता है जो विशेष रूप से dns प्रोटोकॉल के लिए `lib/` के अंतर्गत बनाई गई है।
मात्रात्मक गुण, जैसे औसत विलंबता का अपेक्षित मान, QuaTEx सूत्र का उपयोग करके निर्दिष्ट किया जा सकता है और ``--query QUERY`` विकल्प (डिफ़ॉल्ट: ``smc/query.quatex``) के माध्यम से प्रदान किया जा सकता है।
हमारे उदाहरण विलंबता और स्केलेबिलिटी मीट्रिक्स, जो बाहर निकाली गई फ़ाइलों के संदर्भ में हैं, ``smc/latency.quatex`` और ``smc/scalability_cp2_scenario_1.quatex`` में परिभाषित हैं, और ``smc/cp2_eval_cp2_scenario_1.quatex`` में आयातित हैं, और निम्नलिखित रूप के QuaTEx सूत्र के साथ व्यक्त किए जा सकते हैं:```shell
Latency() = s.rval("getLatency(getMonitor(C))");
eval E[Latency()] with delta = 2;
ExfilFilesC2() =
if (s.rval("getToDCumulativeNQueryPostNAT(C,416)") == 0.0) then
discard
else
s.rval("getExfilFiles(getMonitor(C), getToDCumulativeNQueryPostNAT(C,416))")
fi;
eval E[ExfilFilesC2()];
जहां अभिव्यक्ति Latency() मॉनिटर से विलंबता मान निकालता है और delta = 2 के साथ इसकी अपेक्षा का मूल्यांकन करता है।
अभिव्यक्ति ExfilFilesC2() सशर्त रूप से निकाले गए फ़ाइलों की संख्या का मूल्यांकन करता है:
यदि पोस्ट-नेट DNS प्रश्नों की संचयी संख्या के आधार पर पता लगाने का समय शून्य है - जिसका अर्थ है कि कोई पता लगाना नहीं होता है क्योंकि संचयी प्रश्न गणना कभी भी अपनी सीमा (जैसे, उपरोक्त उदाहरण में 416) से अधिक नहीं होती है - तो नमूना अस्वीकार कर दिया जाता है; अन्यथा, पता लगाने के समय तक निकाले गए फ़ाइलों की संख्या का मूल्यांकन किया जाता है।
नमूनाकरण तब तक जारी रहता है जब तक या तो निर्दिष्ट नमूनों की संख्या पूरी नहीं हो जाती (अर्थात -n min-max विकल्प, जैसे -n 30-300) या सभी प्रश्नों का वांछित सांख्यिकीय महत्व के साथ उत्तर नहीं दिया जाता है।
नीचे दिए गए उदाहरण में, दूसरे प्रश्न का उत्तर डिफ़ॉल्ट मानों alpha=0.05 और delta=0.5 का उपयोग करके 30 नमूनों के बाद दिया जाता है, जबकि पहले प्रश्न का उत्तर 270 नमूनों के बाद with delta = 2 का उपयोग करके दिया जाता है, जैसा कि ऊपर निर्दिष्ट किया गया है।
आउटपुट में शामिल हैं:
यदि हम उपरोक्त QuaTEx सूत्र में थ्रेसहोल्ड मान को 500 में संशोधित करते हैं, तो कुछ नमूने त्याग दिए जाते हैं।
फिर परिणाम त्याग किए गए नमूनों की संख्या के साथ रिपोर्ट किए जाते हैं, और शेष नमूनों का उपयोग करके सांख्यिकीय गारंटी की गणना नीचे दिखाए अनुसार की जाती है।```shell
Number of simulations = 270
Query 1 (./smc/readme.quatex:7:1)
μ = 191.80187664851906 σ = 16.429217228790975 r = 1.9685272804723886
Query 2 (./smc/readme.quatex:8:1) (39 simulations)
μ = 9.76923076923077 σ = 0.48458003855418535 r = 0.1570826767676969
where 21 executions out of 60 (35.0%) have been discarded
एक ही समानांतर सेटिंग (अर्थात -j का समान मान) में समान प्रयोगों को पुन: उत्पन्न करने के लिए, एक ही यादृच्छिक बीज के साथ --seed विकल्प का उपयोग करें।
डिफ़ॉल्ट रूप से या ‑1 पास करने पर, वर्तमान समय का उपयोग बीज के रूप में किया जाता है।```shell
Number of simulations = 30 μ = 1.5301530777180123 σ = 3.9683630959745835e-05 r = 1.481811132921282e-05
Number of simulations = 30 μ = 1.5301530777180123 σ = 3.9683630959745835e-05 r = 1.481811132921282e-05
Number of simulations = 30 μ = 1.5301436629475402 σ = 5.0836982397393854e-05 r = 1.8982841201450367e-05
Number of simulations = 30 μ = 1.5301436629475402 σ = 5.0836982397393854e-05 r = 1.8982841201450367e-05
### परीक्षण स्वचालन
runexp.sh एक स्वचालन स्क्रिप्ट है जो जनरेशन और SMC विश्लेषण को जोड़ती है। इसमें दो आवश्यक तर्क होते हैं:```shell
runexp.sh CONFIG_FILENAME METRIC
where
CONFIG_FILENAME is the name of the .yaml shadow file defining the experiment
METRIC is the quatex property and can be latency, throughput, goodput, or all
SMC मशीन के सभी कोर का उपयोग करके अत्यधिक समानांतर किया जा सकता है, जिससे मोंटे कार्लो नमूनाकरण में लगभग रैखिक गति प्राप्त होती है, जैसा कि ऊपर -j 0 विकल्प का उपयोग करके बताया गया है।
QMaude वितरित SMC (सुविधा अभी सक्रिय परीक्षण के अंतर्गत) का उपयोग करके मशीनों के बीच और भी अधिक समानांतरता की अनुमति देता है।
वितरित SMC चलाने के लिए, एक या अधिक कार्यकर्ता (workers) होने चाहिए जिन्हें निम्नलिखित के साथ प्रारंभ किया जाता है:
$ umaudemc sworker -a 127.0.0.1 -p 1234
👂 Listening on 127.0.0.1:1234...
नए sworker कमांड के लिए केवल विकल्प एड्रेस (-a) और पोर्ट (-p) हैं। यह नियंत्रक से कनेक्शन की प्रतीक्षा करता रहता है।
नियंत्रक पक्ष पर, एक सामान्य scheck कमांड को अतिरिक्त विकल्प --distribute <फ़ाइल> के साथ निष्पादित किया जा सकता है। उदाहरण के लिए,
$ maude-hcs scheck --distribute workers.json
फ़ाइल workers.json (यह TOML या YAML भी हो सकती है) सिमुलेशन के लिए कार्यकर्ताओं की सूची निर्दिष्ट करती है। यह फ़ाइल एक शब्दकोश (dictionary) होनी चाहिए जिसमें workers कुंजी हो जिसमें { "workers": [ {"address": "127.0.0.1", "port": 1234} ] } या बस { "workers": [ "127.0.0.1:1234" ] } प्रारूप के मानों की सूची हो। इसके अलावा, विकल्प और आउटपुट सामान्य scheck कमांड के समान होने चाहिए।
scheck कमांड दूरस्थ कार्यकर्ताओं से जुड़ेगा, उन्हें सभी आवश्यक जानकारी प्रेषित करेगा, उन्हें सक्रिय करेगा, और निर्धारित आत्मविश्वास स्तर तक पहुंचने तक उनके परिणामों को संसाधित करेगा। फ़ाइलों को मैन्युअल रूप से प्रत्येक मशीन पर कॉपी करने के बजाय जो कार्यकर्ता चलाती है, फ़ाइलें कनेक्शन के माध्यम से भेजी जाती हैं। Maude समावेशन हल हो जाते हैं और Maude स्रोतों का एक सपाट संस्करण भेजा जाता है।
QMaude उसी औपचारिकता में मॉडल का सांख्यिकीय मॉडल जाँच (SMC) प्रदान करता है।
latency.quatex और smc.maude को अपने प्रयोग की निर्देशिका में कॉपी करें (या इसे results में रखें)।
पूर्व (former) को संशोधित करके लक्ष्य (संभाव्य) प्रयोग लोड करें।
चलाएँ```shell
umaudemc --no-advise scheck smc initConfig latency.quatex -a 0.05 --assign pmaude -j 50
QMaude, quatex क्वेरी (μ) के लिए अपेक्षित मान और उस मान तक पहुंचने में लगने वाले मोंटे कार्लो सिमुलेशन की संख्या लौटाता है।
## Tests
परीक्षण चलाने के लिए, पहले अपने वातावरण में pytest इंस्टॉल करें।```
pip install -e .[test]
फिर यूनिट परीक्षण चलाएँ``` python -m pytest
## अन्य उपयोगिताएँ
प्रयोग में उपयोग किए जाने वाले json मेटाडेटा फ़ाइल में छवियों की निर्देशिका को परिवर्तित करने के लिए,
उदाहरण के लिए mastodon tgen क्लाइंट द्वारा उपयोग की जाने वाली छवियाँ उत्पन्न करने के लिए (इसी प्रकार destini के लिए कवर छवियाँ)```shell
maude-hcs --verbose --protocol dnsmastodon images --image-dir ../pwnd-cp2/src/static/images/ --image-out-dir results/
plotfinal.py का उपयोग करें तर्कों के साथ smc_directory, tne_directory, quatex_directory```shell
python scripts/plotfinal.py use-cases/challenge-problem-2/results-aligned/ use-cases/challenge-problem-2/cp2_scenarios_tne/cp2_te_results/ smc/
वही स्क्रिप्ट CDF प्लॉट उत्पन्न करेगी।```shell
python scripts/gather\_samples.py use-cases/challenge-problem-2/results-aligned/samples/ use-cases/challenge-problem-2/results-aligned/cdfs use-cases/challenge-problem-2/cp2_scenarios_tne/cp2_te_results/
निम्नलिखित परियोजनाओं का सीधे उपयोग Maude-HCS द्वारा किया जाता है