Skip to content

Instantly share code, notes, and snippets.

@rue
Created July 7, 2009 12:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rue/142048 to your computer and use it in GitHub Desktop.
Save rue/142048 to your computer and use it in GitHub Desktop.
irb(main):020:0> class BF2142Query
irb(main):021:1>
irb(main):022:1* def initialize(server, query_port)
irb(main):023:2> @socket = UDPSocket.new
irb(main):024:2> @socket.connect(server, query_port)
irb(main):025:2> self.query
irb(main):026:2> end
irb(main):027:1>
irb(main):028:1* def query
irb(main):029:2> array = self.challenge
irb(main):030:2> puts array.inspect
irb(main):031:2> query = [0xFE,0xFD,0x00,0x10,0x20,0x30,0x40,array[0],array[1],array[2],array[3],0xFF,0xFF,0xFF,0x01].pack("c*")
irb(main):032:2> @socket.send(query, 0)
irb(main):033:2> receive = @socket.recvfrom(4096)
irb(main):034:2> puts receive
irb(main):035:2> end
irb(main):036:1>
irb(main):037:1* def challenge
irb(main):038:2> challenge = [0xFE,0xFD,0x09,0x10,0x20,0x30,0x40].pack("c*")
irb(main):039:2> @socket.send(challenge, 0)
irb(main):040:2> receive = @socket.recvfrom(4096)
irb(main):041:2> receive = receive[0]
irb(main):042:2> receive = receive[5..-1].to_i
irb(main):043:2> if receive < 0
irb(main):044:3> receive = 4294967296 - receive.abs
irb(main):045:3> end
irb(main):046:2> puts receive
irb(main):047:2> receive = receive.to_s(16).scan(/../).map{ |x| x.to_i(16) }
irb(main):048:2> end
irb(main):049:1>
irb(main):050:1* end
=> nil
irb(main):053:0> bad = ["64.34.183.10", 29900]
=> ["64.34.183.10", 29900]
irb(main):054:0> good = ["64.34.212.154", 29900]
=> ["64.34.212.154", 29900]
irb(main):055:0> BF2142Query.new *good
1193489774
[71, 35, 53, 110]
0@splitnumhostname -lTBGl- 24/7 WAKEgamenamestellagamever1.10.48.0mapnameWake_Island_2142gametypegpm_cagamevariantbf2142numplayers21maxplayers64gamemodeopenplayingpassword0timelimit0roundtime4hostport17567bf2142_ranked1bf2142_anticheat1bf2142_autorec0bf2142_d_idxhttp://bf2142_d_dlhttp://bf2142_voip1bf2142_autobalanced1bf2142_friendlyfire0bf2142_tkmodeNo Punishbf2142_startdelay10bf2142_spawntime15.000000bf2142_sponsortextbf2142_sponsorlogo_urlhttp://www.tbgclan.com/true.jpgbf2142_communitylogo_urlhttp://www.tbgclan.com/true.jpgbf2142_scorelimit0bf2142_ticketratio100bf2142_teamratio100.000000bf2142_team1PACbf2142_team2EUbf2142_pure1bf2142_mapsize64bf2142_globalunlocks0bf2142_reservedslots0bf2142_maxrank0bf2142_provider10042bf2142_regionUSbf2142_type1bf2142_averageping93bf2142_ranked_tournament0bf2142_allow_spectators0bf2142_custom_map_url1http://bfeditor.org/index.php?lang=English&sec=maps&act=vmap&game=bf2142&map=player_ jamesthegreatn[Ger] DaggI*FAQC* Ugolin007 roughneck07 Donnerfausts BlackScorpi0n Olly2907 Rolandski Gladiator16 Groverz Klora natnat Shinjaki Engelz QBlueFalcon CasperFoo Kemdium Grober22 Lamingo BORACKRISPY[USEF] IseeU2*score_000000000000000000000ping_01182566271134151969493969394929193919191890
AF_INET
29900
mofreaky2.wolfservers.com
64.34.212.154
=> #<BF2142Query:0x45a88 @socket=#<UDPSocket:0x45a24>>
irb(main):056:0> BF2142Query.new *bad
3611046409
[215, 60, 50, 9]
0@splitnumhostnameDoorman is God TITANgamenamestellagamever1.10.48.0mapnameMinskgametypegpm_tigamevariantbf2142numplayers16maxplayers48gamemodeopenplayingpassword0timelimit0roundtime2hostport17567bf2142_ranked1bf2142_anticheat1bf2142_autorec0bf2142_d_idxhttp://bf2142_d_dlhttp://bf2142_voip1bf2142_autobalanced1bf2142_friendlyfire0bf2142_tkmodeNo Punishbf2142_startdelay15bf2142_spawntime15.000000bf2142_sponsortexthttp://doormanisgod.combf2142_sponsorlogo_urlhttp://doormanisgod.com/banners/banner_white_arial_mono.jpgbf2142_communitylogo_urlhttp://doormanisgod.com/banners/banner_white_arial_mono.jpgbf2142_scorelimit0bf2142_ticketratio100bf2142_teamratio100.000000bf2142_team1Pacbf2142_team2EUbf2142_pure1bf2142_mapsize48bf2142_globalunlocks0bf2142_reservedslots0bf2142_maxrank0bf2142_provider10042bf2142_regionUSbf2142_type1bf2142_averageping87bf2142_ranked_tournament0bf2142_allow_spectators0bf2142_custom_map_url1http://bfeditor.org/index.php?lang=English&sec=maps&act=vmap&game=bf2142&map=player_ Fuzzy_Head iSoldier3G23A|I| Capnjoe PhilReaper Solacus Burr11 CasperFoo Groverz DIMPAUL unkiemonkey RAFAKAEE Wyldex Kemdium Bungah natnat Phenrezscore_0000000000000000ping_286065137929593929492919091909093team_112221212112212
AF_INET
29900
64.34.183.10
64.34.183.10
=> #<BF2142Query:0x3fb60 @socket=#<UDPSocket:0x3fb38>>
irb(main):057:0>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment