Versions used on cable modem network
From D3xt3r01.tk
Jump to navigationJump to search
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.