Versions used on cable modem network

From D3xt3r01.tk
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

WHY

I need to upgrade the software version used on most of the modems so I first need to know what's out there. Here's what I did to find out

HOW

I'll get the version via snmp from the modems using this OID which should be available on most modems:

 .1.3.6.1.2.1.1.1.0 ( sysDescr.0 )

I'll use BRAA to get the info fast from all the network using this script.

Note: I have modems on 10.0.0.0/21, 10.10.0.0/21, 10.200.0.0/21, 10.210.0.0/21 so feel free to modify to suit your needs !

#!/bin/bash

for i in {0,10,200,210} ; do
        for j in `seq 0 9`; do
                echo "Doing 10.$i.$j.0-255 now"
                braa -d 50 public@10.$i.$j.0-10.$i.$j.255:161:.1.3.6.1.2.1.1.1.0
        done
done

After running the script redirecting the output to a file .. I run this script to identify the versions and model name ( I'm using php since it's easier to parse strings ):

#!/usr/local/bin/php -f
<?php

if(!isset($argv[1]) || empty($argv[1])){
        die("Usage is ".$argv[0]." input_file\n");
}
if(!is_file($argv[1])){
        die($argv[1]." isn't a file.");
}
$file = file_get_contents($argv[1]);
$file = explode("\n", $file);
foreach($file as $line){
        if(stristr($line, 'arris')){
                preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9]+?) CM ([a-zA-Z0-9]+?) Cable Modem serial no\. ([0-9]+?), HW_Version ([0-9.\(\)\s]+?), SW_Version ([A-Z0-9.]+?), Bootloader_ver ([0-9.]+?), OS: ([A-Z0-9\s.]*)|is', $line, $out);
                if($out[3] == "Arris"){
                        $arris[$out[4]][$out[7]][$out[8]][$out[6]]++;
                }else{
                        echo "There's a problem here: ".$line."\n";
                }
        }else if(stristr($line, 'motorola')){
                preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:<<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
                if($out[4] == "Motorola Corporation"){
                        $motorola[$out[7]][$out[6]][$out[5]][$out[3]]++;
                }else{
                        echo "There's a problem here: ".$line."\n";
                }
        }else if(stristr($line, 'thomson')){
                if(strstr($line, "E-MTA")){
                        preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\-\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
                        if($out[5] == "Thomson" && $out[3] == "Thomson PacketCable E-MTA"){
                                $thomson[$out[8]][$out[7]][$out[6]][$out[4]]++;
                        }else{
                                echo "There's a problem here: ".$line."\n";
                        }
                }else{
                        preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
                        if($out[5] == "Thomson" && $out[3] == "Thomson DOCSIS Cable Modem"){
                                $thomson[$out[8]][$out[7]][$out[6]][$out[4]]++;
                        }else{
                                echo "There's a problem here: ".$line."\n";
                        }
                }
        }else{
//              echo $line."\n";
        }
}
echo "ARRIS\n\n";
print_r($arris);
echo "MOTOROLA\n\n";
print_r($motorola);
echo "THOMSON\n\n";
print_r($thomson);
?>

Hope this helps you upgrade.