Page 1 of 2 12 LastLast
Results 1 to 25 of 34

Thread: My approach at making simba produce more human like mouse movements

  1. #1
    Join Date
    Apr 2012
    Location
    UK
    Posts
    269
    Mentioned
    2 Post(s)
    Quoted
    46 Post(s)

    Default My approach at making simba produce more human like mouse movements

    Hi all, I have been playing around with the mouse movements from simba for the last couple of days and I wanted to show you what I have managed to make. I would just like to get your opinion on them compared to the standard mmouse. I have used Borland_Iron_Ores script as an example and modified it so the rest times and mouse movements are completely different.






    Code:
    program Iron_Ore_pro;   { Version: 2.3 }
    {$i AeroLib/AeroLib.Simba}
    
    const
      UseAntiBan     = True;  //Set True if you wish to use antiban (Highly recommended!!!)
      MinesOreAmount = 999999;  //How many ores to mine? 1 ore = 35 exp
      MouseStyle     = 1;      //0 = Accurate (straighter), 1 = Random line path
    
      MAX_MINE_TIME = 5400;    {Maximum time it takes for you to mine an ore
                                if it disappaers right as you start mining it lower
                                this value to 1800. If the script tries to mine another
                                rock before the current one is finished increase this
                                value by 1200 till that's no longer an issue.}
    type
      TExpLabel = Integer;
      TExperience = record
        Start, Last : TExpLabel;
        OreDropped  : TExpLabel;
        BeforeMining: TExpLabel;
      end;
    
      TOreInt = Integer;
      TOrePoint = TPoint;
      TOreTPA = TPointArray;
      TOreATPA = Array of TOreTPA;
      TOre = record
        tCol    : TColEx;
        ToDrop  : TOreInt;
        Failures: TOreInt;
        Dropping: Boolean;
    
        Point   : TOrePoint;
        MSPoints: TOreTPA;
        TPA     : TOreTPA;
        ATPA    : TOreATPA;
      end;
    
    var
      Experience: TExperience;
      Ore: TOre;
      Fails: Integer;
      timerProggy: Timer;
    
    const
      VERSION = 23;
    
    procedure ClassicMouse(x, y, ranx, rany: Integer);
    begin
      case MouseStyle of
        0: accurateMMouse(Point(x+Random(ranx), y+Random(rany)),0,0);
        1: humanmmouse(Point(x+Random(ranx), y+Random(rany)),0,0);
      end;
    end;
    
    function timerProggy.Ready: Boolean;
    begin
      Result := timerProggy.timeElapsed > 60000;
    end;
    
    function TExperience.Bar: Integer;
    begin
      Result := getXPBarAmount;
    end;
    
    procedure TExpLabel.setBar;
    begin
      Self := TExperience.Bar;
    end;
    
    function TExpLabel.BarDifference: Integer;
    begin
      Result := TExperience.Bar - Self;
    end;
    
    function TExpLabel.MoreThanBar: Boolean;
    begin
      Result := Self > Experience.Bar;
    end;
    
    function TExpLabel.LessThanBar: Boolean;
    begin
      Result := Self < Experience.Bar;
    end;
    
    function TExperience.Gained: Integer;
    begin
      Result := Experience.Start.BarDifference;
    end;
    
    function TExperience.PerHour: Integer;
    begin
      Result := Floor((Experience.Gained/((GetTimeRunning)/1000))*3600);
    end;
    
    procedure ReportLog;
    var
      h, m, s: Integer;
    begin
      if GetTimeRunning > 5000 then
      begin
        ConvertTime(GetTimeRunning, h, m, s);
        Writeln('---------------- Iron Ore Pro ----------------');
        Writeln('|  Script Has Run For : ',h,':',m,':',s);
        Writeln('|  Iron Ore Mined     : ',Experience.Gained/35);
        Writeln('|  Experience Gained  : ',Experience.Gained);
        Writeln('|  Experience Per Hour: ',Experience.PerHour);
        Writeln('--------------------- End --------------------');
      end;
    end;
    
    procedure StopScript(Reason: String);
    begin
      ReportLog;
      Writeln('====== '+(TheTime)+': Script stopped. Reason: '+Reason+' ======');
      logoutPlayer;
      TerminateScript;
    end;
    
    procedure TOreInt.Reset;
    begin
      Self := 1;
    end;
    
    function TOreInt.Present: Boolean;
    begin
      Result := itemInSlot(Self);
    end;
    
    function TOreInt.Present(Slot: Integer): Boolean; Overload;
    begin
      Result := itemInSlot(Slot);
    end;
    
    procedure TOreInt.Flip;
    begin
      Case Self of
        1: Self := 5;
        5: Self := 1;
      end;
    end;
    
    procedure TOreTPA.Clear;
    begin
      SetLength(Self, 0);
    end;
    
    procedure TOreATPA.Clear;
    begin
      SetLength(Self, 0);
    end;
    
    procedure TOre.Init();
    begin
      Self.tCol.create(1713728, 12, 0.12, 0.78);
      Self.ToDrop.Reset;
    end;
    
    function TOre.Find: Boolean;
    var
      TempATPA: T2DPointArray;
      i,ii,tmpCTS: Integer;
    begin
      Self.ATPA.Clear;
      Self.TPA.Clear;
    
      Self.tCol.findAllIn(AREA_MS, Ore.TPA);
      if Length(Ore.TPA) = 0 then
      begin
        Exit(False);
      end;
      Result := True;
    
      TempATPA := ClusterTPA(Self.TPA,12);
    
      for i := 0 to High(TempATPA) do
        if Length(TempATPA[i]) > 1000 then
          Self.ATPA := Self.ATPA + TempATPA[i];
    end;
    
    function TOreTPA.getPoint: TPoint;
    var
      RandomPoint, MidPoint: TPoint;
    begin
      if Length(Self) < 1 then
        Exit;
    
      MidPoint := MiddleTPA(Self);
      RandomPoint := Self[Random(0,High(Self))];
    
      case MidPoint.X > RandomPoint.X of
        True : RandomPoint.X := Random(RandomPoint.X, MidPoint.X)-Random(2);
        False: RandomPoint.X := Random(MidPoint.X, RandomPoint.X)+Random(2);
      end;
    
      case MidPoint.Y > RandomPoint.Y of
        True : RandomPoint.Y := Random(RandomPoint.Y, MidPoint.Y)-Random(2);
        False: RandomPoint.Y := Random(MidPoint.Y, RandomPoint.Y)+Random(2);
      end;
    
      Result := RandomPoint;
    end;
    
    procedure TOre.setMSPoints;
    var
      i: Integer;
    begin
      if Self.Find then
      begin
        SortATPASize(Self.ATPA, True);
        Self.MSPoints.Clear;
    
        for i := 0 to High(Ore.ATPA) do
          Self.MSPoints := Self.MSPoints + Self.ATPA[i].getPoint;
      end else
        Self.MSPoints.Clear;
    end;
    
    function Ore.Mined: Boolean;
    var
      Timerrr: Timer;
    begin
      Result := False;
      if isInvFull then
        Exit(True);
      Timerrr.start;
    
      repeat
        if Experience.BeforeMining.LessThanBar then
          Result := True
        else
          Wait(50+Random(50));
      until((Result) or (Timerrr.timeElapsed > MAX_MINE_TIME));
    
      if Result then
        Ore.Dropping := Ore.ToDrop.Present(5);
    
      Result := True;
    end;
    
    procedure Randombreak;
    begin
      case Random(1000) of
        889: Wait(Random(10,100));
        725..730: Wait(Random(10,800));
        555..565: Wait(Random(1000,2000));
      end;
    end;
    
    procedure RandomMouse;
    begin
      case Random(1000) of
        889: pickUpMouse();
        725..730: MMouseOffClient('random');
        555..565: pickUpMouse();
      end;
    end;
    
    procedure AntiBan;
    begin
      if not UseAntiBan then
        Exit;
      case Random(4000) of
        889: Wait(Random(800,3000));
        725..730: MMouseOffClient('random');
        555..565: Wait(Random(1000,40000));
      end;
    end;
    
    procedure itemuse;
    var
     pnt:Tpoint;
     begin
     if waitUpTextMulti(['->'],1) then
     begin
          pnt := [540, 223];
          HumanMMouse(pnt, 5, 5);
          fastClick(Mouse_Left);
          wait(random(1000, 2000));
          end else
          exit;
        end;
    
    procedure Ore.DropSingle(Slot: Integer);
    begin
      if not Ore.ToDrop.Present then
        Exit;
    
      mouseSpeed := random(25, 85);
      interactSlot(Slot, Mouse_Move);
      if waitUpTextMulti(['Iron',' ore','cut'],1200) then
      begin
        Antiban;
        Randombreak;
        Wait(Random(5,210));
        KeyDown(VK_SHIFT);
        Randombreak;
        Wait(Random(5,300));
        fastClick(Mouse_Left);
        Wait(Random(1,120));
        KeyUp(VK_SHIFT);
        Antiban;
        RandomMouse;
        sleepAndMoveMouse(100 + random(500));
        //Ore.ToDrop.Reset;
      end;
    end;
    
    procedure Ore.Drop;
    begin
      if not Ore.ToDrop.Present then
      begin
        while(not(Ore.Mined)) do
          Wait(10+Random(10));
        Exit;
      end;
      Ore.Dropping := Ore.ToDrop.Present(5);
    
      interactSlot(Ore.ToDrop, Mouse_Move);
    
      if waitUpTextMulti(['Iron',' ore','cut'],1200) then
      begin
      antiban;
        while(not(Ore.Mined)) do
          Wait(10+Random(10));
    
        if (Ore.Dropping) and (Experience.OreDropped.LessThanBar) then
        begin
          Ore.DropSingle(Ore.ToDrop);
          Ore.ToDrop.Flip;
          Experience.OreDropped.setBar;
          Ore.Failures := 0;
        end;
      end else
        if itemInSlot(Ore.ToDrop) then
          //StopScript('Move unknown item from slots 1 & 5 inventory');
    end;
    
    function Ore.Mine: Boolean;
    var
      i, RanI: Integer;
      OrePoints: TPointArray;
      RandomOrePoint: TPoint;
    begin
      Result := False;
      Ore.Dropping := Ore.ToDrop.Present(5);
      Ore.setMSPoints;
      OrePoints := Ore.MSPoints;
    
      if Length(OrePoints) > 0 then
      begin
      antiban;
        for i := 0 to High(OrePoints) do
        begin
          RanI := I+(Random(High(OrePoints)-I));
          RandomOrePoint := OrePoints[Rani];
    
          mouseSpeed := random(25, 85);
          ClassicMouse(RandomOrePoint.x-1, RandomOrePoint.y-1, 3, 3);
          Wait(Random(100,180));
          itemuse;
          if waitUpTextMulti(['Mine','ine R', ' ocks'],600) then
          begin
            Antiban;
            Experience.BeforeMining.setBar;
            fastClick(Mouse_Left);
            Wait(Random(1,100));
            Antiban;
            RandomMouse;
            sleepAndMoveMouse(100 + random(500));
            Exit(True);
          end else
          begin
            Inc(Ore.Failures);
            Ore.setMSPoints;
            OrePoints := Ore.MSPoints;
          end;
        end;
      end else
        if Ore.Failures > 30 then
          StopScript('Failed to find ores after 30 tries.');
    end;
    
    procedure Checks;
    begin
    
      Antiban;
    
      if not isLoggedIn then
        StopScript('We are not logged in');
    
      if Experience.Start.BarDifference / 35 >= MinesOreAmount then
        StopScript('Mined desired number of iron ore');
    
      if Fails >= 15 then
        StopScript('Too many failures detetcted');
    
      if timerProggy.Ready then
      begin
        ReportLog;
        if Experience.Last >= Experience.Bar then
          //StopScript('We have not gained any experience in a whole minute.')
        else
          Experience.Last.setBar;
    
        timerProggy.start;
      end;
    end;
    
    procedure SetupScript;
    begin
      initAL;
      mouseSpeed := 30;
      ActivateClient;
      if not isLoggedIn then
        StopScript('We are not logged in');
    
      timerProggy.start;
      Experience.Start.setBar;
      Experience.Last := Experience.Start;
      Experience.OreDropped := Experience.Start;
    
      Ore.Init;
      Ore.setMSPoints;
    
      while not isInvFull do
        if Ore.Mine then
          while(not(Ore.Mined)) do
            Wait(Random(125,250));
    
      if isInvFull then
        Ore.DropSingle(5);
    
    end;
    
    begin
      SetupScript;
    
      repeat
        if clickContinueEx(False) then
          Ore.DropSingle(5);
    
        if Ore.Mine then
          Ore.Drop;
    
        Checks;
      until(False);
    
    end.
    Attached Files Attached Files
    Last edited by tristen8878; 01-13-2018 at 07:13 PM.

  2. #2
    Join Date
    Sep 2014
    Location
    C:\Simba\
    Posts
    565
    Mentioned
    9 Post(s)
    Quoted
    71 Post(s)

    Default

    Oh man this looks like genuine mouse movements.
    Mind sharing?
    Feel free to ask me any questions, I will do my best to answer them!

    Previously known as YouPee.

  3. #3
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    @tristen8878, because you didn't provide any code we can't tell that you actually produced a method of mouse movement that looks human like. The long explanation (for e.g. a lay audience) at the beginning makes your video look like hoax videos that will sometimes pop up requesting donations for phone modding and so on.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  4. #4
    Join Date
    Apr 2012
    Location
    UK
    Posts
    269
    Mentioned
    2 Post(s)
    Quoted
    46 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    @tristen8878, because you didn't provide any code we can't tell that you actually produced a method of mouse movement that looks human like. The long explanation (for e.g. a lay audience) at the beginning makes your video look like hoax videos that will sometimes pop up requesting donations for phone modding and so on.
    Ye I understand, am currently at work at this moment in time so can't really explain but when I get home I will post a more in depth analysis and provide code to back up my video, but for now the short answer I basically combined sleepandmovemouse function and the pickup mouse function and put them into one aswell as the normal humanmmouse running. I created a procedure like how a antiban one works and set it so it would choose randomly how the mouse would move.

    Sorry for the lack of code :/

  5. #5
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    I'm sure a few other people restrained themselves from posting due to not wanting to demotivate you; many of us believe that mouse movements don't actually play a part in bot detection.

  6. #6
    Join Date
    Apr 2012
    Location
    UK
    Posts
    269
    Mentioned
    2 Post(s)
    Quoted
    46 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    I'm sure a few other people restrained themselves from posting due to not wanting to demotivate you; many of us believe that mouse movements don't actually play a part in bot detection.
    I understand at some point this will have been brought up as originally I was thinking maybe I should of not posted it as it might not be interesting or worth investing my time in but I just wanted to get peoples opinion on whether they thought it looked human or was at all a improvement over the standard humanmmouse.

  7. #7
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    [...] many of us believe that mouse movements don't actually play a part in bot detection.
    I'm interested in his code partly because I can't think of a good way to analyze mouse movements. The more algorithms that are available the better we can make future algorithms. His algorithm looks fairly good, but just by eyeing it it does seem slightly unnatural.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  8. #8
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    I'm interested in his code partly because I can't think of a good way to analyze mouse movements. The more algorithms that are available the better we can make future algorithms. His algorithm looks fairly good, but just by eyeing it it does seem slightly unnatural.
    Based on how AI classifiers work. It'd be as simple as collecting a bunch of data and identifying which is *real* player data. Classifying mouse movement data (IMO) just isn't feasible. There's too much ("move" data) and it's too varying to do it efficiently without causing false positives, even though it might in-fact get some true positives. This is even before applying different constructs such as gaming mouse profiles (https://i.imgur.com/AKGd8xj.png). Professional gamers also have insanely efficient mouse paths which can also make it exceedingly harder to variate from bots.

    Here is one example of a mouse profile option (freemove) that i have on my mouse. (On being max or 100%, Off being 0). https://i.imgur.com/1C0PTIb.png
    I drew both those lines by hand with the pencil tool. By using this profile, am i a bot? certainly not.

    Keep in mind, RS can also be played on touchscreen devices, (soon mobile). Which AFAIK, won't require mouse movements.

    Whilst mouse movements can still be used in classifiers, (maybe random forest), i doubt it brings much variation between legit players and botters for it to be considered.

    TLDR; fancy mouse movements are a scam.
    Last edited by Kasi; 12-15-2017 at 12:03 AM.

  9. #9
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    Yes, that's why I doubted they could create good detection methods. The main problem with classifiers is that you need to format the data in very specific ways, in the case of mouse movement, what do you use? The other is that running classifiers can be very expensive, even if you are only doing it for some subset of your playerbase.

    The option your mouse has is interesting. Which mouse do you have? That's something I had not considered that will make detection even harder.

    As it is, I think Jagex is using machine learning for bot detection. There are a high number of false positives now judging by RS-related forums I have looked at.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  10. #10
    Join Date
    Jan 2012
    Location
    Sydney, Australia
    Posts
    870
    Mentioned
    12 Post(s)
    Quoted
    361 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    Based on how AI classifiers work. It'd be as simple as collecting a bunch of data and identifying which is *real* player data. Classifying mouse movement data (IMO) just isn't feasible. There's too much ("move" data) and it's too varying to do it efficiently without causing false positives, even though it might in-fact get some true positives. This is even before applying different constructs such as gaming mouse profiles (https://i.imgur.com/AKGd8xj.png). Professional gamers also have insanely efficient mouse paths which can also make it exceedingly harder to variate from bots.

    Here is one example of a mouse profile option (freemove) that i have on my mouse. (On being max or 100%, Off being 0). https://i.imgur.com/1C0PTIb.png
    I drew both those lines by hand with the pencil tool. By using this profile, am i a bot? certainly not.

    Keep in mind, RS can also be played on touchscreen devices, (soon mobile). Which AFAIK, won't require mouse movements.

    Whilst mouse movements can still be used in classifiers, (maybe random forest), i doubt it brings much variation between legit players and botters for it to be considered.

    TLDR; fancy mouse movements are a scam.
    Could they not couple mouse movements with other red flags, essentially using it as an additional detection method?
    IE if a player has been doing a task for a long period of time, their patterns might be different from their first hour of play, compared to their second hour, or third hour etc.

  11. #11
    Join Date
    Dec 2011
    Posts
    2,142
    Mentioned
    221 Post(s)
    Quoted
    1067 Post(s)

    Default

    This video reminds me of RiD marketing with the Inception theme and quotes in the beginning, haha.

    Feasibility debates aside, there's strong anecdotal evidence a lot of us have: many combined years of botting consistently without any mouse movements, no bans. I stopped using mouse movements entirely when I shifted to scripting with ogLib a few years ago. There's a lot of conversation about this in that hardware mouse thread too.

    That said, it's always fun and can't hurt to explore this kind of stuff.

  12. #12
    Join Date
    Jan 2012
    Location
    Sydney, Australia
    Posts
    870
    Mentioned
    12 Post(s)
    Quoted
    361 Post(s)

    Default

    Quote Originally Posted by Clarity View Post
    This video reminds me of RiD marketing with the Inception theme and quotes in the beginning, haha.

    Feasibility debates aside, there's strong anecdotal evidence a lot of us have: many combined years of botting consistently without any mouse movements, no bans. I stopped using mouse movements entirely when I shifted to scripting with ogLib a few years ago. There's a lot of conversation about this in that hardware mouse thread too.

    That said, it's always fun and can't hurt to explore this kind of stuff.
    What mouse movement functions do you use at the moment in OSRS?

  13. #13
    Join Date
    Dec 2011
    Posts
    2,142
    Mentioned
    221 Post(s)
    Quoted
    1067 Post(s)

    Default

    Quote Originally Posted by Dan the man View Post
    What mouse movement functions do you use at the moment in OSRS?
    Teleporting mouse, no movement. Of course appropriate delays exist between clicks.
    No bans on OSRS as of yet. But I'm not doing anything they are watching closely (I think).

  14. #14
    Join Date
    Mar 2013
    Location
    Argentina
    Posts
    758
    Mentioned
    27 Post(s)
    Quoted
    365 Post(s)

    Default

    Im with clarity here, mouse movements dont make a difference in my opinion
    Formerly known as Undorak7

  15. #15
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    Yes, that's why I doubted they could create good detection methods. The main problem with classifiers is that you need to format the data in very specific ways, in the case of mouse movement, what do you use? The other is that running classifiers can be very expensive, even if you are only doing it for some subset of your playerbase.

    The option your mouse has is interesting. Which mouse do you have? That's something I had not considered that will make detection even harder.

    As it is, I think Jagex is using machine learning for bot detection. There are a high number of false positives now judging by RS-related forums I have looked at.
    Regarding mouse movements, i don't bot but when i do, i use teleporting too (The bot i've been working on (with Twinki) also solely incorporates teleporting movements and no splines). I haven't been banned either; I don't bot frequently enough for it to be considered IMO. I believe detection is weighed much more heavily on delays rather than movement.

    I own: https://steelseries.com/gaming-mice/sensei

    You need to also consider that a percentage of the people posting on forums / reddit are actually true positives. They are simply taking one last shot to see if they can get their account un-banned.


    Quote Originally Posted by Dan the man View Post
    Could they not couple mouse movements with other red flags, essentially using it as an additional detection method?
    IE if a player has been doing a task for a long period of time, their patterns might be different from their first hour of play, compared to their second hour, or third hour etc.
    this is what i meant by random forest. Different subset classifiers/regressions are used to identify whether several components of an account are bot-like. Shit like; location, playtime, client metrics, trade history? IP? action delays etc (just a guess at what they might be using). https://en.wikipedia.org/wiki/Random_forest
    Whatever the case, mouse movements vary waay too much to be considered a decent classifier/regression IMO. There's way too much accountability on mouse hardware and skillset. My dad for example, he takes decades moving the pointer to a certain part of the screen. On the other end, it's easy asf for me to lose track of a pointer if i blink on a pro-gamer's twitch stream.

    The point about the first hour compared to the second hour etc, is quite interesting. I've heard of a SRL'er who incorporated a fatigue modifier into their scripts (i forget who). We also have personalised player profiles like this in the bot that we're working on. Delays etc, change depending on how long the bot has been playing for / how long they've breaked for. I think it works quite well.

  16. #16
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    Regarding mouse movements, i don't bot but when i do, i use teleporting too (The bot i've been working on (with Twinki) also solely incorporates teleporting movements and no splines). I haven't been banned either; I don't bot frequently enough for it to be considered IMO. I believe detection is weighed much more heavily on delays rather than movement.
    Interesting, I'm glad people were able to check.

    Quote Originally Posted by Kasi View Post
    You need to also consider that a percentage of the people posting on forums / reddit are actually true positives. They are simply taking one last shot to see if they can get their account un-banned.
    I did. Some of them were people who explicitly set out to be banned while playing legitimately. The reason was to show that people are actually being falsely banned, and that people aren't usually posting for sympathy. Jagex might soon have a huge problem on their hands if they keep banning paying customers.

    Quote Originally Posted by Kasi View Post
    Different subset classifiers/regressions are used to identify whether several components of an account are bot-like. Shit like; location, playtime, client metrics, trade history? IP? action delays etc (just a guess at what they might be using). https://en.wikipedia.org/wiki/Random_forest
    Whatever the case, mouse movements vary waay too much to be considered a decent classifier/regression IMO. There's way too much accountability on mouse hardware and skillset. My dad for example, he takes decades moving the pointer to a certain part of the screen. On the other end, it's easy asf for me to lose track of a pointer if i blink on a pro-gamer's twitch stream.
    That's basically saying "machine learning will work great if you can get it to work great." The hard part is formatting the data to send it to the algorithm; it is easy to mention what might be relevant, but harder to actually scrape it and process it. Based on what people are saying it looks like this was so hard Jagex gave up. They might only be able to process events that generate network activity.

    Quote Originally Posted by Kasi View Post
    The point about the first hour compared to the second hour etc, is quite interesting. I've heard of a SRL'er who incorporated a fatigue modifier into their scripts (i forget who). We also have personalised player profiles like this in the bot that we're working on. Delays etc, change depending on how long the bot has been playing for / how long they've breaked for. I think it works quite well.
    That builds on the assumption that only the time between actions matters quite nicely. In general, though, anything that requires state in its operation will be costly to run and so Jagex might avoid it.
    Last edited by R0b0t1; 12-15-2017 at 04:33 PM.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  17. #17
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    That's basically saying "machine learning will work great if you can get it to work great." The hard part is formatting the data to send it to the algorithm; it is easy to mention what might be relevant, but harder to actually scrape it and process it. Based on what people are saying it looks like this was so hard Jagex gave up. They might only be able to process events that generate network activity.

    That builds on the assumption that only the time between actions matters quite nicely. In general, though, anything that requires state in its operation will be costly to run and so Jagex might avoid it.
    Sort of, but I also don't think it'd be hard to profile bots if you profile them on the correct variables. The only thing I'm really saying is that profiling on mouse movement data is not viable.

    Time between actions is probably more viable for sure. And I'm almost certain they do location based profiling too. I've watched a couple developer streams where they talked about looking into a certain area to monitor too. E.g, one stream I watched, they talked about monitoring flesh crawlers in the stronghold of security because those become green dragon bots. From this line alone, you can assume they track some sort of account history, and by extension it's not ridiculous to assume they also record actions and when they were done. Formatting this data can also be quite easily done depending on how their engine works. Writing some sort of AI wouldn't be insanely hard either, besides, they have an entire team banning bots at Jagex.

  18. #18
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    Sort of, but I also don't think it'd be hard to profile bots if you profile them on the correct variables. The only thing I'm really saying is that profiling on mouse movement data is not viable.
    Don't take this the wrong way, but you still are not saying much. Of course "it will work if you do the right thing." Why don't you think profiling mouse data is not viable? What constitutes mouse data? As people have mentioned, Jagex does seem to look at the speed of mouse clicks.

    Quote Originally Posted by Kasi View Post
    Time between actions is probably more viable for sure. And I'm almost certain they do location based profiling too. I've watched a couple developer streams where they talked about looking into a certain area to monitor too. E.g, one stream I watched, they talked about monitoring flesh crawlers in the stronghold of security because those become green dragon bots. From this line alone, you can assume they track some sort of account history, and by extension it's not ridiculous to assume they also record actions and when they were done. Formatting this data can also be quite easily done depending on how their engine works. Writing some sort of AI wouldn't be insanely hard either, besides, they have an entire team banning bots at Jagex.
    A recognized problem in machine learning is that it is hard to create viable models if you do not have all of the data that can be produced from a process. They might set a flag for "this account has been at X location Y percent of the time," but after that flag is set, the location data is lost and could not be fed to a machine learning algorithm. Summary statistics are better than nothing but may not be enough to generate good results.

    That they have an entire team of people dedicated to making it harder to pay them for their game is a strange thing indeed.
    Last edited by R0b0t1; 12-16-2017 at 01:35 AM.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  19. #19
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    ...
    I'm not saying mouse data. I'm saying mouse movement data. Mouse splines as such. The way you move your mouse between 2 points is useless, and i explained this in my earlier posts... It's has also been proven over the years, many of us have had no difference in ban-rates between teleporting mouse and using mouse splines.

    What's also another fairly weird thing, is the way the client straight up discard values from the mouse recorder in the client if they are above the fixed size (fixed size client opposed to re-sizeable, OSRS):

    Java Code:
    //160, client.java, void client.ev()
    for (int n6 = 0; n6 < 396566785 * av.bi.e && 328573213 * w3.e.w - n4 < 240; ++n6)
    {
        ++n5;
        int n7 = av.bi.u[n6]; // Y positions.
        if (n7 < 0) {
            n7 = 0;
        }
        else if (n7 > 502) {
            n7 = 502;
        }
        int n8 = av.bi.k[n6]; // X Positions.
        if (n8 < 0) {
            n8 = 0;
        }
        else if (n8 > 764) {
            n8 = 764;
        }
        ....//add stuff to the packet buffer etc.
    }

    This means all the values above 764 and 502 (x and y respectively) are straight up discarded. This is also interesting cause they do in-fact query whether you're playing in fixed mode or re-sizeable mode (amongst other things). The TL;DR of this is, they don't give a shit about mouse movements, if they did, they'd be consistent between screen modes and wouldn't discard values (mouse movement data). Biome-tricked you.

    The second point, as i already mentioned, really depends on how thorough their engine is at logging these things. It definitely isn't hard to log things like clicks and actions/interactions. Formatting this data can also be automated for sure - (keeping in mind, we already know for a fact that they keep session data on each player). There's also a bunch of 3rd party classifier/data mining packages which can make this job a lot easier. But yeah, building the initial model could be hard to automate, and would probably require some sort of human intervention initially. I do believe they combat different areas of the game individually. If a new skill method or boss / money making method gets released, you don't see bans straight away, or at least isn't apparent to me.
    Last edited by Kasi; 12-16-2017 at 11:41 PM.

  20. #20
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    @Kasi, I'm not suggesting they do care, but I am proposing reasons why they might not care.

    Is the piece of code you posted related to all mouse events in general? It seems like they could be ignoring events that don't take place in the window, because it is later going to be turned into a network event. I.e. you can't click on an object that isn't inside the screen. This agrees with what I was saying above, where they would not record as much as people think they do because they do not want to do things they are not already doing.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  21. #21
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    Is the piece of code you posted related to all mouse events in general?
    The piece of code isn't the mouse recorder, and is not related to ALL mouse events.
    The mouse recorder runs on a separate thread and just stores the latest grabbed position every 50ms
    The code i posted deals with adding the recorded mouse positions to the packet buffer which is in turn set to the server.


    Quote Originally Posted by R0b0t1 View Post
    It seems like they could be ignoring events that don't take place in the window, because it is later going to be turned into a network event. I.e. you can't click on an object that isn't inside the screen. This agrees with what I was saying above, where they would not record as much as people think they do because they do not want to do things they are not already doing.
    This is an incorrect assumption. Maybe i didn't explain it properly:

    The OSRS Canvas (you call it a window) is no longer just 765 by 503. You can have a re-sizeable option. https://i.imgur.com/E8kunhm.png
    The code i posted earlier means that anything OUTSIDE of the red rectangle: https://i.imgur.com/2OkLSFM.png would be changed to 764 for the x(if it is greater than 764) and 502 for the y(if it is greater than 502). So, all the mouse movement data outside this red rectangle is changed incorrectly EVEN THOUGH IT EXISTS INSIDE THE CANVAS(window).

    As explained earlier, this is one of the reasons why i believe they don't do anything with mouse movement data. They simply don't monitor mouse movement data equally across both screen types (fixed and re-sizeable) for it to be a statistic they profile...in simpler terms, they can't accurately classify mouse movements as "bot-splines" if they just ruin the data.

  22. #22
    Join Date
    Dec 2006
    Location
    Banville
    Posts
    3,914
    Mentioned
    12 Post(s)
    Quoted
    98 Post(s)

    Default

    Quote Originally Posted by Kasi View Post
    As explained earlier, this is one of the reasons why i believe they don't do anything with mouse movement data. They simply don't monitor mouse movement data equally across both screen types (fixed and re-sizeable) for it to be a statistic they profile...in simpler terms, they can't accurately classify mouse movements as "bot-splines" if they just ruin the data.
    Alright, that is pretty weird. From another thread, I also forgot that you can now ignore randoms. Together that is pretty good proof that they don't care, for the most part.
    The jealous temper of mankind, ever more disposed to censure than
    to praise the work of others, has constantly made the pursuit of new
    methods and systems no less perilous than the search after unknown
    lands and seas.

  23. #23
    Join Date
    Jan 2012
    Location
    Sydney, Australia
    Posts
    870
    Mentioned
    12 Post(s)
    Quoted
    361 Post(s)

    Default

    They would more than likely monitor if the mouse input is fake or not wouldn't the?
    I do remember reading a thread about input flags.

  24. #24
    Join Date
    Dec 2007
    Posts
    2,112
    Mentioned
    71 Post(s)
    Quoted
    580 Post(s)

    Default

    Quote Originally Posted by R0b0t1 View Post
    Alright, that is pretty weird. From another thread, I also forgot that you can now ignore randoms. Together that is pretty good proof that they don't care, for the most part.
    It's not too weird being from another thread at all.

  25. #25
    Join Date
    Mar 2013
    Posts
    32
    Mentioned
    0 Post(s)
    Quoted
    10 Post(s)

    Default

    Any plans to post your modification?

Page 1 of 2 12 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •