
संरचित डेटा (JSON, XML, X.509) को म्यूटेट करने के लिए लाइब्रेरी और CLI, जो ग्रामर-आधारित फ़ज़िंग का समर्थन करती है, जिसमें कई म्यूटेशन रणनीतियाँ और Radamsa के साथ एकीकरण शामिल है।
Umberto एक लाइब्रेरी है जिसे सामान्य संरचित डेटा (जैसे JSON, XML, X.509) को म्यूटेट करने के लिए डिज़ाइन किया गया है, और एक कमांड लाइन एप्लिकेशन है जो इस कार्यक्षमता को लपेटता है। यह विभिन्न प्रकार के म्यूटेशन लागू कर सकता है, पूरी तरह से नए मानों का संश्लेषण कर सकता है, और संरचना घटकों पर मौजूदा म्यूटेटर (जैसे Radamsa) लागू कर सकता है। यदि आप ग्रामर-आधारित फज़िंग करने की कोशिश कर रहे हैं, तो आपको यह बहुत उपयोगी लग सकता है। इसे उदाहरण द्वारा समझना शायद सबसे आसान है:
echo -n "{\"a\": 1, \"b\": 2, \"c\": \"test\"}" | umberto-mutate json knuth all
{"a":2,"c":"tesb","t":1}
echo -n "{\"a\": 1, \"b\": 2, \"c\": \"test\"}" | umberto-mutate json newvals nums
{"a":-2.8e-20,"b":-40000,"c":"test"}
echo -n "{\"a\": 1, \"b\": 2, \"c\": \"test\"}" | umberto-mutate json radamsa strings
{"c\u0008^\u001f":"ó ¨teï»â¨¿st","1313131313131313â":1,"ô ó ó ¶Db":2}
echo -n "{\"a\": 1, \"b\": 2, \"c\": \"test\"}" | umberto-mutate string replacement all
:"c2:tb{ :"{c"}t"as }c"e": "2
Umberto stack का उपयोग करता है। stack इंस्टॉल करें, इस रिपॉजिटरी को क्लोन करें, फिर stack build && stack install चलाएँ। यदि आप Radamsa फज़र का उपयोग करना चाहते हैं, तो आपको इसे अलग से इंस्टॉल करना होगा।
Umberto एक सरल निष्पादन योग्य umberto-mutate प्रदान करता है, जो इसकी अधिकांश कार्यक्षमता को लपेटता है। सामान्य उपयोग इस प्रकार है:
echo -n mydata | umberto-mutate FORMAT MUTATOR TARGET
FORMAT निम्न में से कोई भी हो सकता है:
json
string (या मूल रूप से "कोई प्रारूप नहीं")
xml (अपेक्षाकृत अपरीक्षित)
der (X.509 DER, अपेक्षाकृत अपरीक्षित)
MUTATOR निम्न में से कोई भी हो सकता है:
knuth: निर्धारित लक्षित मानों को Knuth shuffle करें
replacement: निर्धारित लक्षित मानों को Replacement-shuffle करें
newvals: पुराने मानों के स्थान पर नए लक्षित मानों का संश्लेषण करें
radamsa: म्यूटेशन के लिए radamsa को शेल आउट करें (केवल स्ट्रिंग्स पर काम करता है)
TARGET निम्न में से कोई भी हो सकता है:
strings: स्ट्रिंग प्रकार
nums: संख्यात्मक प्रकार
all: सभी प्रकार
Umberto की अधिकांश कार्यक्षमता lib/Umberto.hs में उपलब्ध है। टाइपक्लास पॉलीमॉर्फिज़्म का उपयोग करने वाले म्यूटेटरों को open world assumption का उल्लंघन करने के लिए Template Haskell के कुछ उपयोग की आवश्यकता होती है। यह Umberto.TH में उपलब्ध है, लेकिन इसका उपयोग केवल निष्पादन योग्य कोड में किया जाना चाहिए, लाइब्रेरी में कभी नहीं।