HTTP Seltsames Charset

Bitte aktiviere JavaScript!
Moin Moin,
ich bin dabei eine Map zu basteln, von wo aus Angriffe auf meinen Server laufen, aber ich bekomme dabei ganz komische Reponses:
{"ip":"45.227.xxx.xx","type":"ipv4","continent_code":"NA","continent_name":"North America","country_code":"BZ","country_name":"Belize","region_code":null,"region_name":null,"city":null,"zip":null,"latitude":17.25,"longitude":-88.75,"location":{"geoname_id":null,"capital":"Belmopan","languages":[{"code":"en","name":"English","native":"English"},{"code":"es","name":"Spanish","native":"Espa\u00f1ol"}],"country_flag":"http:\/\/assets.ipstack.com\/flags\/bz.svg","country_flag_emoji":"\ud83c\udde7\ud83c\uddff","country_flag_emoji_unicode":"U+1F1E7 U+1F1FF","calling_code":"501","is_eu":false}}
Kennt jmd vielleicht diesen Zeichensatz und Maskierung?

(Das ist jetzt nur ein Beispiel, Belize liegt an der Grenze zu Mexico, mit 20 Angriffen pro Minute)
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Es hat geklappt - mit der gson Api:
{continent_name=North America, zip=null, city=null, ip=45.227.xxx.xx, latitude=17.25, continent_code=NA, type=ipv4, country_code=BZ, country_name=Belize, region_name=null, location={geoname_id=null, capital=Belmopan, languages=[{code=en, name=English, native=English}, {code=es, name=Spanish, native=Español}], country_flag=http://assets.ipstack.com/flags/bz.svg, country_flag_emoji=??, country_flag_emoji_unicode=U+1F1E7 U+1F1FF, calling_code=501, is_eu=false}, region_code=null, longitude=-88.75}
Gson bekommt das mühelos hin
Java:
HashMap<String, Object> map2 = gson.fromJson(new InputStreamReader(new URL("http://..." + adr.ip + "?access_key=...").openStream()), new TypeToken<HashMap<String, Object>>() {}.getType());

Die 10 häufigsten Attacker kommen aus, USA, Belize, Rumänien, Weißrussland, zweimal Moskau und sogar die Seychellen sind mit dabei. Hier mal ein verkleinerter Ausschnitt der Karte (darf ich das?)
11692

Das Schwerste daran ist leider, Latitude und Longitude nach (x,y) umzurechnen. :D
 
Hier ist mal eine Liste mit den Koords, einer Bezeichnung von a-z, der absoluten gezählten Häufigkeit der Angriffe und einer Farbe von starkrot bis Weiß:
Code:
17.25,-88.75,A(265),#ff0000
37.751,-97.822,B(209),#c90000
55.7386,37.6068,C(112),#6b0000
-4.5833,55.6667,D(71),#440000
55.7386,37.6068,E(49),#2f0000
55.0969,36.6103,F(37),#230000
47.0188,28.8128,G(35),#210000
55.7386,37.6068,H(35),#210000
55.7386,37.6068,I(35),#210000
47.0188,28.8128,J(34),#200000
55.7386,37.6068,K(31),#1d0000
55.7386,37.6068,L(31),#1d0000
55.7386,37.6068,M(29),#1b0000
52.3824,4.8995,N(27),#190000
52.3824,4.8995,O(27),#190000
52.3824,4.8995,P(26),#190000
52.3824,4.8995,Q(26),#190000
52.3824,4.8995,R(25),#180000
52.3824,4.8995,S(24),#170000
55.7386,37.6068,T(23),#160000
55.7386,37.6068,U(22),#150000
55.7386,37.6068,V(18),#110000
55.7386,37.6068,W(18),#110000
55.7386,37.6068,X(18),#110000
30.294,120.1619,Y(17),#100000
55.7386,37.6068,Z(17),#100000
Das Problem ist nur, das alles sind Onion- oder *IX Endpoints (siehe hier), dh man kann damit nichts anfangen und man kann die auch nicht weiter untersuchen :D mein Ansatz bringt also nix...
 
@mihe7 :
Java:
Pattern p = Pattern.compile("SRC=(\\d+.\\d+.\\d+.\\d+)");
// read ip addresses into a map

// take them into a list and sort it
ArrayList<Adr> list = new ArrayList<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    list.add(new Adr(entry.getKey(), entry.getValue()));
}
Collections.sort(list);
while (list.size() > 26) {
    list.remove(list.size() - 1);
}

// bulk request wished?
StringBuilder sb = new StringBuilder();
sb.append("http://api.ipstack.com/");
for (Adr adr : list) {
    sb.append(adr.ip);
    sb.append(",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append("?access_key=haha");
// do it

// or single requests wished?
float f = 1f / list.get(0).count * 255f;
Gson gson = new Gson();
for (int i = 0; i < 26; i++) {
    Adr adr = list.get(i);
    HashMap<String, Object> map2 = gson.fromJson(
        new InputStreamReader(new URL("http://api.ipstack.com/" + adr.ip + "?access_key=haha").openStream()),
        new TypeToken<HashMap<String, Object>>() { }.getType());
    System.out.println(map2.get("latitude") + "," + map2.get("longitude") + "," + (char) ('A' + i) + "(" + adr.count + "),#" + String.format("%02x", (int) (adr.count * f)) + "0000");
    try (PrintWriter pw = new PrintWriter("folder\\prefix_" + i + "_" + adr.count + ".txt")) {
        pw.println(map2.toString());
    }
}

System.out.println("fertig");
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben