Skip to content

Commit 8a1d91b

Browse files
author
Mila432
committed
added backup files,version should work
1 parent a7c5497 commit 8a1d91b

File tree

9 files changed

+334
-177
lines changed

9 files changed

+334
-177
lines changed

api.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import time
44
import requests
55
import logic
6-
import stops
76

87
local_ses=None
98
tmp_api=None

config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
}
1313
use_proxy=True
1414
debug=True
15-
15+
distance=0
16+
steps=0.0025
1617
google=True
1718
pub=None
1819

dirty.py

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,67 @@
11
import logic
2-
import stops
32
import api
43
import time
54
import pokemon_pb2
5+
import location
6+
import config
67

7-
def start_private_show(access_token,ltype):
8+
def start_private_show(access_token,ltype,loc):
9+
location.set_location(loc)
810
print '[+] Token:',access_token[:40]+'...'
9-
prot1=logic.gen_first_data(access_token)
11+
prot1=logic.gen_first_data(access_token,ltype)
1012
local_ses=api.get_rpc_server(access_token,prot1)
11-
while(local_ses is not None):
12-
print '[+] starting show'
13-
for t in stops.get_static():
14-
#small_show(t,access_token,local_ses)
15-
print '[!] farming pokestop..'
16-
new_rcp_point='https://%s/rpc'%(local_ses.rpc_server,)
17-
work_with_stops(t,local_ses.ses,new_rcp_point)
18-
#prot1=logic.gen_first_data(access_token)
19-
#sid= get_rpc_server(access_token,prot1)
20-
#new_rcp_point='https://%s/rpc'%(sid.rpc_server,)
21-
#login_data=use_api(new_rcp_point,prot1)
22-
#if sid is not None:
23-
# for t in stops.get_static():
24-
# print '[!] farming pokestop..'
25-
# work_with_stops(t,sid.ses,new_rcp_point)
26-
#walking=logic.simulate_walking(ses,t)
27-
#use_api(new_rcp_point,walking)
28-
#time.sleep(1)
29-
#Kinder_pre=logic.gen_stop_data_pre(ses,t)
30-
#use_api(new_rcp_point,Kinder_pre)
31-
#time.sleep(1)
32-
13+
new_rcp_point='https://%s/rpc'%(local_ses.rpc_server,)
14+
while(True):
15+
work_stop(local_ses,new_rcp_point)
16+
17+
def walk_random():
18+
COORDS_LATITUDE, COORDS_LONGITUDE, COORDS_ALTITUDE=location.get_location_coords()
19+
COORDS_LATITUDE=location.l2f(COORDS_LATITUDE)
20+
COORDS_LONGITUDE=location.l2f(COORDS_LONGITUDE)
21+
COORDS_ALTITUDE=location.l2f(COORDS_ALTITUDE)
22+
COORDS_LATITUDE=COORDS_LATITUDE+config.steps
23+
COORDS_LONGITUDE=COORDS_LONGITUDE+config.steps
24+
location.set_location_coords(COORDS_LATITUDE, COORDS_LONGITUDE, COORDS_ALTITUDE)
25+
26+
def work_stop(local_ses,new_rcp_point):
27+
proto_all=logic.all_stops(local_ses)
28+
all_stops=api.use_api(new_rcp_point,proto_all)
29+
maps = pokemon_pb2.maps()
30+
maps.ParseFromString(all_stops)
31+
data_list=location.get_near(maps)
32+
data_list = sorted(data_list, key = lambda x: x[1])
33+
if len(data_list)>0:
34+
print '[+] found: %s Pokestops within %s m'%(len(data_list),config.distance,)
35+
if local_ses is not None and data_list is not None:
36+
print '[+] starting show'
37+
for t in data_list:
38+
print '[!] farming pokestop..'
39+
work_with_stops(t,local_ses.ses,new_rcp_point)
40+
else:
41+
walk_random()
42+
work_stop(local_ses,new_rcp_point)
43+
3344
def work_with_stops(current_stop,ses,new_rcp_point):
3445
Kinder= logic.gen_stop_data(ses,current_stop)
3546
tmp_api=api.use_api(new_rcp_point,Kinder)
36-
if tmp_api is not None:
37-
map = pokemon_pb2.map()
38-
map.ParseFromString(tmp_api)
39-
#print map
40-
st= map.sess[0].status
41-
if st==4:
42-
print "[!] +%s"%map.sess[0].amt
43-
elif st==3:
44-
print "[!] used"
45-
elif st==2:
46-
print "[!] charging"
47-
elif st==1:
48-
print "[!] teleport.."
49-
time.sleep(5)
50-
work_with_stops(current_stop,ses,new_rcp_point)
47+
try:
48+
if tmp_api is not None:
49+
map = pokemon_pb2.map()
50+
map.ParseFromString(tmp_api)
51+
st= map.sess[0].status
52+
if st==4:
53+
print "[!] +%s"%map.sess[0].amt
54+
elif st==3:
55+
print "[!] used"
56+
elif st==2:
57+
print "[!] charging"
58+
elif st==1:
59+
print "[!] teleport.."
60+
time.sleep(14)
61+
work_with_stops(current_stop,ses,new_rcp_point)
62+
else:
63+
print "[?]:",st
5164
else:
52-
print "[?]:",st
53-
time.sleep(2)
54-
else:
55-
print '[-] tmp_api empty'
65+
print '[-] tmp_api empty'
66+
except:
67+
print '[-] error work_with_stops'

location.py

Lines changed: 3 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import base64
33
import struct
44
import config
5-
import math
65
from math import radians, cos, sin, asin, sqrt
76
from geopy.distance import vincenty
87
from geopy.geocoders import GoogleV3
@@ -16,20 +15,6 @@
1615
def get_location_coords():
1716
return (COORDS_LATITUDE, COORDS_LONGITUDE, COORDS_ALTITUDE)
1817

19-
def get_lat():
20-
return COORDS_LATITUDE
21-
22-
def get_lot():
23-
return COORDS_LONGITUDE
24-
25-
def set_lat(new):
26-
global COORDS_LATITUDE
27-
COORDS_LATITUDE = f2i(new)
28-
29-
def set_lot(new):
30-
global COORDS_LONGITUDE
31-
COORDS_LONGITUDE= f2i(new)
32-
3318
def set_location(location_name):
3419
geolocator = GoogleV3()
3520
loc = geolocator.geocode(location_name)
@@ -38,8 +23,7 @@ def set_location(location_name):
3823
set_location_coords(loc.latitude, loc.longitude, loc.altitude)
3924

4025
def set_location_coords(lat, long, alt):
41-
if config.debug:
42-
print('[!] lat/long/alt: {} {} {}'.format(lat, long, alt))
26+
print('[!] lat/long/alt: {} {} {}'.format(lat, long, alt))
4327
global COORDS_LATITUDE, COORDS_LONGITUDE, COORDS_ALTITUDE
4428
global FLOAT_LAT, FLOAT_LONG
4529
FLOAT_LAT = lat
@@ -69,86 +53,10 @@ def get_near(map):
6953
for block in cell.b:
7054
for obj in block.c:
7155
for stop in obj.s:
72-
#if distance(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE):
73-
ms.append((stop.name,stop.lat,stop.lon,get_distance(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE)))
74-
return ms
75-
76-
def get_near_p(map):
77-
ms=[]
78-
for cell in [map]:
79-
for block in cell.b:
80-
for obj in block.c:
81-
for stop in obj.p:
82-
#if distance(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE):
83-
ms.append((stop.t.type,stop.lat,stop.lon,stop.name,stop.hash,get_distance(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE)))
84-
for stop in obj.s:
85-
if stop.p.type:
86-
ms.append((stop.p.type,stop.lat,stop.lon,stop.name,stop.p.u2,get_distance(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE)))
56+
if is_near(stop.lat,stop.lon,COORDS_LATITUDE,COORDS_LONGITUDE):
57+
ms.append((stop.name,stop.lat,stop.lon))
8758
return ms
8859

89-
def move_to(lat1, lot1,lat2, lot2):
90-
if (lat1>lat2):
91-
while(lat1<lat2):
92-
lat1=lat1-0.000095
93-
else:
94-
while(lat1<lat2):
95-
lat1=lat1+0.000095
96-
if (lot1>lot2):
97-
while(lot1>lot2):
98-
lot1=lot1-0.000095
99-
else:
100-
while(lot2>lot1):
101-
lot1=lot1+0.000095
102-
return lat1, lot1,lat2, lot2
103-
104-
def distance(lat1, lon1,lat2, lon2):
105-
lat1=l2f(lat1)
106-
lon1=l2f(lon1)
107-
lat2=l2f(lat2)
108-
lon2=l2f(lon2)
109-
radius = 6371 # km *1000 m
110-
dlat = math.radians(lat2-lat1)
111-
dlon = math.radians(lon2-lon1)
112-
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
113-
* math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
114-
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
115-
d = radius * c * 1000
116-
return d<config.distance
117-
118-
def get_distance(lat1, lon1,lat2, lon2):
119-
lat1=l2f(lat1)
120-
lon1=l2f(lon1)
121-
lat2=l2f(lat2)
122-
lon2=l2f(lon2)
123-
radius = 6371 # km *1000 m
124-
dlat = math.radians(lat2-lat1)
125-
dlon = math.radians(lon2-lon1)
126-
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
127-
* math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
128-
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
129-
d = radius * c * 1000
130-
return d
131-
132-
def haversine(lon1, lat1, lon2, lat2):
133-
lat1=l2f(lat1)
134-
lon1=l2f(lon1)
135-
lat2=l2f(lat2)
136-
lon2=l2f(lon2)
137-
"""
138-
Calculate the great circle distance between two points
139-
on the earth (specified in decimal degrees)
140-
"""
141-
# convert decimal degrees to radians
142-
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
143-
144-
# haversine formula
145-
dlon = lon2 - lon1
146-
dlat = lat2 - lat1
147-
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
148-
c = 2 * asin(sqrt(a))
149-
r = 6371 # Radius of earth in kilometers. Use 3956 for miles
150-
return c * r * 1000
151-
15260
def is_near(locx,locy,myx,myy):
15361
tmp1 = (l2f(locx), l2f(locy))
15462
tmp2 = (l2f(myx), l2f(myy))

logic.py

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import pokemon_pb2
22
from random import randint
3+
import location
4+
import base64
5+
from google.protobuf.internal import encoder
6+
from s2sphere import *
37

48
def simulate_walking(ses,cur_session):
59
walk = pokemon_pb2.walk()
@@ -59,31 +63,53 @@ def gen_stop_data_pre(ses,cur_session):
5963
req4.message.unknown4 = '05daf51635c82611d1aac95c0b051d3ec088a930' #static
6064
return stop_request.SerializeToString()
6165

66+
def encode(cellid):
67+
output = []
68+
encoder._VarintEncoder()(output.append, cellid)
69+
return ''.join(output)
70+
71+
def getNeighbors():
72+
origin = CellId.from_lat_lng(LatLng.from_degrees(location.FLOAT_LAT , location.FLOAT_LONG)).parent(15)
73+
walk = [origin.id()]
74+
# 10 before and 10 after
75+
next = origin.next()
76+
prev = origin.prev()
77+
for i in range(10):
78+
walk.append(prev.id())
79+
walk.append(next.id())
80+
next = next.next()
81+
prev = prev.prev()
82+
return walk
83+
6284
def all_stops(cur_session):
6385
get_all = pokemon_pb2.get_all()
64-
get_all.ParseFromString(base64.b64decode('CAIYjICAgNCq7pAEItABCGoSywEKogGAgICAhPzf2EeAgICAjPzf2EeAgICAlPzf2EeAgICAnPzf2EeAgICApPzf2EeAgICArPzf2EeAgICAtPzf2EeAgICAvPzf2EeAgICAxPzf2EeAgICAzPzf2EeAgICA7Pzf2EeAgICA9Pzf2EeAgICAzP/f2EeAgICA1P/f2EeAgICAhKv12UeAgICAjKv12UeAgICA9Kv12UeAgICA/Kv12UcSEgAAAAAAAAAAAAAAAAAAAAAAABkAAAAg8ddKQCEAAAAgjnMjQCICCH4iCwgEEgcIrZ3YhN8qIgMIgQEiLggFEioKKDA1ZGFmNTE2MzVjODI2MTFkMWFhYzk1YzBiMDUxZDNlYzA4OGE5MzAyqAgIBhKjCAqgCDFGrNyWNVP6ofDCGyFd07dgBPL3jUgwM0HBmBnUeUT3wdjJ8S8EjS/u1zNeATvP7qrJbavMI03JL2YFmuDLV2vu/Dur28YHrTrHMDuIWe9e1ij9ZLBFojmm090Xa9o5o+GXCZj8WL3t8LhiSnkQuj/eFJCjKQva2zqZDr94NebfMhR+bKHMW9oVX3oXxmikN4I+B7eYqNCE7jYNVTmxuzCcTTBn0ayaPNopFuRWLtHx5H3lmqGx6V87WvveGg6wTLOvL8fXEz+mzJWrWsR4EzNkLcD8LnqmD5YwmwnkNpDLUxBLpj2IsSw4xfeQTFqXYE5SXPMuS2dqXgSN4SDGpzsx1DuJ1JuS1/u9KSZRbXlpmOkBll9OpVYzURHofsvMc+Dm0nphO/A8nvUf8OSru8fj5wjoXLgqpHHna0Rql/bu4KrgyPtgUAXqy4GwGCCxCZbAMYyeR0IGjdt15+cgaVNtfK5Y75uXV8KqjhlPzOwk0wRz2HjfG2mqgBKsqfMCotLeRzUEvvx7tGrS1PPFaFF5tvzy0bf4zia+OhUW38Q7soKtM7q7c2x4QIj0Wjr5E6EzVu1EK5MAnE1apaAfIpwVVvB87hIAcsOGY35ZWWmyY7t+XM+5v/n11w3XYZvnUARLJYH/dhJucyQKHhb3jTc4A8eMy9qGMFsVfQ0TjxO3SjxEvYViG03Bm68Mak+MrhUjudXs7d5CXpscaFR4ny8CviLDZctFCc8BmDKjlxEBbGcVrnscppB3hJeX/WQIn6ACOiHcYunFOZo03lnFh2wjMoMvjuHwvl3uldhmNv6lIPoDrMWVtQcZ0obPsknkzsVfL4ImkOsiUGXLvhkGeZcttHlCiWoPhQp3rgmscmxzQRav5npbMA6nCkfMJ01K447K987pnfG4WTykBGd+zvaDdQNpjhZrgCec2Hlxde3lPu5Yc2zCpFPqT2sgAFFTAgZPaje/DMxyMbc+aWZSsK62ahSswchRSUPxkexFU9GpoiDXfTbtGhAKvzrJ2BUYarTfQI6ZlpLp+ogSR1rm+slHMgQBQBPOYx2JsqR5YtzWjPIwErvadX4YioxDwrru9lBKqUrJrD2T4GjF8sQSo6JN8j8/BBAWPPmv9hB6Gte0fXDhBeYNMAHVo/R1Bf9j1au0A05krszTs4YkmUTZ/Goye5/7ED1JWryo9noPWT6R4IT6rO+SbTBxWidJyTtsVqP0N88/bPTDX32HfK2qRXcIb/l/9qMoDKqAMzfeMM8Ro6vahDoBSN8el0DanV47/tejQ/08Wow01MaVRl6wTG9F2h174aUFlLNMLPZULqle3mSPPUWe1Bs9ysWxkjn4Rb0v7s13nwlQI4qNhew0z49vqlfOAZMbkaawyyHTNzoB8zCsD/oZje262QjBVzyEgzkAAAAg8ddKQEEAAAAgjnMjQEkAAAAAAEBQQFpbCkCjKgvMWG8aCMmLo25sgjXBCaIVUXHslYA+toR+pHvLpKGvdB7zFXE6JeYs1JghGA3dHR+wLT+U70H0iwhiOmXFELr0xYXfKhoQIz+EH5Wj/nflvemL3D3/5WDvEw=='))
65-
'''get_all.time = 2
66-
get_all.rpc_id = 8184149599452135521
67-
get_all.unknown12 = 8876
68-
get_all.unk1 = 0x404ad7f120000000
69-
get_all.unk2 = 0x4023738e20000000
70-
get_all.unk3 = 0x4049000000000000
71-
72-
req5 = get_all.requests.add()
73-
req5.type = 106
74-
req5.message.unknown5 = 0x404ad7f120000000
75-
req5.message.unknown6 = 0x4023738e20000000
86+
walk = sorted(getNeighbors())
87+
get_all.unk1=2
88+
get_all.unk3=2212820743501119519-randint(0,999)
89+
get_all.unk12=randint(0,999999)
90+
lat,lon,fl=location.get_location_coords()
91+
92+
req1 = get_all.b.add()
93+
req1.id = 106
94+
req1.c.msg=''.join(map(encode, walk))
95+
req1.c.lat=lat
96+
req1.c.lon=lon
97+
req2 = get_all.b.add()
98+
req2.id = 126
99+
req5 = get_all.b.add()
100+
req5.id = 4
101+
req3 = get_all.b.add()
102+
req3.id = 129
103+
req4 = get_all.b.add()
104+
req4.id = 5
105+
req4.c.msg = '05daf51635c82611d1aac95c0b051d3ec088a930' #static
76106

77-
req1 = get_all.requests.add()
78-
req1.type = 126
79-
req2 = get_all.requests.add()
80-
req2.type = 129
81-
req3 = get_all.requests.add()
82-
req3.type = 5
83-
req3.message.unknown4 = '05daf51635c82611d1aac95c0b051d3ec088a930'''
84-
get_all.sess.ses1 = cur_session.ses1 #12
85-
get_all.sess.time = cur_session.time #12
86-
get_all.sess.ses2 = cur_session.ses2 #12
107+
get_all.sess.session_hash = cur_session.ses.session_hash #12
108+
get_all.sess.session_live = cur_session.ses.session_live #12
109+
get_all.sess.session_id = cur_session.ses.session_id #12
110+
get_all.unk7=lat
111+
get_all.unk8=lon
112+
get_all.unk9=0x4049000000000000
87113
return get_all.SerializeToString()
88114

89115
def gen_stop_data(ses,cur_session):
@@ -115,14 +141,15 @@ def gen_stop_data(ses,cur_session):
115141
req4 = stop_request.requests.add()
116142
req4.type = 5
117143
req4.message.unknown4 = '05daf51635c82611d1aac95c0b051d3ec088a930' #static
144+
location.set_location_coords(location.l2f(cur_session[1]),location.l2f(cur_session[2]),location.l2f(0x4049000000000000))
118145
return stop_request.SerializeToString()
119146

120-
def gen_first_data(access_token):
147+
def gen_first_data(access_token,ltype):
121148
login_request = pokemon_pb2.login_request()
122149
login_request.time = 2
123150
login_request.unknown12 = randint(0,999999)
124151
login_request.rpc_id = 72185515343874-randint(0,999)
125-
login_request.auth.provider = 'google'
152+
login_request.auth.provider = ltype
126153
login_request.auth.token.contents = access_token
127154

128155
req1 = login_request.requests.add()

0 commit comments

Comments
 (0)