Socket API hides its true IP

xiaoxiao2021-03-06  20

Here is an example of using Raw Socket to manage IP headers and udp headers ~~~~~ UDP hidden your IP is easy, but TCP is difficult because it must be established with the remote host ~~~~~~~~ ` How do IP addresses establish a connection? ? ?

Interface

Uses Windows, Messages, Sysutils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls, Winsock2, Yystems

type TForm1 = class (TForm) Button1: TButton; edtDestIP: TEdit; edtFromIP: TEdit; edtDestPort: TEdit; edtFromPort: TEdit; ListBox1: TListBox; procedure FormCreate (Sender: TObject); procedure FormClose (Sender: TObject; var Action: TCloseAction ); Procedure button1click (sender: TOBJECT); private {private declarations} end Download Aden, Ltd. (PUBLIC DECLATION)

Var Form1: TFORM1;

IMPLEMENTATION

{$ R * .dfm}

Function checksum (p: pu16; size: u16): u16; var chksum: u32; pbuf: pu16; begin PBUF: = P; chksum: = 0;

While size> 1 do begin chksum: = chksum PBUF ^; Inc (PBUF); DEC (Size, SizeOf (U16)); END;

IF size = 1 Then Chksum: = CHKSUM PBYTE (PBUF) ^;

Chksum: = (CHKSUM SHR 16) (CHKSUM AND $ FFF); Chksum: = Chksum (Chksum SHR 16); Chksum: = NOT Chksum; Result: = U16 (Chksum);

// Fill IP HeaderProcedure Fillipheader (PIP: Pipheader; TTL: U8; DATALEN: U32; Proto: U8; Destip, Fromip: U32); VAR B: U8; W: U16; Begin B: = 4; Pip ^ .u8verlen: = (B shl 4) or (Sizeof (Yipheader) Div Sizeof (U32)); PIP ^ .u8tos: = 0;

W: = u16 (Yudpheader) Datalen; Pip ^ .U16TOTALLEN: = HTONS (W); PIP ^ .U16ID: = U16 (GetCurrentProcessid); Pip ^ .u16offset: = Htons (1 shl 14); // DO NOT FRAGMENT PIP ^ .u8ttl: = TTL; Pip ^ .u8protol: = Proto; Pip ^ .u16Checksum: = 0; Pip ^ .u32srcaddr: = fromip; pip ^ .u32destaddr: = destip; pip ^ .u16checksum: = Checksum (pu16 (pip), sizeof (yiphead)); end; // Plug UDP header Procedure Fillududpheader (pudp: pudpheader; Datalen: U32; Destport, FromPort: U32); var B: u8; W: U16 Begin pudport: = fromport; pudp ^ .U16DESTPORT: = DESTPORT; pudp ^ .u16len: = HTONS (Sizeof (Yudpheader) Datalen; Pudp ^ .u16chksum: = 0; END;

Procedure errmsg (MSG: String); Begin MessageBox (0, Pchar (MSG), 'Ping Program Error', MB_ICONERROR); END;

Procedure TForm1.FormCreate (Sender: Tobject); Var WSA: TWSADATA; Begin IF Wsastartup ($ 0202, WSA) <> 0 Then Errmsg ('Windows Socket IS Not Responed.');

Procedure TForm1.FormClose (Sender: TpoBject; VAR Action: Tclosection); Begin IF WSACLEANUP <> 0 Then Errmsg ('Windows Socket CAN NOT BE CLOSED.'); END;

procedure TForm1.Button1Click (Sender: TObject); var udpsock: TSocket; opt: s32; DestAdr, FromAdr: TSockAddr; pIPHdr: PIPHeader; pUDPHdr: PUDPHeader; pDataBuf: PChar; begin // Create a transmitting probe packets UDPSOCK udpsock: = socket (AF_INET, SOCK_RAW, IPPROTO_UDP);

// Set the socket option - We can do your own IP header opt: = 1; setsockopt (udpsock, ipproto_ip, ip_hdrincl, @opt, sizeof (opt));

// for the IP Header / UDP header / Data buf allocate memory pIPHdr: = AllocMem (sizeof (YIPHeader) sizeof (YUDPHeader) PACKET_SIZE); pUDPHdr: = PUDPHeader (PChar (pIPHdr) sizeof (YIPHeader)); pDataBuf: = PChar (pUDPHdr) sizeof (YUDPHeader); // local Addr FillChar (FromAdr, sizeof (FromAdr), 0); FromAdr.sin_family: = AF_INET; FromAdr.sin_port: = htons (StrToInt (edtFromPort.text)); FromAdr. SIN_ADDR.S_ADDR: = INET_ADDR (Pchar (EDTFROMIP.TEXT));

// remote Addr FillChar (DestAdr, sizeof (DestAdr), 0); DestAdr.sin_family: = AF_INET; DestAdr.sin_port: = htons (StrToInt (edtDestPort.text)); DestAdr.sin_addr.S_addr: = inet_addr (PChar (edtDestIP .TEXT));

// populate the IP header and UDP header FillIPHeader (pIPHdr, 55, PACKET_SIZE, IPPROTO_UDP, DestAdr.sin_addr.S_addr, FromAdr.sin_addr.S_addr); FillUDPHeader (pUDPHdr, PACKET_SIZE, DestAdr.sin_port, FromAdr.sin_port); FillChar (pDataBuf ^ , Packet_size, 'y');

// Send UDP to Host Sendto (udpsock, piphdr ^, sizeof (yipheader) sizeof (yudpheader) packet_size, 0, destadr, sizeof (destadr));

Listbox1.items.add ('Send' INTSTOSTR (RET) 'byte to:' edtdestip.text); ClosSocket (UDPSOCK); FreeMem (PipHDR);

End.

转载请注明原文地址:https://www.9cbs.com/read-43502.html

New Post(0)