
एक स्वचालित, मॉड्यूलर क्रिप्टैनालिसिस टूल; अर्थात, गणित विनाश का एक हथियार
FeatherDuster मुख्य रूप से Daniel "unicornfurnace" Crowley द्वारा लिखा गया एक टूल है, जिसमें समुदाय के योगदान भी शामिल हैं, जो क्रिप्टो को तोड़ने के लिए है; यह कमजोर क्रिप्टोसिस्टम की पहचान और शोषण की प्रक्रिया को यथासंभव आसान बनाने की कोशिश करता है। Cryptanalib, FeatherDuster के पीछे की कार्यप्रणाली है, और इसे FeatherDuster से स्वतंत्र रूप से इस्तेमाल किया जा सकता है।
क्यों "FeatherDuster"? कुछ क्रिप्टो लोगों के बीच एक अंदरूनी मज़ाक है जहाँ क्रिप्टो का खराब तरीके से उपयोग करना, या किसी ऐसी समस्या को हल करने के लिए करना जिसके लिए क्रिप्टो नहीं है, "उस पर जादुई क्रिप्टो परी धूल छिड़कना" कहा जाता है। FeatherDuster जादुई क्रिप्टो परी धूल को साफ करने के लिए है।
यह FeatherDuster का बीटा रिलीज़ है। चीज़ें टूटी हो सकती हैं।
यदि आपको कोई बग मिले, तो कृपया एक issue दर्ज करें। Pull requests का स्वागत है और इन्हें प्रोत्साहित किया जाता है।
python featherduster/featherduster.py [ciphertext file 1] ... [ciphertext file n]
यदि आपने FeatherDuster को अपने virtual environment में स्थापित किया है, तो आप इसे आसानी से इस प्रकार चला सकते हैं:
(featherduster) $ featherduster [ciphertext file 1] ... [ciphertext file n]
जब positional arguments के माध्यम से samples आयात किए जाते हैं, तो प्रत्येक फ़ाइल को फ़ाइलों के प्रारूप की परवाह किए बिना अपने स्वयं के ciphertext के रूप में उपभोग और व्यवहार किया जाएगा। FeatherDuster में सामान्य encodings को स्वचालित रूप से पहचानने और डिकोड करने की क्षमता है, इसलिए यह ठीक है अगर इन फ़ाइलों में encoded samples हों।
एक बार FeatherDuster कंसोल लॉन्च होने पर, ciphertext आयात के वैकल्पिक तरीके उपलब्ध होंगे, विशेष रूप से newline-separated samples वाली फ़ाइल आयात करने की क्षमता, जहाँ प्रत्येक पंक्ति को एक अलग sample के रूप में माना जाएगा, जैसे:
68657920636f6f6c
796f752072656164
74686520726561646d65
और command-line input के माध्यम से FeatherDuster में एक single ciphertext निर्दिष्ट करने की क्षमता। चूँकि यह input एक नई पंक्ति पर समाप्त होगा, इसलिए सलाह दी जाती है कि किसी प्रकार की encoding का उपयोग करें यदि sample में कोई नई पंक्ति हो।
Cryptanalib का उपयोग FeatherDuster से अलग करके Python-आधारित क्रिप्टो हमले के टूल बनाने के लिए किया जा सकता है। cryptanalib कार्यों के लिए दस्तावेज़ Python help() फ़ंक्शन के माध्यम से इस प्रकार एक्सेस किए जा सकते हैं:
>>> import cryptanalib as ca
>>> dir(ca) # output edited for a cleaner README file
[ ... 'analyze_ciphertext', 'batch_gcd', 'bb98_padding_oracle', 'break_alpha_shift', 'break_ascii_shift', 'break_columnar_transposition', 'break_generic_shift', 'break_many_time_pad', ... ]
>>> help(ca.bb98_padding_oracle)
Help on function bb98_padding_oracle in module cryptanalib:
bb98_padding_oracle(ciphertext, padding_oracle, exponent, modulus, verbose=False, debug=False)
Bleichenbacher's RSA-PKCS1-v1_5 padding oracle from CRYPTO '98
Given an RSA-PKCS1-v1.5 padding oracle and a ciphertext,
decrypt the ciphertext.
ciphertext - The ciphertext to decrypt
padding_oracle - A function that communicates with the padding oracle.
The function should take a single parameter as the ciphertext, and
should return either True for good padding or False for bad padding.
exponent - The public exponent of the keypair
modulus - The modulus of the keypair
verbose - (bool) Whether to show verbose output
debug - (bool) Show very verbose output
Cryptanalib में विश्लेषण इंजन, जो FeatherDuster द्वारा उपयोग किया जाता है, स्वचालित रूप से encodings का पता लगा सकता है और samples को डिकोड कर सकता है। इंजन मानता है कि सभी samples एक ही प्रक्रिया के साथ उत्पन्न होते हैं (उदाहरण के लिए, base64encode(aes_encrypt(datum))), लेकिन कुछ हद तक मिश्रित samples को संभाल सकता है। वर्तमान में, Cryptanalib निम्नलिखित encoding schemes का पता लगा सकता है और डिकोड कर सकता है:
Cryptanalib का विश्लेषण इंजन विश्लेषण चरण में भी कई गुणों का पता लगा सकता है: