Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben
Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben
#!/bin/sh
# v14 analyzer
release="1.0.0 2015-07-25"
#
#
# -------- CONFIG BEGIN --------
# Folgende Variablen bitte anpassen
#
# hier den Pfad zu dem Log-File mit den geloggten EMMs angeben
myEMMLogfile="/media/usbstick/log/emm/Skyv14_unique_emm.log"
# hier die Datei mit der Interpretation der EMMs für Oscam Clienten verlinken; diese Datei IMMER aktuell halten
myEMMDataOSCAM="/media/usbstick/log/emm/emmoscam.dta"
# hier die Datei mit der Interpretation der EMMs für CCcam Clienten verlinken; diese Datei IMMER aktuell halten
myEMMDataCCAM="/media/usbstick/log/emm/emmccam.dta"
# anonymousmode="yes" oder anonymousmode="no"
# im anonymousmode werden alle in den EMMs vorhandenen BoxIDs und CardIDs durch xxxxx ersetzt.
anonymousmode="yes"
# Ladel des Readers, so wir es in der Datei oscam.server steht. Exakte Schreibweise ist wichtig!
# Angabe wichtig, damit der write-Link in der HTML Ausgabe zum schreiben der EMM auf die Karte funktioniert
myReader="Skyv14"
# htmlmode="yes", "no" oder "auto"
# ="yes", dann Ausgabe als HTML Tabelle, das ist nur als Ausgabe aus OSCAM WebIF sinnvoll
# ="no", dann Ausgabe als plain Text als Ausgabe aus dem OSCAM WebIF oder durch einen Shell Script Aufruf
# ="auto" erzeugt eine HTML Tabelle, wenn der Aufruf aus dem OSCAM WebIF kam, ansonsten eine plain text Ausgabe
htmlmode="auto"
# Parameter 'dezimalboxid'. Hier die CA Ser.Nr. von Ihrem Sky Receiver eintragen (dezimale Version)
# genau so angeben, wie auf dem Aufkleber auf dem Receiver aufgedruckt
dezimalboxid="xxxxxxxxxx"
# -------- CONFIG END --------
# falls eine Konfigurations-Datei vorhanden ist, überschreiben die Werte aus der Konfigurationsdatei
# alle Werte/Definitionen weiter oben in diesem Scritp
# Die Konfigurationsdatei muss den exakt gleichen Dateinamen haben, wie dieses Script, jedoch
# statt der Dateiendung '.sh' mit '.conf' enden und im gleichen Verzeichnis liegen, wie dieses Script.
# ab hier Finger weg
#
mySCRIPTNAME=$(basename "$0")
mySCRIPTDIR=$(dirname "$0")
myCONFNAME="$mySCRIPTDIR/${mySCRIPTNAME%.*}.conf"
if [ -f "$myCONFNAME" ] && [ -s "$myCONFNAME" ] ; then
. $myCONFNAME
fi
myparent=$(ps $PPID | grep -i oscam)
oscamparent=${#myparent}
if [ "$htmlmode" = "auto" ]; then
htmlmode="no"
if [ "$oscamparent" -gt "0" ] ; then
htmlmode="yes"
fi
fi
cat $myEMMDataOSCAM | grep "[A-F,0-9][A-F,0-9] hex / [0-9][0-9][0-9]:" > $myEMMDataOSCAM.tmp
sed -i 's/ hex \/ [01][0-9][0-9]/ /g' $myEMMDataOSCAM.tmp
IFS=';'
InfoWarnings="Pairing-Verdacht;Pairing Verdacht;Aktivierung: Smartcard Pairing;UNKNOWN;akute Paringgefahr;Paired die Karte;Paired z.Zt. 100%ig;Dieses EMM nicht schreiben;Aktivierung Smartcard Pairing"
while read line
do
infowarn=1
case "$line" in
*Verlängerung:*|*Verlängerer:*) infowarn=0
;;
esac
for warn in $InfoWarnings
do
#if [[ $line =~ $warn ]] ; then # no POSIX
#if echo $line | grep -q $warn ; then
if [ -z "${line##*$warn*}" ] ; then
infowarn=2
fi
done
echo "$infowarn$line" >> $myEMMDataOSCAM.tmp2
done < $myEMMDataOSCAM.tmp
mv $myEMMDataOSCAM.tmp2 $myEMMDataOSCAM.tmp
cat $myEMMDataCCAM | grep "[A-F,0-9][A-F,0-9] hex / [0-9][0-9][0-9]:" > $myEMMDataCCAM.tmp
sed -i 's/ hex \/ [01][0-9][0-9]/ /g' $myEMMDataCCAM.tmp
while read line
do
infowarn=1
case "$line" in
*Verlängerung:*|*Verlängerer:*) infowarn=0
;;
esac
for warn in $InfoWarnings
do
#if [[ $line =~ $warn ]] ; then # no POSIX
#if echo $line | grep -q $warn ; then
if [ -z "${line##*$warn*}" ] ; then
infowarn=2
fi
done
echo "$infowarn$line" >> $myEMMDataCCAM.tmp2
done < $myEMMDataCCAM.tmp
mv $myEMMDataCCAM.tmp2 $myEMMDataCCAM.tmp
if [ "$oscamparent" -gt "0" ] ; then
sed -i 's/\ä/\ä\;/g; s/\Ä/\Ä\;/g; s/\ö/\ö\;/g; s/\Ö/\Ö\;/g; s/\ü/\ü\;/g;
s/\Ü/\Ü\;/g; s/\ß/\ß\;/g; s/\"/\"\;/g' $myEMMDataOSCAM.tmp
sed -i 's/\ä/\ä\;/g; s/\Ä/\Ä\;/g; s/\ö/\ö\;/g; s/\Ö/\Ö\;/g; s/\ü/\ü\;/g;
s/\Ü/\Ü\;/g; s/\ß/\ß\;/g; s/\"/\"\;/g' $myEMMDataCCAM.tmp
fi
myboxid=$(printf "%X" "$dezimalboxid")
lmyboxid=${#myboxid}
releaseversion=$(echo "$release" | cut -d " " -f 1)
releasedate=$(echo "$release" | cut -d " " -f 2)
if [ "$htmlmode" = "yes" ]; then
echo "<style>td[title] { max-width:200px;overflow:hidden;}</style>"
echo "<table style=\"text-align:left\" id=\"emmData\">"
echo "<thead id=\"click on col-label to sort\"><tr><th>$releaseversion</th><th>hex-length : Info (mouseover)</th><th>First</th><th>Last</th><th>Count</th><th>Typ</th>"
if [ "$anonymousmode" != "yes" ]; then
echo "<th>CardID</th>"
fi
echo "<th>Client</th><th>EmmData</th></tr></thead><tbody>"
else
echo "Script $mySCRIPTNAME version $release"
fi
myInputData=$(awk '{print $4"\n"}' $myEMMLogfile | sort | uniq )
#IFS=$'\n'
#IFS=$(echo "\n\b") # did not work in bash
IFS=$(echo -en "\n\b")
for myemm in $myInputData
do
#myemmCardid=${myemm:8:8} # no POSIX
myemmCardid=$(echo "${myemm}" | awk '{print substr($0,9,8)}')
outputemm=$myemm
if [ "$anonymousmode" = "yes" ]; then
#outputemm=${myemm//$myemmCardid/xxxxxxxx}
#outputemm=$(echo "${myemm}" | sed "s/${myemmCardid}/xxxxxxxx/g") # works in 'donduck' bash, but not for 'rechner' busybox
outputemm=$(echo ${myemm} | awk -v awcid=$myemmCardid '{gsub(awcid,"xxxxxxxx");print}')
fi
#myemmClient=${myemm:0:4} # no POSIX
myemmClient=$(echo "${myemm}" | awk '{print substr($0,1,4)}')
#myemmLength=${myemm:4:2} # no POSIX
myemmLength=$(echo "${myemm}" | awk '{print substr($0,5,2)}')
#myemmType=${myemm:16:2} # no POSIX
myemmType=$(echo "${myemm}" | awk '{print substr($0,17,2)}')
if [ "$myemmClient" = "8270" ]; then
myemmClientName="OSCAM"
mytmp=$(grep "$myemmLength :" $myEMMDataOSCAM.tmp)
#myemmInfo=${mytmp:1} # no POSIX
myemmInfo=$(echo "${mytmp}" | awk '{print substr($0,2)}')
#infowarn=${mytmp:0:1} # no POSIX
infowarn=$(echo "${mytmp}" | awk '{print substr($0,1,1)}')
else
if [ "$myemmClient" = "8200" ]; then
myemmClientName="CCAM"
mytmp=$(grep "$myemmLength :" $myEMMDataCCAM.tmp)
#myemmInfo=${mytmp:1} # no POSIX
myemmInfo=$(echo "${mytmp}" | awk '{print substr($0,2)}')
#infowarn=${mytmp:0:1} # no POSIX
infowarn=$(echo "${mytmp}" | awk '{print substr($0,1,1)}')
else
myemmClientName="n/a"
myemmInfo="n/a"
infowarn=0
fi
fi
emmWarning=0
myTypWarning=""
if [ "$myemmType" = "07" ]; then
myTypWarning="ATTENTION!!"
if [ "$htmlmode" = "yes" ]; then
myTypWarning="<strong style=\"color:red\">ATTENTION!!</strong>"
fi
emmWarning=1
fi
myemmboxidWarning=""
#if echo $myemm | grep -q $myboxid ; then
if [ -z "${myemm##*$myboxid*}" ]; then
myemmboxidWarning="ATTENTION!! BoxID in EMM!!"
if [ "$htmlmode" = "yes" ]; then
myemmboxidWarning="<strong style=\"color:red\">ATTENTION!! BoxID in EMM!!</strong>"
fi
emmWarning=1
if [ "$anonymousmode" = "yes" ]; then
#anoboxid=${mytmp:0:${#myboxid}} # no POSIX
anoboxid=$(echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" | cut -c 1-"$lmyboxid")
#outputemm=${outputemm//$myboxid/$anoboxid} # not POSIX
#outputemm=$(echo "${outputemm}" | sed "s/${myboxid}/${anoboxid}/g")
outputemm=$(echo ${outputemm} | awk -v awboxid=$myboxid -v awanoid=$anoboxid '{gsub(awboxid,awanoid);print}')
fi
fi
myFirstEMM=$(grep -m1 "$myemm" $myEMMLogfile | awk '{print $1}')
myLastEMM=$(grep "$myemm" $myEMMLogfile | tail -n 1 | awk '{print $1" "$2}')
myCountEMM=$(grep "$myemm" $myEMMLogfile | wc -l)
if [ "$htmlmode" = "yes" ]; then
outputemmInfo=$myemmInfo
if [ "$infowarn" -gt "1" ]; then
outputemmInfo="<strong style=\"color:red\">$myemmInfo</strong>"
fi
echo "<tr>"
if [ "$emmWarning" = "0" ] && [ "$infowarn" = "0" ]; then
echo "<td><a href=\"emm_running.html?label=$myReader&ep=$myemm\" target=\"emmwrite\">write</a></td>"
else
echo "<td> </td>"
fi
#echo "<td title=\"$m2\">$myemmInfo</td>"
echo "<td title=\"$myemmInfo\">$outputemmInfo</td>"
echo "<td>$myFirstEMM</td>"
echo "<td>$myLastEMM</td>"
echo "<td>$(printf %05d $myCountEMM)</td>"
#echo "<td>$myCountEMM</td>"
echo "<td>$myemmType $myTypWarning</td>"
if [ "$anonymousmode" != "yes" ]; then
echo "<td>$myemmCardid</td>"
fi
echo "<td>$myemmClient ($myemmClientName)</td>"
echo "<td>$myemmboxidWarning $outputemm</td>"
echo "</tr>"
else
echo "-----------------------------------"
echo "$myemmboxidWarning EMM: $outputemm"
echo "Client: $myemmClient ($myemmClientName)"
echo "Length (hex) : Info: $myemmInfo"
if [ "$anonymousmode" != "yes" ]; then
echo "CardID: $myemmCardid"
fi
echo "Typ: $myemmType $myTypWarning"
echo "First: $myFirstEMM | Last: $myLastEMM | Count: $myCountEMM"
echo " "
fi
done
if [ "$htmlmode" = "yes" ]; then
echo "</tbody></table>"
echo "<script type=\"text/javascript\">"
echo "\$('#emmData thead').click(function(ev){"
echo "var cellIndex= ev.target.cellIndex,"
echo " tbody= this.parentNode.tBodies[0];"
echo "ev.target.curSort= !ev.target.curSort;"
echo "\$(tbody.rows).sort(ev.target.curSort ? function(a,b){return a.cells[cellIndex].innerHTML < b.cells[cellIndex].innerHTML ? -1 : 1;} : function(a,b){return a.cells[cellIndex].innerHTML > b.cells[cellIndex].innerHTML ? -1 : 1;}).appendTo(tbody);"
echo "}).find('th:eq(3)').click().click();"
echo "</script>"
fi
rm $myEMMDataOSCAM.tmp
rm $myEMMDataCCAM.tmp
cat $myEMMDataOSCAM | grep "[A-F,0-9][A-F,0-9] hex / [0-9][0-9][0-9]:" > $myEMMDataOSCAM.tmp
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das Digital Eliteboard ist ein kostenloses Forum und ist auf Spenden angewiesen, um sich auch in Zukunft selbst zu finanzieren. Wenn auch du mit dem Digital Eliteboard zufrieden bist, würden wir uns über jede Unterstützung freuen.
Hier kannst du uns unterstützen SPENDEN