Создать пакет на win RAW Socket

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by mal4Ik, 9 May 2010.

  1. mal4Ik

    mal4Ik Banned

    Joined:
    12 Feb 2007
    Messages:
    10
    Likes Received:
    5
    Reputations:
    0
    Как взаимодействовать с TCP заголовком отсылаемого пакета, а именно мне нужно самому изменять sequenceNumber и acknowledgeNumber в TCP заголовке пакета.

    Если у кого есть, на любом языке, киньте примерчик. :)
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    а смысл? подделка TCP пакета сейчас тебе мало что даст потому что винда врядли выпустит его. так что юзать надо дрова или спец либы (с темеже дровами)
     
  3. mal4Ik

    mal4Ik Banned

    Joined:
    12 Feb 2007
    Messages:
    10
    Likes Received:
    5
    Reputations:
    0
    Code:
    Structure  TCPHeader 
        sourcePort.w        ; порт отправителя 
        destinationPort.w   ; порт назначения 
        sequenceNumber.l    ; номер последовательности 
        acknowledgeNumber.l ; номер подтверждения 
        dataoffset.b        ; смещение на область данных 
        flags.b             ; флаги 
        windows.w           ; размер окна 
        checksum.w          ; контрольная сумма 
        urgentPointer.w     ; срочность 
    EndStructure 
    
    Global addr1.SOCKADDR_IN
    
    If InitNetwork() 
      ExamineIPAddresses() 
      IPnet=NextIPAddress() 
    EndIf 
    
                socket1 = SOCKET_(#AF_INET, #SOCK_RAW, #IPPROTO_TCP)
                addr1\sin_family = #AF_INET 
                addr1\sin_addr = IPnet
                addr1\sin_port = htons_(81)
                headtcp.TCPHeader\acknowledgeNumber=123
                headtcp.TCPHeader\checksum=0
                headtcp.TCPHeader\dataoffset=0
                headtcp.TCPHeader\destinationPort=htons_(80)
                headtcp.TCPHeader\flags=0
                headtcp.TCPHeader\sequenceNumber=321
                headtcp.TCPHeader\sourcePort=htons_(81)
                headtcp.TCPHeader\urgentPointer=0
                headtcp.TCPHeader\windows=0
                bind_(socket1, @addr1, SizeOf(SOCKADDR_IN))
                Debug sendto_(socket1, headtcp, SizeOf(TCPHeader), 0, @addr1, SizeOf(SOCKADDR_IN))
                closesocket_(socket1)
    пробую отослать любой пакет, но в результате -1 ERROR :(
    пишу на PureBasic