
USB परीक्षण आसान बनाया गया

AutoGadgetFS एक ओपन-सोर्स फ्रेमवर्क है जो उपयोगकर्ताओं को USB प्रोटोकॉल की गहन जानकारी के बिना USB उपकरणों और उनसे जुड़े होस्ट/ड्राइवर/सॉफ्टवेयर का मूल्यांकन करने की अनुमति देता है। यह टूल Python3 में लिखा गया है और शोधकर्ताओं को दुनिया में कहीं से भी दूरस्थ USB सुरक्षा मूल्यांकन करने में सक्षम बनाने के लिए RabbitMQ और WiFi पहुंच का उपयोग करता है। ConfigFS का लाभ उठाकर, AutoGadgetFS उपयोगकर्ताओं को जल्दी से उपकरणों को क्लोन और एम्युलेट करने की अनुमति देता है, प्रत्येक कार्यान्वयन के विवरण में गहराई से जाने की आवश्यकता को समाप्त करता है। फ्रेमवर्क उपयोगकर्ताओं को इसके ऊपर अपने स्वयं के फ़ज़र बनाने की भी अनुमति देता है।
<div style="text-align:center"><img src="https://raw.githubusercontent.com/ehabhussein/AutoGadgetFS/master/screenshots/devtest.jpeg" width="450" height="187" /></div>
<a name="MMITM"/>```bash
Minimal agfs in the middle setup:

```bash Complete agfs in the middle setup with debugging support:
<div style="text-align:center"><img src="https://raw.githubusercontent.com/ehabhussein/AutoGadgetFS/master/screenshots/scenario2.jpeg"/></div>
---
<a name="Usbdev"/>
### USB डिवाइस क्लास समर्थन:
[✔️] USB HID उपकरणों का पूर्ण समर्थन (मैन इन द मिडल)
[⚠️] केवल डिवाइस परीक्षण .. सभी USB उपकरण (कोई मैन इन द मिडल नहीं)
[⏳] भविष्य के संस्करण... सभी USB उपकरण (मैन इन द मिडल)
---
<a name="Caps"/>
### क्षमताएँ:
1. आसानी से USB डिवाइस खोजें, चुनें और अटैच करें।
1. किसी भी USB HID डिवाइस का अनुकरण करें।
1. HID उपकरणों के लिए AGFS इन द मिडल स्निफिंग करें (संचार को डिस्क पर सेव करें)।
1. डिवाइस स्निफिंग (कोई भी डिवाइस)।
1. एकाधिक फ़ज़र जो आपको डिवाइस या होस्ट को फ़ज़ करने देते हैं।
1. रैंडम फ़ज़र (निश्चित या रैंडम लंबाई के पैकेट के साथ)।
1. स्मार्ट फ़ज़र जो पिछले USB संचार से सीखते हैं।
1. डिस्क्राइब फ़ज़र जो फ़ज़र को बताता है कि कौन से बाइट फ़ज़ करने हैं, बाकी पैकेट को समान छोड़ते हुए।
1. गैजेट फ़ज़र।
1. अनुक्रमिक फ़ज़र।
1. कंट्रोल ट्रांसफ़र एन्युमरेटर।
1. फ़ाइल से पैकेट का पुनर्प्ले।
1. सेव किए गए USBLyzer कैप्चर से पैकेट का पुनर्प्ले।
1. संचार के रिवर्स इंजीनियरिंग को आसान बनाने के लिए पैकेट को प्रस्तुत करने का दृश्य तरीका।
1. DFU मोड में डिवाइस या डिवाइस द्वारा जानकारी लीक करने पर अलर्ट।
1. USB डिवाइस और होस्ट इंटरनेट पर कहीं भी हो सकते हैं।
1. अचानक इंटरफ़ेस परिवर्तनों की निगरानी करें।
---
<a name="Road"/>
### रोडमैप:
1. डिवाइस पर कंट्रोल ट्रांसफ़र अनुरोधों को सूँघें और उनका उत्तर दें।
1. सभी प्रकार के उपकरणों का MITM और अनुकरण करें।
1. कंसोल/QT-आधारित इंटरफ़ेस।
1. RPI zero W पर अधिक इंटरफ़ेस/एंडपॉइंट समर्थन।
1. greatfet जैसे अधिक बोर्ड का समर्थन।
1. कस्टम बोर्ड पर जाएँ।
1. रास्पबेरी पाई को सभी इंटरफ़ेस के साथ USB डिवाइस अनुकरण के लिए पूर्ण समर्थन देने पर काम करें।
1. सीक्वेंस नंबरों के माध्यम से भेजे और प्राप्त पैकेटों को सहसंबंधित करें।
---
<a name="Installation"/>
### इंस्टॉलेशन:
<a name="Linux"/>
### लिनक्स मशीन:
* नोट: WSL/WSL2 USB पास-थ्रू में समस्याओं के कारण समर्थित नहीं है।
* Python3, ipython3, git, pip और rabbitMQ सर्वर इंस्टॉल करें
```bash
sudo apt install python3 ipython3 git python3-pip rabbitmq-server dfu-util
sudo service rabbitmq-server start
```
* रिपॉजिटरी क्लोन करें
```bash
git clone https://github.com/ehabhussein/AutoGadgetFS
cd AutoGadgetFS
```
* आवश्यकताएँ इंस्टॉल करें
```bash
sudo -H pip3 install -r requirements.txt
```
* बेहतर ipython अनुभव के लिए prompt toolkit को डाउनग्रेड करें:
```bash
sudo python3 -m pip install prompt-toolkit~=2.0
```
* rabbitMQ के लिए वेब इंटरफ़ेस सक्षम करें
```bash
sudo rabbitmq-plugins enable rabbitmq_management
http://localhost:15672/ to reach the web interface
```
* वेब इंटरफ़ेस में क्रेडेंशियल *guest:guest* से लॉगिन करें
* नोट: यदि आप rabbitMQ को `localhost` पर इंस्टॉल नहीं कर रहे हैं, तो निम्नलिखित उपयोगकर्ता जोड़ें और उससे लॉगिन करें:
```bash
sudo rabbitmqctl add_user autogfs usb4ever
sudo rabbitmqctl set_user_tags autogfs administrator
```
* rabbitMQ कॉन्फ़िगरेशन फ़ाइल अपलोड करें
* ओवरव्यू टैब में सबसे नीचे जाकर इम्पोर्ट डेफ़िनिशन पर क्लिक करें
* *rabbitMQbrokerconfig/rabbitmq-Config.json* में स्थित फ़ाइल अपलोड करें
```bash
sudo service rabbitmq-server restart
```
* इंस्टॉलेशन का परीक्षण करें
```python
sudo ipython3
Python 3.7.7 (default, Apr 1 2020, 13:48:52)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import libagfs
In [2]: x = libagfs.agfs()
***************************************
AutoGadgetFS: USB testing made easy
***************************************
Enter IP address of the rabbitmq server: 127.0.0.1
In [3]: exit
sudo `python3` agfsconsole.py
***************************************
AutoGadgetFS: USB testing made easy
***************************************
Enter IP address of the rabbitmq server: 127.0.0.1
Give your project a name?!:
``` ```
* Patch Pyusb langID ( Not needed unless you get pyusb errors for langID ):
* Edit the file `/usr/local/lib/python3/dist-packages/usb/util.py`
* make changes to the `def get_string` method to look like below:
```python
if 0 == len(langids):
return "Error Reading langID"
#raise ValueError("The device has no langid")
if langid is None:
langid = langids[0]
elif langid not in langids:
return "Error Reading langID"
#raise ValueError("The device does not support the specified langid")
```
* If you prefer to use `patch` apply the following patch to the file: `AutoGadgetFS/pyusb_patches/pyusb_langid.patch`
---
<a name="Rasp"/>
### Raspberry Pi Zero W:
* Obtain a copy of [Raspian Lite Edition](https://downloads.raspberrypi.org/raspios_lite_armhf_latest)
* Burn the Image to the SD card using [BalenaEtcher](https://www.balena.io/etcher/)
* Mount the SD card on your machine and make the following changes:
* In the `/path/to/sdcard/boot/config.txt` file add to the very end of the file:
```bash
enable_uart=1
dtoverlay=dwc2
```