
مشروع بحثي حول نمذجة بروتوكولات إنترنت الأشياء غير المتجانسة
IoTMap هي أداة تقوم بنمذجة شبكات إنترنت الأشياء باستخدام بروتوكول واحد أو عدة بروتوكولات في وقت واحد. هذا العمل قيد التطوير، كجزء من أطروحة دكتوراه في أمن إنترنت الأشياء. يتم تحديث هذا المستودع بانتظام مع الحصول على نتائج جديدة. يدعم هذا المشروع حاليًا 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 من خلال مدير الحزم المدمج. ومع ذلك، قد يكون من الأسهل تثبيته واستخدامه من الملف المضغوط:
cd /path/to/iotmap
cd database
# استبدل رقم الإصدار بأحدث إصدار في الرابط إذا لزم الأمر
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 وحدات: قاعدة البيانات، النمذجة، والتنصت. وحدة التنصت قيد التطوير وليست عاملة بالكامل. للتبديل بين الوحدات، ما عليك سوى كتابة اسم الوحدة.
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 إلى تنسيقنا الموحد المستخدم لإنشاء النمذجة. تستخدم هذه الوحدة مستخلصات مختلفة وفقًا للبروتوكول المعطى في الوسيط الذي يمكنك العثور عليه في مجلد المستخلصات. يختار البرنامج الرئيسي المستخلص المناسب ثم يقوم بتشغيل مولد الحزم (gen_packets.py) بطريقة متعددة الخيوط لإنشاء pcap بالتنسيق الموحد.
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 المُعطى كمدخل لاستخراج وإنشاء العقد ثم الحواف التي تربط العقد. بعد إنشاء الرسوم البيانية الأربعة، يمكن عرض النتيجة على تطبيق الويب الذي يوفره Neo4J والمتاح على http://localhost:7474/
يمكنك أيضًا الاستعلام عن قاعدة البيانات مباشرة من تطبيق الويب باستخدام طلب cypher في مربع الإدخال.
