Giter Club home page Giter Club logo

invisible-defender's Introduction

Invisible Defender (Mobile)

Current Version: v2.0.7 | Last APK version: v2.0.6

This repository made by İstanbul Üniversitesi-Cerrahpaşa Sustainable Energy Research Laboratuary BSc. Students. You must have server files (invisible defender server) in order to connect it from the application.

Contributors: @electricalgorithm and @sirtryingsomething

Login Panel Control Panel

Last Updates (TR)

25 Feb 21: Kullanıcı şifresinin hashlenip gönderilmesi halledildi. Şifreleme baştan aşağı değiştirildi, RSA ile handshake yapıldıktan sonra AES-256 şifreleme kullanıldı. RSA.generate() fonksiyonu __init__ içine alındı, böylece giriş yapılması için beklenen süre azaltıldı. Hatalar giderildi. Sınıfların içerisinde yer almayan tüm fonksiyonlar statik metot olarak MainApp sınıfının içine tanımlandı. Global değişkenler MainApp sınıfının içinde property olarak eklendi, ancak diğer sınıflar tarafından instance olarak çağırıldı -- bu yüzden App isimli objenin ismi değiştirildiğinde tüm koddaki ilgili yerlerin güncellenmesi gerekecektir. Küçük hatalar giderildi. Joystick aktarımdaki Cipher hataları çoğunlukla AES ile düzeltildi. template.kv içerisinde eskiden kalmış olan menü kodları silindi.

22 Feb 21: Yan bardaki pil, sıcaklık gibi göstergeler için exc komutunun kullanılması için zemin hazırlandı, sistem kuruldu. template.kvdeki bazı hatalar giderildi. Bazı fonksiyonlar ilgili sınıfların altına statik metot olarak eklendi.

21 Feb 21: Giriş ekranı ilk açıldığında ekran yerleşimindeki sorun düzeltildi.Giriş kısmındaki başlık değiştirildi. Çarpı butonuna basmamıza rağmen kapanmamasının sebebinin thread oluşturması ve daha göndermeden kapanması olduğu düşünülerek gönderilen !dis mesajı ana process'te gönderilmeye başlandı. Kapanmama sorunu halloldu. (Teste ihtiyacı var!)

21 Feb 21: İşleri karmaşıklaştıran ve gereksiz yere "sanki" bitlermiş gib gönderilen byte stringler için yeni bir sistem geliştirildi. Bu sistem, id:type:setting:value şeklindedir. id, rastgele oluşturulmuş, 5 haneli bir tam sayıdır. type; INFO, ERROR gibi mesajın tipini kapsayan bir sayıdır. setting; tempshield_status gibi güncellenen verinin nereye ait olduğunu kapsayan bir sayıdır. value ise bu ayarlanmak isteyen verinin ayarlanacağı bilgidir. Tam sayı, boolean olabilir ya da string olabilir. Buna ek olarak giriş ekranındaki user@IP:port girilmediği taktirde uygulamanının hata verip kapanması düzeltildi.

20 Feb 21: Önemli bir hata olan mobil uygulamaya (APK) derlendiğinde numpy sıkıntısı yok edildi. Görüntü aktarımındaki yavaşlık yüzünden çözünürlük 160x140'a düşürüldü. assets-GIT klasöründeki APK dosyası kaldırıldı, yeni versiyonlar "relase" olarak konulacak.

20 Feb 21: Programdaki genel fonksiyonlar yeni bir dosya olan utils.py'da toplandı. config.py'daki gereksiz değişkenler silindi. Bağlantının sunucudan kesilebilmesi için gerekli kod bloğu eklendi. Joystick'teki bir süre sonra ortaya çıkan hata düzeltildi. Ekranda çıkan bildirimler (toast) düzeltildi, update_data() fonksiyonun içindeki gereksiz kodlar temizlendi -- process'e eklendi. is not şeklinde hatalı yazılmış olan koşullar düzeltildi.

19 Feb 21: Program, mobil yazılım haline çevrildi. APK hazırlandı. GÖRÜNTÜ AKTARIMI SORUNLU!. PyCryptodome kütüphanesine yapılmış olan değişiklikler yok edildi. Requirements.txt güncellendi. Görüntü aktarımı için mobilde opencv sorun çıkarttığından struct/pickle koduna geçildi.

Notes to Ourselves

  • Don't install PyCrypto and PyCryptodome at same project. Don't use PyCrypto since its vulnerable.
  • PyCryptodomex doesn't have recipe for p4a. Don't use it, either.
  • adb devices can be used for listing connected Android devices (adb is in your ~/.buildozer directory.). Also, adb logcat *:S python:D can be used for outputs. Don't forget that zsh won't recognize the asteriks, so that put a escape character before it: adb logcat \*:S python:D.

Installing

  1. Download the repository.
  2. Create a virtual environment with virtualenv . --python=python3.7. It should use Python version 3.7.
  3. Activate the virtual enviroment.
  4. Use pip to install all requirements with pip install -r requirements.txt.
  5. Now, you can launch the application in your computer with python main.py or you can create an -debug- APK with buildozer -v android debug. See buildozer for details and further readings.

What to do next? (TR)

  • Kameranın görüntü aktardığı sunucu, mobilde işe yaramıyor. Numpy kütüphanesi ImportError: dlopen failed: hatası veriyor. Bunun düzeltilmesi için yeni bir görüntü paylaşımı algoritması kurulması gerek.
  • is not şeklinde yazılmış koşullar =!'a dönüşütürlmeli.
  • Kullanıcının şifresi hashlenip sunucuya yollanmalı ve sunucuda hashlenmiş hali tutulmalı.
  • Tüm veri aktarımı RSA ile yapılmasından ziyade, RSA ile handshake yapılmalı ve diğer iletişim paylaşılmış olan anahtar aracılığı ile AES ile yürütülmeli.
  • type_conversion gibi genel fonksiyonlar ayrı bir Python dosyası olarak yazılmalı.
  • Tüm byte olarak hazırlanmış veriler, bitlere çevirilmeli. Yeni bir sistem geliştirildi, bu sistem sayesinde ileride oluşabilecek sıkıntılar gidirilmesi düşünüldü.
  • username@IP:port şeklinde olan giriş kısmına eğer düzgün bir şekilde girilmezse uygulamadan atıyor. Bunun yerine hata fırlatması ayarlanmalı.
  • Kapatma tuşuna basıldıktan sonra bazen karşı tarafa kapatma bilgisi gönderilmiyor, bu yüzden araçtaki bilgiler kapanmıyor. Düzeltilmeli.
  • Kamera aktarımı da şifrelenmeli.
  • Giriş ekranındaki kutu, telefonda ilk kez açıldığnda görünmez bir pozisyonda oluyor. Düzeltilmeli.
  • Bir simge ve açılış ekranı görselleri hazırlanmalı.
  • Başlıklar düzeltilmeli.
  • Yan bardaki verilerin güncellenebilmesi için sistem kurulmalı.
  • Stop komutu gittiğinde Untrusted hatası veriyor. Düzeltilmesi gerek.

invisible-defender's People

Contributors

electricalgorithm avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.