Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/cagataycali/hstp
Sécurité WebSécurité RéseauCryptographieUtilitaires et Frameworks
GitHubcagataycali/hstp

HSTP

Cadre de protocole applicatif pour une communication chiffrée de bout en bout basée sur la confiance à travers des réseaux hétérogènes, permettant une découverte de services et un routage uniformes sur les couches TCP, HTTP et blockchain.

Voir le dépôt
155540il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Protocole de texte hyper simple sur les réseaux

HSTP - Hyper Service Transfer Protocol on Computer Networks

Essayez maintenant : https://hstp.ai

root@kitploit:~
npx hstp;

Le protocole vise à développer une abstraction de couche application pour le Hyper Service Transfer Protocol.

HSTP est une récursion par nature de HSTP. Ce protocole s'implémente lui-même comme une interface. Sur chaque appareil connecté à Internet, il existe une instance HSTP. C'est pourquoi l'adoption n'est pas nécessaire. HSTP fonctionne déjà au-dessus d'Internet. Nous venons seulement de parvenir à expliquer le protocole sur des protocoles dans des réseaux hétérogènes. C'est pourquoi ne le comparez pas avec le web2, web3 ou vice versa.

Résumé

HSTP est une interface de représentation d'application pour les réseaux hétérogènes.

L'interface HSTP impose d'implémenter un ensemble de méthodes pour pouvoir communiquer avec d'autres nœuds du réseau. Ainsi, les serveurs, clients et autres nœuds peuvent communiquer entre eux de manière basée sur la confiance et chiffrée de bout en bout. Au fil du temps, la résolution des nœuds est basée sur l'algorithme de résolution de chemin le plus rapide que j'ai écrit.

Protocole pour les bébés 🍼 <- 👀 <- 👶:

Heure du conte !

  • Bébé pleure ! 👶
  • A besoin de lait ! 🍼
  • Maman a un problème.
  • Papa a un problème.
  • Réparons ça !

Un petit aperçu

Imaginez, nous sommes dans la situation d'une mère et d'un père qui vivent une vie heureuse. Ils ont eu un bébé ! Soudain, la mère a besoin de prendre des pilules régulièrement pour soigner une maladie. La pilule est un poison pour le bébé. Le bébé pleure et la mère appelle le père car il est la seule personne de confiance pour aider le bébé. Mais le père ne peut parfois pas rester à la maison, il doit faire quelque chose pour nourrir le bébé. Le père entend qu'un laitier a du lait frais et de haute qualité à bas prix. Le père décide d'essayer de parler au laitier, le laitier livre le lait au père, le père apporte le lait à la mère. La mère donne le lait au bébé. Le bébé est heureux maintenant et le bébé dort, la mère voit que le bébé est heureux.

La famille n'a jamais acheté de lait à l'extérieur, c'est la première fois qu'ils achètent du lait pour le bébé : (Maman ne connaît pas le numéro du laitier, le laitier ne connaît pas l'adresse de la maison)

root@kitploit:~
As steps:

0)  - Baby wants to drink milk.
1)  - Baby cries to the mom.
3)  - Mom see the baby is crying.
4)     - Mom checks the fridge. Mom sees the milk is empty. (Mother is only trusting the Father)
5)        - Mom calls the father.
6)        - Father calls the milkman.
7)        - Milkman delivers the milk to father.
8)        - Father delivers the milk to mom.
9)  - Mom gives the milk to the baby.
10) - Baby drinks the milk.
11) - Baby is happy.
12) - Baby sleeps.
13) - Mother see the baby is happy and sleeps.
14) - In order to be able to contact the milkman again, the mother asks the father to tell her that she wants the milkman to save the address of the house and the mobile phone of the mother.
15)     - Mother calls the father.
16)     - Father calls the milkman.
17)     - Milkman saves the address of the house and the mobile phone of the mother.

Oops, tomorrow baby wakes up and cries again,
0) - Baby wants to drink milk.
1) - Baby cries to the mom.
2) - Mom see the baby is crying.
3)    - Mom checks the fridge. Mom sees the milk is empty. (Mother is trusting the Father had right decision in the first place by giving the address to the milkman, and the milkman had right decision in the first place by saving the address of the house and the mobile phone of the mother.)
4)    - Mother calls the milkman (Mother is trusting the Father's decision only)
5)    - Milkman delivers the milk to mom.
6) - Mom gives the milk to the baby.
7) - Baby drinks the milk.
8) - Baby is happy.
9) - Baby sleeps.
10) - Mother see the baby is happy and sleeps.
11) - Mother is happy and the mother trust the milkman now.

ce document que vous lisez est un manifeste pour les internautes pour connecter les autres personnes en faisant confiance au service qui sert le client et la confiance ne peut être maintenue qu'en fournissant de bons services. la confiance est la clé, mais pas suffisante pour survivre. le service doit être fiable, cohérent, bon marché. sinon, les gens décideront de ne plus vous solliciter.

Alors, c'est facile non ? C'est si simple à comprendre, qui sont ces personnes dans l'histoire ?

  • Le bébé est un client.
  • Maman est un client.
  • Papa est un client.
  • Le laitier est un serveur.

aussi,

  • Le bébé pourrait être un serveur avec [LE TEMPS].
  • Maman est un serveur pour le bébé.
  • Papa est un serveur pour maman.
  • Le laitier est un serveur pour papa.
  • Le laitier est un serveur pour maman.

Le bébé est entre de bonnes mains. Rien à craindre. Ils t'aiment, tu comprendras quand tu seras grand et que tu auras un enfant.

// Explication des étapes techniques bientôt, mais pas si difficile que ça comme vous le voyez.

Qu'est-ce qu'un HSTP ?

HSTP est une interface, qui est un ensemble de méthodes qui doivent être implémentées par la couche application. L'interface est utilisée pour communiquer avec d'autres nœuds du réseau. L'interface est conçue pour être utilisée dans un réseau hétérogène.

Qu'est-ce qu'un nœud HSTP ?

HSTP doit être implémenté sur n'importe quelle couche de dispositifs/environnements connectés en réseau.

Un nœud HSTP peut être un serveur TCP, un serveur HTTP, un fichier statique ou un contrat sur n'importe quelle chaîne. Un nœud HSTP peut appeler n'importe quel autre nœud HSTP. Ainsi, les nœuds peuvent s'appeler librement, vérifier l'état de leur système et communiquer entre eux.

Quel type de couche d'abstraction pour les réseaux ?

HSTP est déjà implémenté au niveau du langage, par les gens pour les gens. L'anglais est la langue la plus adoptée sur Terre. JavaScript pourrait être également le langage le plus adopté pour les environnements navigateurs. Solidity est pour les chaînes basées sur EVM, hyperbees pour les réseaux TCP, etc.

L'interface HSTP doit être appliquée entre tous les dispositifs/réseaux connectés HSTP.

  • [Universe] parle à [Universe] via [HSTP]
    • [Kind] universe parle sur world.
      • [World] Earth parle avec des fréquences sonores et HSTP.
        • [Country] X fréquences sonores en Xish et HSTP.
          • [Community] CommunityX Xish en CommunityXish.
        • [Country] Y parle Yish et HSTP.
        • [Country] Z parle Zish et HSTP.
      • [World] Mars parle avec des fréquences radio.
        • [Bacteria] UUU-1 parle UUU-1ish et HSTP.
          • Info : UUU-1 peut appeler, universe/kind/world/Earth/X/CommunityX/query
      • [World] Jupiter parle avec des fréquences lumineuses et n'implémente pas HSTP.
        • Info : Si la Terre veut parler avec Jupiter, nous pouvons ajouter un HSTP au proxy de Jupiter sur l'univers.
    • [Kind] universe parle via les atomes et HSTP.
      • [Atoms] ... et HSTP.
        • ... et HSTP.
          • [Y] ... et HSTP.
            • Info : [Y] peut parler avec universe/kind/world/Mars/Bacteria/UUU-1/query
      • [Atoms] ... et HSTP.
        • ... et HSTP.
          • [Y] ... et HSTP.
            • Info : [Y] peut parler avec universe/kind/world/Mars/Bacteria/UUU-1/query Info : Kind universe peut parler avec Mars, et Mars peut aussi parler avec Kind universe.

Quel est le but de HSTP ?

Options de mise à l'échelle infinies : Tout périphérique connecté TCP peut communiquer avec tout autre périphérique connecté TCP via HSTP. Cela signifie que tout navigateur Web est un serveur d'un autre nœud HSTP, et que tout navigateur Web peut appeler n'importe quel autre navigateur Web.

Interface de représentation d'application uniforme : HSTP est une interface uniforme, qui est un ensemble de méthodes qui doivent être implémentées par la couche application.

Réseaux hétérogènes : Tout participant du réseau est autorisé à partager les ressources avec les autres participants du réseau. Les ressources peuvent être le CPU, la mémoire, le stockage, le réseau, etc.

Conjugaison des versions du web Depuis que les technologies blockchain sont appelées web3, les gens ont commencé à discuter des différences entre les web. Comparer est un comportement issu de l'état d'esprit de l'éducation aux systèmes numériques incrémentaux. Lequel est le meilleur : aucun. Nous devons construire des systèmes qui peuvent parler en un protocole uniforme, les services sous-jacents pouvant être n'importe quoi. C'est l'objectif de HSTP.

Quels sont les composants de HSTP ?

Interface de registre L'interface de registre est conçue pour être utilisée sur la couche TCP, afin de pouvoir enregistrer les nœuds de premier niveau (tld) dans le réseau. La première implémentation du relais TCP HSTP résoudra hstp/

Le registre comporte deux parties de l'interface :

  • La méthode Register, utilisée pour enregistrer un nouveau nœud dans le réseau.
  • La méthode Resolve, utilisée pour résoudre un nœud dans le réseau.

L'implémentation du registre nécessite deux nœuds HSTP :

  1. Hyperbees
  • Les réseaux hétérogènes résoudront le registre de RPC, TCP, HTTP, HSTP, etc.
  1. Registry.sol sur toute chaîne basée sur EVM (Ethereum, Binance Smart Chain, Polygon, etc.)
  • Registry.sol résoudra le registre des nœuds HSTP. Cela peut être relayé sur d'autres réseaux.

Interface de routeur

À des fins de démonstration, nous utiliserons l'exemple Solidity suivant :

root@kitploit:~
// SPDX-License-Identifier: GNU-3.0-or-later
pragma solidity ^0.8.0;

import "./HSTP.sol";
import "./ERC165.sol";

enum Operation {
    Query,
    Mutation
}

struct Response {
    uint256 status;
    string body;
}

struct Registry {
    HSTP resolver;
}

// HSTP/Router.sol
abstract contract Router is ERC165 {
    event Log(address indexed sender, Operation operation, bytes payload);
    event Register(address indexed sender, Registry registry);
    mapping(string => Registry) public routes;

    function reply(string memory name, Operation _operation, bytes memory payload) public virtual payable returns(Response memory response) {
        emit Log(msg.sender, _operation, payload);
        // Traverse upwards and downwards of the tree.
        // Tries to find the closest path for given operation.
        // If the route is registered on HSTP node, reply from children node.
        // If the node do not have the route on this node, ask for parent.
        if (routes[name]) {
            if (_operation == Operation.Query) {
                return this.query(payload);
            } else if (_operation == Operation.Mutation) {
                return this.mutation(payload);
            }
        }
        return super.reply(name, _operation, payload);
    }

    function query(string memory name, bytes memory payload) public view returns (Response memory) {
        return routes[name].resolver.query(payload);
    }

    function mutation(string memory name, bytes memory payload) public payable returns (Response memory) {
        return routes[name].resolver.mutation(payload);
    }

    function register(string memory name, HSTP node) public {
        Registry memory registry = Registry({
            resolver: node
        });
        emit Register(msg.sender, registry);
        routes[name] = registry;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(HSTP).interfaceId;
    }
}

Interface HSTP

root@kitploit:~
// SPDX-License-Identifier: GNU-3.0-or-later
pragma solidity ^0.8.0;

import "./Router.sol";

// Stateless Hyper Service Transfer Protocol for on-chain services.
// Will implement: EIP-4337 when it's on final stage.
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4337.md
abstract contract HSTP is Router {
    constructor(string memory name) {
        register(name, this);
    }

    function query(bytes memory payload)
        public
        view
        virtual
        returns (Response memory);

    function mutation(bytes memory payload)
        public
        payable
        virtual
        returns (Response memory);
}

Exemple de nœud HSTP

Un nœud HSTP a accès pour appeler le routeur parent via la méthode super.reply(name, operation, payload). Un nœud HSTP peut également appeler les nœuds enfants en appelant les méthodes this.query(payload) ou this.mutation(payload).

Un nœud HSTP peut être un contrat intelligent, un navigateur Web ou un périphérique connecté TCP.

Le nœud a la pleine capacité d'ajouter d'autres nœuds HSTP au réseau ou lui-même en tant que sous-services.

root@kitploit:~
      HSTP  HSTP
    /    \   /  \
  HSTP   HSTP  HSTP
        /    \
      HSTP  HSTP
    /       /
    HSTP   HSTP
root@kitploit:~
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

import "hstp/HSTP.sol";

// Stateless Hyper Service Transfer Protocol for on-chain services.
contract Todo is HSTP("Todo") {

    struct ITodo {
        string todo;
    }
    
    function addTodo(ITodo memory request) public payable returns(Response memory response) {
        response.body = request.todo;
        return response;
    }

    // Override for HSTP.
    function query(bytes memory payload)
        public
        view
        virtual
        override
        returns (Response memory) {}

    function mutation(bytes memory payload)
        public
        payable
        virtual
        override
        returns (Response memory) {
            (ITodo memory request) = abi.decode(payload, (ITodo));
            return this.addTodo(request);
        }
}

Proposition

La proposition Ethereum est en projet, mais le protocole a une implémentation de référence Todo.sol.

Services Web impressionnants fonctionnant au-dessus de HSTP

Liste complète ici

Hello world

Vous pouvez tester HSTP et essayer sur Remix maintenant.

Comment jouer avec le protocole ?

  • Copiez le code source ci-dessous sur https://remix.ethereum.org/
  • Déployez sur n'importe quelle chaîne basée sur EVM.
  • Appelez les fonctions et essayez différentes topologies de réseau sur HSTP.
root@kitploit:~
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

import "hstp/HSTP.sol";

// Stateless Hyper Service Transfer Protocol for on-chain services.
contract Todo is HSTP("Todo") {

    struct TodoRequest {
        string todo;
    }
    
    function addTodo(TodoRequest memory request) public payable returns(Response memory response) {
        response.body = request.todo;
        return response;
    }

    // Override for HSTP.
    function query(bytes memory payload)
        public
        view
        virtual
        override
        returns (Response memory) {}

    function mutation(bytes memory payload)
        public
        payable
        virtual
        override
        returns (Response memory) {
            (TodoRequest memory todoRequest) = abi.decode(payload, (TodoRequest));
            return this.addTodo(todoRequest);
        }
}

Contribuer :

Contribution au niveau développeur

  • Écrivez une application todo avec HSTP, déployez-la avec Remix et testez-la.
  • Dessinez un exemple d'architecture de HSTP (architecture sans serveur).

Contribution au niveau cœur

  • Implémentez l'interface HSTP de la couche TCP sur hyperbees, [Universe]
    • hyperbees et HSTP seront la première implémentation de HSTP.
    • Cela couvrira la phase universe des réseaux. Cela nous apportera un web entièrement décentralisé sur HSTP.
  • Implémentez l'interface HSTP de la couche RPC sur Solidity [Web3]
    • Solidity - Exemple de nœud HSTP
  • Implémentez une architecture complexe sans serveur sur l'interface HSTP avec Solidity [Web3]
    • Solidity - CoolBook (Architecture pseudo sans serveur)
  • Implémentez l'interface HSTP de la couche HTTP sur JavaScript [Web]
    • Les interfaces HSTP sont proches de l'état POC. HTML - Exemple de nœud HSTP

Inspirations :

  • Applicabilité du protocole de routage Babel https://datatracker.ietf.org/doc/rfc8965/
  • EIP : The Extended Internet Protocol - Un cadre pour maintenir la compatibilité ascendante - https://datatracker.ietf.org/doc/html/rfc1385
  • Mindset Humanode
    • Pourquoi ce n'est pas un Humanode : Ils sont trop haut niveau pour cette abstraction, mais la voie correcte est HSTP.
  • Abstraction au niveau Solidity pour Hyper Service Transfer Protocol (Diamond protocol eip-2535)
    • Pourquoi ce n'est pas un diamond : https://blog.trailofbits.com/2020/10/30/good-idea-bad-design-how-the-diamond-standard-falls-short/
  • Abstraction au niveau TCP pour Hyper Service Transfer Protocol (libp2p)
    • La couche de représentation d'application manque.
  • Pourquoi ce n'est pas un libp2p : Il n'y a pas de couche de représentation d'application. C'est juste une couche réseau.
  • Approche d'abstraction de la couche TCP : https://datatracker.ietf.org/doc/html/rfc1347
    • Pourquoi ce n'est pas un RFC1347 : Ce n'est pas une norme, c'est juste une proposition. La couche de représentation d'application manque.

Licence

GNU GENERAL PUBLIC LICENSE V3

Contributeurs principaux

  • Cagatay Cali
  • Buğra Yıldız
  • Erdal Çay

Sponsors

  • eunomia.team - logo & design

Auteur

Cagatay Cali

Télécharger l’outil