Perbedaan Indy 9 Dengan Indy 10 di Delphi 7

Sekedar bagi bagi info aja :))) tadi pagi nyoba convert Pilot indy 10 ke indy 9. Meskipun hasilnya masih zonk alias gagal total :3 nah sekarang gue mau ngasih tau perbedaanya biar kalian rada ada pencerahan kalau punya masalah seperti yang ane alamin :)



Pertama, Perbedaan Requestnya. Di sini tempat payload diletakkan :)

Indy 9
procedure TForm1.IdMappedPortTCP1Execute(AThread: TIdMappedPortThread); var payload : string; begin if (pos('CONNECT',Athread.NetData)<>0) then begin pilot := 'GET http://bug.com/ HTTP/1.1' + #13#10 + 'Host: bug.com' #13#10; Athread.Netdata := Athread.Netdata + payload; //FRONT Athread.netdata := payload + Athread.Netdata; //BACK Athread.Netdata := Athread.Netdata + payload + Athread.Netdata; // Middle (FRONT-BACK) end; end;
Indy 10
procedure TForm1.IdMappedPortTCP1Execute(AContext: TIdContext); var Netdata, payload : string; begin if (Pos('CONNECT',netstring(AContext)) <> 0) then begin Netdata := netstring(AContext); //MEMASUKKAN NETDATA TIDBYTES KE DALAM VARIABEL NETDATA STRING payload := 'GET http://fornesia.com/ HTTP/1.1' + #13#10 + 'Host: fornesia.com' #13#10; netdata := netdata + payload; //FRONT netdata := payload + netdata; //BACK netdata := netdata + payload + netdata; // Middle (FRONT-BACK) TIdMappedPortContext(AContext).NetData := netbyte(netdata); //MENGUBAH DAN MENGIRIM NETDATA STRING KE NETDATA ASLI TIDBYTES end; end;
Kedua, Perbedaan Response. Biasanya disini digunakan untuk replace :)

Indy 9
procedure TForm1.IdMappedPortTCP1OutboundData(AThread: TIdMappedPortThread); begin if POS ('403 Forbidden', AThread.NetData) <> 0 then begin AThread.NetData := StringReplace(AThread.NetData,'403 Forbidden','200 OK',[rfReplaceAll]); end; end;
Indi 10
procedure TForm1.IdMappedPortTCP1OutboundData(AContext: TIdContext); begin if (Pos('403 Forbidden',netstring(AContext)) <> 0) then begin TIdMappedPortContext(AContext).NetData := netbyte(StringReplace(netstring(AContext),'403 Forbidden','200 OK',[rfReplaceAll])); end; end;
Ketiga, Perbedaan Direct Request. Yang satu ini ane kurang paham, soalnya belum pernah nyoba dikarenakan kalau buat inject biasanya cuma Request dan Response.

Indy 9
AThread.OutboundClient.Write(AThread.NetData); AThread.OutboundClient.Write(payload); AThread.NetData:='';
Indy 10
TIdMappedPortContext(AContext).OutboundClient.IOHandler.Write(netbyte(netdata));​ TIdMappedPortContext(AContext).OutboundClient.IOHandler.Write(netbyte(payload));​​ TIdMappedPortContext(AContext).NetData := netbyte('');
Dan di indy 10 ada penambahan Uses dan Function.
Penambahan uses
IdContext, IdCoder, IdCoder3to4, IdCoderMIME, IdGlobal
Penambahan function
function netstring(B : TidContext): string; var S : String; begin S := TIdEncoderMIME.EncodeBytes(TIdMappedPortContext(B).NetData); //Base64 S := TIdDecoderMIME.DecodeString(S); //String Result := S; end; dan
function netbyte(S : string) : TIdBytes; var B : TIdBytes; begin S := TIdEncoderMIME.EncodeString(S); //Base64 B := TIdDecoderMIME.DecodeBytes(S); //TIdBytes Result := B; end;
Sekian ilmu yang bisa saya share :) kalau ada yang di tanyakan kontak langsung atau bertanya di komentar :)

Sumber : Fornesia
Sekian dan jangan lupa berkunjung kembali :D

4 Responses to Perbedaan Indy 9 Dengan Indy 10 di Delphi 7

Don't give us spam!!!