PDA

Просмотр полной версии : Создать пакет на win RAW Socket


mal4Ik
09.05.2010, 19:10
Как взаимодействовать с TCP заголовком отсылаемого пакета, а именно мне нужно самому изменять sequenceNumber и acknowledgeNumber в TCP заголовке пакета.

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

slesh
09.05.2010, 19:21
а смысл? подделка TCP пакета сейчас тебе мало что даст потому что винда врядли выпустит его. так что юзать надо дрова или спец либы (с темеже дровами)

mal4Ik
09.05.2010, 22:32
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