
विषम IoT प्रोटोकॉल मॉडलिंग पर शोध परियोजना
IoTMap एक उपकरण है जो एक या एक से अधिक प्रोटोकॉल का एक साथ उपयोग करके IoT नेटवर्क को मॉडल करता है। यह कार्य प्रगति पर है, जो इंटरनेट ऑफ थिंग्स सुरक्षा पर पीएचडी थीसिस का एक हिस्सा है। यह रिपॉजिटरी नियमित रूप से अपडेट की जाती है क्योंकि नए परिणाम प्राप्त होते हैं। यह प्रोजेक्ट इस समय 3 प्रोटोकॉल का समर्थन करता है: BLE, ZigBee और OS4I। और अधिक आ रहे हैं।
आप पैकेज स्थापित करने के लिए requirements.txt फ़ाइल का उपयोग कर सकते हैं:
pip3 install -r requirements.txt
sudo apt-get install libgcrypt20-dev # (debian-आधारित वितरण)
sudo pacman -S libgcrypt # (archlinux-आधारित वितरण)
इस रेपो को क्लोन करें और ऊपर वर्णित सभी आवश्यकताओं को स्थापित करें:
# किसी भी वितरण के लिए
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# यदि debian-आधारित है
sudo apt-get install libgcrypt20-dev
# यदि archlinux-आधारित है
sudo pacman -S libgcrypt
अब हम Neo4J स्थापित करेंगे। अधिकांश वितरण Neo4J को अंतर्निहित पैकेज मैनेजर के माध्यम से भेजते हैं। हालांकि, इसे tarball से स्थापित और उपयोग करना आसान हो सकता है:
cd /path/to/iotmap
cd database
# यदि आवश्यक हो तो URL में संस्करण संख्या को नवीनतम से बदलें
wget -O neo4j-community.tar "https://neo4j.com/artifact.php?name=neo4j-community-3.5.9-unix.tar.gz"
mkdir neo4j-community && tar xvf neo4j-community.tar -C neo4j-community --strip-components 1
प्रोजेक्ट को पहली बार चलाने के लिए, आपको डेटाबेस के लिए एक उपयोगकर्ता नाम और एक पासवर्ड निर्धारित करने की आवश्यकता है। निम्नलिखित के साथ डेटाबेस प्रारंभ करें:
cd database
./neo4j-community/bin/neo4j console
Neo4J प्रारंभ होगा और http://localhost:7474 पर सुलभ होगा। डिफ़ॉल्ट उपयोगकर्ता नाम और पासवर्ड क्रमशः neo4j और neo4j हैं।
Iotmap डिफ़ॉल्ट उपयोगकर्ता नाम और पासवर्ड के लिए iotmap का उपयोग करता है।
यदि आप अलग क्रेडेंशियल सेट करना चाहते हैं, तो आपको core/databaseController.py में पंक्ति 46 पर मानों को निम्नानुसार अपडेट करना होगा:
model = Model("bolt:http://localhost:7474", "username", "password")
IoTMap का उपयोग कैसे करें, इस पर एक उदाहरण के साथ अधिक विस्तृत दस्तावेज़ीकरण यहाँ उपलब्ध है
फ्रेमवर्क प्रारंभ करें:
python3 iotmap.py
IoTMap चलने से पहले neo4j डेटाबेस प्रारंभ करेगा, हालांकि डेटाबेस तुरंत उपलब्ध नहीं होता है। कभी-कभी 10 सेकंड की नींद डेटाबेस के उपलब्ध होने के लिए पर्याप्त होती है, कभी-कभी नहीं और आपको iotmap को फिर से चलाने की आवश्यकता होती है।
IoTMap 3 मॉड्यूल प्रदान करता है: Database, Modelling और Sniffing। स्निफिंग मॉड्यूल कार्य प्रगति पर है और पूरी तरह से संचालन योग्य नहीं है। मॉड्यूल के बीच स्विच करने के लिए, बस मॉड्यूल का नाम टाइप करें।
python3 iotmap.py
Starting the database
Database is available at http://localhost:7474/
IIIIIIIIII TTTTTTTTTTTTTTTTTTTTTTTMMMMMMMM MMMMMMMM
I::::::::I T:::::::::::::::::::::TM:::::::M M:::::::M
I::::::::I T:::::::::::::::::::::TM::::::::M M::::::::M
II::::::II T:::::TT:::::::TT:::::TM:::::::::M M:::::::::M
I::::I oooooooooooTTTTTT T:::::T TTTTTTM::::::::::M M::::::::::M aaaaaaaaaaaaa ppppp ppppppppp
I::::I oo:::::::::::oo T:::::T M:::::::::::M M:::::::::::M a::::::::::::a p::::ppp:::::::::p
I::::I o:::::::::::::::o T:::::T M:::::::M::::M M::::M:::::::M aaaaaaaaa:::::ap:::::::::::::::::p
I::::I o:::::ooooo:::::o T:::::T M::::::M M::::M M::::M M::::::M a::::app::::::ppppp::::::p
I::::I o::::o o::::o T:::::T M::::::M M::::M::::M M::::::M aaaaaaa:::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M M:::::::M M::::::M aa::::::::::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M M:::::M M::::::M a::::aaaa::::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M MMMMM M::::::Ma::::a a:::::a p:::::p p::::::p
II::::::IIo:::::ooooo:::::o TT:::::::TT M::::::M M::::::Ma::::a a:::::a p:::::ppppp:::::::p
I::::::::Io:::::::::::::::o T:::::::::T M::::::M M::::::Ma:::::aaaa::::::a p::::::::::::::::p
I::::::::I oo:::::::::::oo T:::::::::T M::::::M M::::::M a::::::::::aa:::ap::::::::::::::pp
IIIIIIIIII ooooooooooo TTTTTTTTTTT MMMMMMMM MMMMMMMM aaaaaaaaaa aaaap::::::pppppppp
p:::::p
p:::::p
p:::::::p
p:::::::p
p:::::::p
ppppppppp
Version=0.1
IoTMap > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
IoTMap >
प्रत्येक मॉड्यूल और फ़ंक्शन उपलब्ध फ़ंक्शनों और उनका उपयोग कैसे करें, यह सूचीबद्ध करने के लिए एक सहायता मेनू प्रदान करते हैं।
यह मॉड्यूल neo4j डेटाबेस का प्रबंधन और उसके साथ बातचीत करता है।
IoTMap > database
IoTMap database > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
Database commands
=================
Interact with the neo4j database.
List of available commands :
addNodes
clearDatabase
exportDB
getNodes
help
importDB
importPcaps
mergeNodes
removeNode
For more information about any commands hit :
<command name> -h
IoTMap database >
डेटाबेस को पॉप्युलेट करने के लिए आप मौजूदा डेटाबेस या Pcaps फ़ाइलें आयात कर सकते हैं। ImportPcaps मॉडलिंग उत्पन्न करने के लिए उपयोग किए जाने वाले हमारे एकीकृत प्रारूप में Pcaps को परिवर्तित करता है। यह मॉड्यूल तर्क में दिए गए प्रोटोकॉल के अनुसार विभिन्न एक्सट्रैक्टर्स का उपयोग करता है जिन्हें आप एक्सट्रैक्टर्स फ़ोल्डर में पा सकते हैं। मुख्य प्रोग्राम उपयुक्त एक्सट्रैक्टर चुनता है फिर एकीकृत प्रारूप के साथ pcap उत्पन्न करने के लिए मल्टीथ्रेडिंग तरीके से पैकेट जनरेटर (gen_packets.py) चलाता है।
IoTMap modelling > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
Modelling commands
==================
Map the network of IoT devices detected by sniffing.
List of available commands :
appGraph
compareTo
dlGraph
help
nwkGraph
option
run
set
transGraph
For more information about any commands hit :
<command name> -h
IoTMap modelling >
यह प्रोग्राम मॉडलिंग बनाने से पहले Neo4J डेटाबेस शुरू करता है। एक बार डेटाबेस ऊपर हो जाने पर, मॉडलिंग शुरू होती है। यह इनपुट में दिए गए pcap के विश्लेषण से शुरू होता है ताकि नोड्स निकाले जा सकें और फिर किनारे बनाए जा सकें जो नोड्स को जोड़ते हैं। 4 ग्राफ़ बनने के बाद, परिणाम Neo4J द्वारा प्रदान किए गए वेब एप्लिकेशन पर http://localhost:7474/ पर देखा जा सकता है।
आप इनपुट बॉक्स में साइफर अनुरोध का उपयोग करके सीधे वेब एप्लिकेशन से डेटाबेस से अनुरोध भी कर सकते हैं।
