Go Down

Topic: Bypassing facebooks IM filtering. (Read 348 times) previous topic - next topic

cjdelphi

You'll find that "Certain" websites are blocked and you can't share the content no matter how great the video is lol, it reminded me of the time yahoo chat was around I wrote a tool which encoded a string / decoded it back, very simple stuff, the idea was not to keep the url safe but to make it infact easy to decode thus bypassing the filters.

So i wrote an app to do just that years ago, today I updated it removing the [yurl] tags etc cleaned it up recompiled and upload and in memory of yahoo chat, i'll keep the binary's orginal name YUrl.exe

How's it work, enter a string, it spits out a string (Both ways)

EG

hello becomes ayhhv
www.google.com  becomes  sss3ovvohy3evz

The idea is you copy the encoded version into facebook's IM box the other person decodes it and off they go to the "spammy" or banned website.

If you want the tool, I uploaded it to my box account.

https://app.box.com/s/mul6yy83q7vullfjrl0t

Any bugs let me know, the main bulk of the code I wrote to do this is here.

Code: [Select]

unit cjencrypt;

interface

Uses Windows,Classes,Sysutils;


Const KeyEncArray: Array[1..78,1..2] of Char = (('!','7'),('"','-'),('#','2'),('$',','),('%','$'),('&','6'),('''','#'),('(','+'),(')','%'),('*','9'),('+','8'),(',','!'),('-','*'),('.','3'),('/',':'),('0','4'),('1','/'),('2',''''),('3',')'),('4','&'),('5','5'),('6','"'),('7','('),('8','.'),('9','1'),(':','0'),('a','t'),('b','r'),('c','e'),('d','c'),('e','y'),('f','p'),('g','o'),('h','a'),('i','n'),('j','m'),('k','i'),('l','h'),('m','z'),('n','d'),('o','v'),('p','x'),('q','k'),('r','j'),('s','l'),('t','q'),('u','b'),('v','f'),('w','s'),('x','w'),('y','g'),('z','u'),('A','Z'),('B','R'),('C','J'),('D','V'),('E','Y'),('F','L'),('G','M'),('H','C'),('I','N'),('J','U'),('K','T'),('L','E'),('M','Q'),('N','O'),('O','S'),('P','F'),('Q','X'),('R','W'),('S','H'),('T','B'),('U','D'),('V','I'),('W','G'),('X','K'),('Y','P'),('Z','A'));

//Const KeyNumericArray: Array[1..26,1..2] of Char = (('!','7'),('"','-'),('#','2'),('$',','),('%','$'),('&','6'),('''','#'),('(','+'),(')','%'),('*','9'),('+','8'),(',','!'),('-','*'),('.','3'),('/',':'),('0','4'),('1','/'),('2',''''),('3',')'),('4','&'),('5','5'),('6','"'),('7','('),('8','.'),('9','1'),(':','0'));
//Const KeyLowerAlphaArray: Array[1..26,1..2] of Char = (('a','t'),('b','r'),('c','e'),('d','c'),('e','y'),('f','p'),('g','o'),('h','a'),('i','n'),('j','m'),('k','i'),('l','h'),('m','z'),('n','d'),('o','v'),('p','x'),('q','k'),('r','j'),('s','l'),('t','q'),('u','b'),('v','f'),('w','s'),('x','w'),('y','g'),('z','u'));
//Const KeyUpperArray: Array[1..26,1..2] of Char = (('A','Z'),('B','R'),('C','J'),('D','V'),('E','Y'),('F','L'),('G','M'),('H','C'),('I','N'),('J','U'),('K','T'),('L','E'),('M','Q'),('N','O'),('O','S'),('P','F'),('Q','X'),('R','W'),('S','H'),('T','B'),('U','D'),('V','I'),('W','G'),('X','K'),('Y','P'),('Z','A'));

Type TEncrypt = Class(Tobject)
   Public
    Constructor Create;
    Destructor Destroy;
    Procedure FillArray;
    Function ShuffleAndCreateArray: String;
    function ShuffleAndCreateArray2: String;
    function ShuffleAndCreateArray3: String;   
    Function EncryptStr(Str: String): String;
    Function DecryptStr(Str: String): String;
    Function LookUp(C: Char): Char;
   Private
     KeyArray: Array[1..26,1..2] of Char;
    function RevLookUp(C: Char): Char;
   Published
End;



implementation

{ TEncrypt }

constructor TEncrypt.Create;
begin

end;

function TEncrypt.DecryptStr(Str: String): String;
Var
N: Integer;
C: Char;
begin
For N:=1 to Length(Str) Do
   Begin
    C:=Str[N];
    Str[N]:=RevLookUp(C);
   End;
Result:=Str;   
end;

destructor TEncrypt.Destroy;
begin

end;

function TEncrypt.EncryptStr(Str: String): String;
Var
N: Integer;
C: Char;
begin
For N:=1 to Length(Str) Do
   Begin
    C:=Str[N];
    C:=LookUp(C);
    Str[N]:=C;
   End;
Result:=Str;   
end;

procedure TEncrypt.FillArray;
begin

end;

function TEncrypt.RevLookUp(C: Char): Char;
Var
  N: Integer;
begin
// C:=LowerCase(C
Result:=C;
For N:=1 to High(KeyEncArray) do
  Begin
   If KeyEncArray[N,2]=C Then
    Begin
     Result:=KeyEncArray[N,1];
     Break;
    End;
  End;
end;

function TEncrypt.LookUp(C: Char): Char;
Var
  N: Integer;
begin
// C:=LowerCase(C
Result:=C;
For N:=1 to High(KeyEncArray) do
  Begin
   If KeyEncArray[N,1]=C Then
    Begin
     Result:=KeyEncArray[N,2];
     Break;
    End;
  End;
end;

function TEncrypt.ShuffleAndCreateArray: String;
Var
R,R2,N2,N: Integer;
C1,C2: Char;
Tmp: String;
begin
Randomize;
Result:='';
For N:=1 to 26 do
  Begin
   KeyArray[N,1]:=Chr(N+96);
   KeyArray[N,2]:=Chr(N+96);
  End;

For N:=1 to 26 do
  for N2:=1 to 26 Do
    Begin
     R:=Random(26)+1;
     R2:=Random(26)+1;
     C1:=KeyArray[R,2];
     C2:=KeyArray[R2,2];
     KeyArray[R,2]:=C2;
     KeyArray[R2,2]:=C1;
    End;

//Const KeyArray: Array[1..2,1..2]
//of Char = (('a','a'),('b','b'));

Result:='Const KeyArray: Array[1..26,1..2] of Char = (';
For N:=1 to 26 Do
   Begin
    Tmp:='(''';
    Tmp:=Tmp+KeyArray[N,1]+''''+','+''''+KeyArray[N,2]+''''+'),';
    Result:=Result+Tmp;
   End;
SetLength(Result,Length(Result)-1);
Result:=Result+');';
end;

function TEncrypt.ShuffleAndCreateArray3: String;
Var
R,R2,N2,N: Integer;
C1,C2: Char;
Tmp: String;
begin
Randomize;
Result:='';
For N:=1 to 26 do
  Begin
   KeyArray[N,1]:=Chr(N+64);
   KeyArray[N,2]:=Chr(N+64);
  End;

For N:=1 to 26 do
  for N2:=1 to 26 Do
    Begin
     R:=Random(26)+1;
     R2:=Random(26)+1;
     C1:=KeyArray[R,2];
     C2:=KeyArray[R2,2];
     KeyArray[R,2]:=C2;
     KeyArray[R2,2]:=C1;
    End;

//Const KeyArray: Array[1..2,1..2]
//of Char = (('a','a'),('b','b'));

Result:='Const KeyArray: Array[1..26,1..2] of Char = (';
For N:=1 to 26 Do
   Begin
    Tmp:='(''';
    Tmp:=Tmp+KeyArray[N,1]+''''+','+''''+KeyArray[N,2]+''''+'),';
    Result:=Result+Tmp;
   End;
SetLength(Result,Length(Result)-1);
Result:=Result+');';
end;


function TEncrypt.ShuffleAndCreateArray2: String;
Var
R,R2,N2,N: Integer;
C1,C2: Char;
Tmp: String;
begin
Randomize;
Result:='';
For N:=1 to 26 do
  Begin
   KeyArray[N,1]:=Chr(N+32);
   KeyArray[N,2]:=Chr(N+32);
  End;

For N:=1 to 26 do
  for N2:=1 to 26 Do
    Begin
     R:=Random(26)+1;
     R2:=Random(26)+1;
     C1:=KeyArray[R,2];
     C2:=KeyArray[R2,2];
     KeyArray[R,2]:=C2;
     KeyArray[R2,2]:=C1;
    End;

//Const KeyArray: Array[1..2,1..2]
//of Char = (('a','a'),('b','b'));   

Result:='Const KeyArray: Array[1..26,1..2] of Char = (';
For N:=1 to 26 Do
   Begin
    Tmp:='(''';
    Tmp:=Tmp+KeyArray[N,1]+''''+','+''''+KeyArray[N,2]+''''+'),';
    Result:=Result+Tmp;
   End;
SetLength(Result,Length(Result)-1);
Result:=Result+');';
end;


end.



It's messy, but i'm working on a Java application with remote send text capability, may even throw in an Arduino for fun :)

wizdum

Would be good for eBay as well. eBay prevents you from sending people email addresses, or posting URLs in listings. A client-side browser plugin that decrypted this would make it even more awesome.
"Anyone who isn't confused really doesn't understand the situation."

Electronic props for Airsoft, paintball, and laser tag -> www.nightscapetech.com

Go Up