Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Raw-Socket-Programmierung

Python-Raw-Socket-Programmierung

高洛峰
高洛峰Original
2016-10-18 10:01:461448Durchsuche

Im Experiment müssen Sie selbst eine separate HTTP-Datennachricht erstellen. Die Verwendung von SOCK_STREAM zum Senden von Datenpaketen erfordert eine vollständige TCP-Interaktion.

Also möchte ich Raw-Sockets zum Programmieren verwenden, Datenpakete direkt erstellen und sie auf der IP-Ebene senden, also SOCK_RAW zum Senden von Daten verwenden.

Der Vorteil der Verwendung von SOCK_RAW besteht darin, dass das Datenpaket vollständig geändert werden kann, alle Datenpakete auf der IP-Ebene verarbeitet werden können und jedes Feld geändert werden kann, ohne durch UDP und TCP eingeschränkt zu werden.

Das HTTP-Datenpaket wird unten erstellt

Die IP-Schicht und die TCP-Schicht verwenden die Impacket-Bibliothek von Python, und der http-Inhalt wird selbst ausgefüllt.

#!/usr/bin/env python
  
#-------------------------------------------------------------------------------
# Name:     raw_http.py
# Purpose:       construct a raw http get packet
#
# Licence:   PythonTab.com    
#-------------------------------------------------------------------------------
  
import sys
import socket
from impacket import ImpactDecoder, ImpactPacket
  
def main():
  
    if len(sys.argv) = 1:
        # Calculate its checksum.
        seq_id = seq_id + 1
        tcp.set_th_seq(seq_id)
        tcp.calculate_checksum()
  
        # Send it to the target host.
        s.sendto(ip.get_packet(), (dst,80))
        cnt= cnt -1
  
if __name__ == '__main__':
    main()


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn