Hallo Leute!
Vorab ich habe die Forenregeln gelesen!!!
In unserer Firma gibt es 7 Sharp Kopierer, auf denen einige Kopierkostenstellen eingerichtet sind.
Die Kopierer loggen dann jede Kopie bzw. Druck die auf diese Kostenstellen gemacht werden mit.
Nun möchte ich, dass jeden Tag diese Zählerstände in eine Datenbank geschrieben werden, damit ich diese dann einfach auswerten kann.
Die Kopierer stellen diese Logfiles als CSV Datei zum download bereit.
Das Probelm das ich habe ist, dass die Webseite bzw der Download der CSV Datei mit einem Passwort geschützt ist.(Javascript)
Nun das Passwort habe ich, nur funktioniert die Angabe bei Inetget nicht.
Ich habe mir ein Script erstellt, dass per Internetexplorer diese Logdateien herunter ladet.
Dieses funktioniert zwar recht gut nur kann ich dieses nur verwenden wenn ein Benutzer am PC angemeldet ist.
Damit wir zuverlässige Daten haben sollte es aber als Dienst funktionieren, also auch wenn kein Benutzer angemeldet ist.
Kann mir jemand helfen diesen Javascript Passwortschutz zu umgehen, damit ich die CSV Datei direkt herunterladen kann?
Oder hat jemand eine andere Idee wie ich an die Daten heran komme!?
Hier der Quellcode der Seite.
Spoiler anzeigen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="style1.css" charset="UTF-8">
<title>Login - MX-4500N</title>
<!-- javascript //-->
<script type="text/javascript" charset="UTF-8" src="webpage.js"></script>
<script type="text/javascript" charset="UTF-8">
<!--
sflg = 0;
function validate( name ){
var ggt_val = new Array();
obj = document.getElementsByName("ggt_textbox(10001)");
if (obj.length > 0){
ggt_val[10001] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_textbox(10002)");
if (obj.length > 0){
ggt_val[10002] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_textbox(10003)");
if (obj.length > 0){
ggt_val[10003] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_textbox(10005)");
if (obj.length > 0){
ggt_val[10005] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_textbox(10006)");
if (obj.length > 0){
ggt_val[10006] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_textbox(10007)");
if (obj.length > 0){
ggt_val[10007] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_select(10004)");
if (obj.length > 0){
ggt_val[10004] = obj.item(0).value;
}
obj = document.getElementsByName("ggt_select(10009)");
if (obj.length > 0){
ggt_val[10009] = obj.item(0).value;
}
if (name == "loginbtn"){
if (ggt_val[10007] == ""){
alert("Benutzernummer eingeben.");
return false;
}
}
if (sflg == 0){
sflg = 1;
document.login.action.value = name;
document.login.submit();
}
}
//-->
</script>
</head>
<body onLoad="document.getElementsByName('ggt_textbox(10007)').item(0).focus()">
<a name="main"></a>
<div class="left">
<!--LOGO-->
<div class="logo">
<a href="http://sharp-world.com/" target="_blank"><img src="logo.gif" border="0" width="102" height="15" alt="Link zur Globalen Homepage von Sharp"></a>
<div class="modelName">MX-4500N</div>
</div>
<!--LOGO_END-->
<!--LINK-->
<a name="menu"></a>
<div class="menu">
</div>
<!--LINK_END-->
</div>
<form method="post" name="login" onsubmit="validate('loginbtn'); return false;">
<div class="right">
<!--TITLE-->
<div class="title"><a name="main"></a>
<h1>Login</h1>
<div class="buttonfieldHead">
<span class="headButton">
<input name="loginbtn" type="submit" value="Login(P)" onclick="validate( this.name )" accesskey="P">
<input name="adminloginbtn" type="button" value="Administrator anmelden(C)" onclick="validate( this.name )" accesskey="C" >
</span>
</div>
</div>
<!--TITLE_END-->
<!--MAIN-->
<div class="main">
<p class="ok"></p>
<table class="layout">
<tr>
<td class="layoutHead"><label id="ggtLblId10007" class="labelNormal">Benutzernummer</label></td>
<td><input name="ggt_textbox(10007)" id="element10007" type="password" size="8" maxlength="8" style="color:#000000" value="" >(5-8 Stellen)</td>
<tr>
</table>
<br>
<div><label id="ggtLblId10010" class="labelNormal">Loggen Sie sich als Benutzer ein, der die Genehmigung hat, die Seite anzuzeigen, die eine Administratorgenehmigung verlangt?</label></div>
<input type="hidden" name="action" value="">
<input type="hidden" name="ggt_hidden(10008)" value="2">
</div>
<!--MAIN_END-->
<!--FOOTER-->
<div class="footer">
<div class="topButton"><a href="#main">Zurück zum Seitenanfang<img src="top_button.gif" border="0"></a></div>
<div class="buttonfieldFoot">
<span class="footButton">
<input name="loginbtn" type="submit" value="Login(P)" onclick="validate( this.name )" accesskey="P">
<input name="adminloginbtn" type="button" value="Administrator anmelden(C)" onclick="validate( this.name )" accesskey="C" >
</span>
</div>
</div>
<!--FOOTER_END-->
</div>
</form>
</body>
</html>
Alles anzeigen
Der Code der webpage.js die in der Webseite verwendet wird.
Spoiler anzeigen
function InvalidCHK(data)
{
var i;
for(i=0; i<data.length; i++){
if ((data[i].indexOf("<") != -1)
||
(data[i].indexOf(">") != -1)
||
(data[i].indexOf("&") != -1)
||
(data[i].indexOf("\"") != -1)
||
(data[i].indexOf("#") != -1)
)
{
return false;
}
}
return true;
}
function jstrlenCHK(str)
{
var i;
var len = 0;
str = escape(str);
for (i = 0; i < str.length; i++, len++) {
if (str.charAt(i) == "%") {
if (str.charAt(++i) == "u") {
i += 3;
len++;
}
i++;
}
}
return len;
}
function jstrlen(str)
{
var i, cnt, len;
var char_length = ("ã‚".length);
var str2;
len = jstrlenCHK(str);
if(IsUnicode_escape()){ //unicode?
cnt = 0;
for(i = 0 ; i < str.length ; i = i + char_length){
str2 = str.charAt(i);
if(str2 >= "\uFF61" && str2 <= "\uFF9F") { //half size kana?
cnt++;
}
}
len = len - cnt; //correction
}
return len;
}
function IsUnicode_escape()
{
var str;
str = escape("ã‚");
//unicode=> str:"%u3042"
//not unicode=> str:"%82%A0"
if(str.indexOf("%u") != -1){
return 1; //unicode
}
else{
return 0; //NOT unicode
}
}
function InvalidCHK_Fax(data)
{
var i;
for(i=0; i<data.length; i++){
if ((data[i].indexOf("<") != -1)
||
(data[i].indexOf(">") != -1)
||
(data[i].indexOf("&") != -1)
||
(data[i].indexOf("\"") != -1))
{
return false;
}
}
return true;
}
function InvalidCHK_Doc(data)
{
var i;
for(i=0; i<data.length; i++){
if ((data[i].indexOf("\\") != -1) ||
(data[i].indexOf("?") != -1) ||
(data[i].indexOf("/") != -1) ||
(data[i].indexOf("\"") != -1) ||
(data[i].indexOf(";") != -1) ||
(data[i].indexOf(":") != -1) ||
(data[i].indexOf(",") != -1) ||
(data[i].indexOf("<") != -1) ||
(data[i].indexOf(">") != -1) ||
(data[i].indexOf("!") != -1) ||
(data[i].indexOf("*") != -1) ||
(data[i].indexOf("|") != -1) ||
(data[i].indexOf("&") != -1) ||
(data[i].indexOf("#") != -1))
{
return false;
}
}
return true;
}
function InvalidCHK_Dir(data)
{
var i;
for(i=0; i<data.length; i++){
if ((data[i].indexOf("?") != -1) ||
(data[i].indexOf("\"") != -1) ||
(data[i].indexOf(";") != -1) ||
(data[i].indexOf(",") != -1) ||
(data[i].indexOf("<") != -1) ||
(data[i].indexOf(">") != -1) ||
(data[i].indexOf("!") != -1) ||
(data[i].indexOf("*") != -1) ||
(data[i].indexOf("|") != -1) ||
(data[i].indexOf("&") != -1) ||
(data[i].indexOf("#") != -1))
{
return false;
}
}
return true;
}
function InvalidCHK_PathDir(data)
{
var i;
for(i=0; i<data.length; i++){
if ((data[i].indexOf("?") != -1) ||
(data[i].indexOf("\"") != -1) ||
(data[i].indexOf(";") != -1) ||
(data[i].indexOf(",") != -1) ||
(data[i].indexOf("<") != -1) ||
(data[i].indexOf(">") != -1) ||
(data[i].indexOf("!") != -1) ||
(data[i].indexOf("*") != -1) ||
(data[i].indexOf("|") != -1))
{
return false;
}
}
return true;
}
function ItemColorChangePass(check, item ,name)
{
var i;
for(i=0; i<item.length; i++){
if(check){
if(item[i].type == 'text' || item[i].type == 'password'){
item[i].value = "";
item[i].readOnly = false;
item[i].style.color = 'black';
}
}else{
if(item[i].type == 'text' || item[i].type == 'password'){
item[i].value = name;
item[i].readOnly = true;
item[i].style.color = '#c0c0c0';
}
}
}
}
function NameColorChange(check, name)
{
var i;
for(i=0; i<name.length; i++){
if(check){
name[i].className = "labelNormal";
}else{
name[i].className = "labelGrayout";
}
}
}
function ItemColorChange(check, item)
{
var i;
for(i=0; i<item.length; i++){
if(check){
if(item[i].type == 'text' || item[i].type == 'password'){
item[i].readOnly = false;
item[i].style.color = 'black';
}else{
item[i].disabled = false;
}
}else{
if(item[i].type == 'text' || item[i].type == 'password'){
item[i].readOnly = true;
item[i].style.color = '#c0c0c0';
}else{
item[i].disabled = true;
}
}
}
}
function LabelColorChange(check, spanId)
{
if(check)
{
spanId.className = "labelNormal";
}
else
{
spanId.className = "labelGrayout";
}
}
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
function tab_change(id){
var i;
if (document.getElementById(id).className == "selectedtab") {
} else {
for (i=0; i<tabList.length; i++) {
document.getElementById(tabList.slice(i, i+1)).className = "notselectedtab";
document.getElementById(tabList.slice(i, i+1)+"_item").className = "tabitemInvisible";
}
document.getElementById(id).className = "selectedtab";
document.getElementById(id+"_item").className = "tabitemVisible";
}
}
function singleMode(){
var i;
document.getElementById("tab").className = "tabInvisible";
document.getElementById("sigleMode").className = "sModeInvisible";
document.getElementById("tabMode").className = "sModeVisible";
for (i=0; i<tabList.length; i++) {
document.getElementById(tabList.slice(i, i+1)+"_item").className = "tabitemVisible";
}
}
function tabMode(){
var i;
document.getElementById("tab").className = "tabVisible";
document.getElementById("sigleMode").className = "sModeVisible";
document.getElementById("tabMode").className = "sModeInvisible";
for (i=0; i<tabList.length; i++) {
if (document.getElementById(tabList.slice(i, i+1)).className == "selectedtab") {
document.getElementById(tabList.slice(i, i+1)+"_item").className = "tabitemVisible";
} else {
document.getElementById(tabList.slice(i, i+1)+"_item").className = "tabitemInvisible";
}
}
}
Alles anzeigen
Mein Script das den Internetexplorer verwendet.
Spoiler anzeigen
#include <IE.au3>
#include <File.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <Array.au3>
Dim $var1[3][1]
Dim $path, $delete, $fail, $var, $varalt, $regread, $array, $c, $loop, $i
Dim $bezirke[8] = ["", "Imst", "Kitzbühel", "Kufstein", "Landeck", "Lienz", "Reutte", "Schwaz"]
Dim $bezirke2[8][2] = [[7, ""]]
Dim $array3[200][60]
Dim $sPassword = "sagichnet"
Sleep(20000)
$var1 = IniReadSection(@ScriptDir & "\configbz.ini", "Einstellungen")
If @error Then
IniWrite(@ScriptDir & "\configbz.ini", "Einstellungen", "path", @ScriptDir)
IniWrite(@ScriptDir & "\configbz.ini", "Einstellungen", "password", $sPassword)
For $i = 1 To 7
IniWrite(@ScriptDir & "\configbz.ini", "Aufstellungsort", $bezirke[$i], "10.0." & $i & ".233")
Next
$var1 = IniReadSection(@ScriptDir & "\configbz.ini", "Einstellungen")
EndIf
$bezirke = IniReadSection(@ScriptDir & "\configbz.ini", "Aufstellungsort")
$path = $var1[1][1]
;~ $delete = $var1[2][1]
$sPassword = $var1[2][1]
$i = ""
While 1
$i += 1
$var = RegEnumKey("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges", $i)
If @error <> 0 Then ExitLoop
$regread &= RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\" & $var, ":Range") & " "
WEnd
For $i = 1 To $bezirke[0][0]
If Not StringInStr($regread, $bezirke[$i][1]) Then
$ii = ""
While 1
$ii += 1
RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range" & $ii, ":Range")
If @error <> 0 Then
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range" & $ii, "*", "REG_DWORD", "1")
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range" & $ii, ":Range", "REG_SZ", $bezirke[$i][1])
ExitLoop
EndIf
WEnd
EndIf
Next
While $loop < $bezirke[0][0]
$loop = 0
For $i = 1 To $bezirke[0][0]
Ping($bezirke[$i][1], 500)
If Not @error Then
For $ii = 0 To 1
$bezirke2[$i][$ii] = $bezirke[$i][$ii]
Next
$loop += 1
Else
$fail &= $bezirke[$i][0] & @CR
EndIf
Next
TrayTip("Error", $fail, 5)
$fail = ""
If $loop = $bezirke[0][0] Then
For $i = 1 To $bezirke2[0][0]
If $bezirke2[$i][0] Then
FileMove($path & "\" & $bezirke2[$i][0] & ".csv", $path & "\Alt\" & @MDAY & "." & @MON & "." & @YEAR & "\", 9)
EndIf
Next
For $i = 1 To $bezirke[0][0]
If $bezirke2[$i][0] Then
Ping($bezirke2[$i][1], 500)
If Not @error Then
$oIE = _IECreate($bezirke[$i][1], 0, 0)
$oSubmit = _IEGetObjByName($oIE, "adminloginbtn")
_IEAction($oSubmit, "click")
_IELoadWait($oIE)
$oform = _IEFormGetObjByName($oIE, "login")
$opasswd = _IEFormElementGetObjByName($oform, "ggt_textbox(10006)")
$setpasswd = _IEFormElementSetValue($opasswd, $sPassword)
$oSubmit = _IEGetObjByName($oIE, "loginbtn")
_IEAction($oSubmit, "click")
_IELoadWait($oIE)
$oIE2 = _IECreate($bezirke[$i][1] & "/account_usercountlist_save.html", 0, 0, 1, 0)
;~ If $delete Then
;~ $oSubmit = _IEGetObjByName($oIE2, "ggt_checkbox(1)")
;~ _IEAction($oSubmit, "click")
;~ EndIf
$oSubmit = _IEGetObjByName($oIE2, "countsavebtn")
_IEAction($oSubmit, "click")
_IELoadWait($oIE2)
_IEQuit($oIE)
WinWait("Dateidownload", "")
;~ If Not WinActive("Dateidownload", "") Then WinActivate("Dateidownload", "")
;~ WinWaitActive("Dateidownload", "")
WinActivate("Dateidownload", "")
Sleep(1000)
ControlClick("Dateidownload", "", "[CLASS:Button; INSTANCE:2]")
While WinExists("Dateidownload")
WinActivate("Dateidownload", "")
ControlClick("Dateidownload", "", "[CLASS:Button; INSTANCE:2]")
WEnd
WinWait("Speichern unter", "")
;~ If Not WinActive("Speichern unter", "") Then WinActivate("Speichern unter", "")
;~ WinWaitActive("Speichern unter", "")
;~ Sleep(2000)
ControlSend("Speichern unter", "", "[CLASS:Edit;INSTANCE:1]", $path & "\" & $bezirke2[$i][0] & ".csv")
$text = ControlGetText("Speichern unter", "", "[CLASS:Edit;INSTANCE:1]")
While $text <> $path & "\" & $bezirke2[$i][0] & ".csv"
ControlClick("Speichern unter", "", "[CLASS:Edit;INSTANCE:1]", "", 2)
ControlSend("Speichern unter", "", "[CLASS:Edit;INSTANCE:1]", $path & "\" & $bezirke2[$i][0] & ".csv")
$text = ControlGetText("Speichern unter", "", "[CLASS:Edit;INSTANCE:1]")
WEnd
ControlClick("Speichern unter", "", "[CLASS:Button; INSTANCE:2]")
_IEQuit($oIE2)
WinWait("Download beendet", "")
;~ If Not WinActive("Download beendet", "") Then WinActivate("Download beendet", "")
;~ WinWaitActive("Download beendet", "")
ControlClick("Download beendet", "", "[CLASS:Button; INSTANCE:4]")
Else
$fail &= $bezirke2[$i][0] & @CR
EndIf
EndIf
Next
EndIf
If $loop = $bezirke2[0][0] Then
_dateneinlesen()
_sqlite($array3)
Sleep(86400000)
$loop = 0
EndIf
Sleep(600000)
WEnd
Func _dateneinlesen()
Dim $array3[200][60]
For $i = 1 To $bezirke[0][0]
_FileReadToArray($path & "\" & $bezirke[$i][0] & ".csv", $array)
If @error Then ContinueLoop
For $ii = 2 To $array[0]
$c += 1
$array2 = StringSplit($array[$ii], ",")
For $iii = 1 To $array2[0]
$array3[$c][$iii] = $array2[$iii]
Next
$array3[$c][0] = $bezirke[$i][0]
Next
Next
ReDim $array3[$c][$iii]
EndFunc ;==>_dateneinlesen
Func _sqlite($iarray)
Local $aResult, $iRows, $iColumns, $iRval, $i, $zeit, $datum, $hQuery
$zeit = @HOUR & ":" & @MIN & ":" & @SEC
$datum = @YEAR & "-" & @MON & "-" & @MDAY
_SQLite_Startup()
If @error > 0 Then
MsgBox(16, "SQLite Error", "SQLite.dll Can't be Loaded!", 5)
Exit -1
EndIf
_SQLite_Open("kopierer.db")
If @error > 0 Then
MsgBox(16, "SQLite Error", "Can't Load Database!", 5)
Exit -1
EndIf
If Not _SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS Gesamtliste (NR INTEGER, Zeit TIME, Datum DATE, Bezirk TEXT, Kostenstelle TEXT, Kopie_SW INTEGER, Kopie_Farbe INTEGER, Druck_SW INTEGER, Druck_Farbe INTEGER, Scan_SW INTEGER, Scan_Farbe INTEGER);') = $SQLITE_OK Then _
MsgBox(16, "SQLite Error", _SQLite_ErrMsg(), 5)
_SQLite_QuerySingleRow(-1, "SELECT Datum FROM Gesamtliste WHERE NR = (SELECT MAX(NR) FROM Gesamtliste) LIMIT 1;", $hQuery)
[/autoit] [autoit][/autoit] [autoit]If $hQuery[0] = $datum Then Return
_SQLite_QuerySingleRow(-1, "SELECT MAX(NR) FROM Gesamtliste;", $hQuery)
$hQuery[0] += 1
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To UBound($iarray, 1) - 1
If Not _SQLite_Exec(-1, 'INSERT INTO Gesamtliste VALUES ("' & $hQuery[0] & '","' & $zeit & '","' & $datum & '","' & $iarray[$i][0] & '",' & $iarray[$i][1] & "," & $iarray[$i][2] & "," & $iarray[$i][5] & "," & $iarray[$i][14] & "," & $iarray[$i][17] & "," & $iarray[$i][38] & "," & $iarray[$i][41] & ");") = $SQLITE_OK Then _
MsgBox(16, "SQLite Error", _SQLite_ErrMsg(), 5)
Next
_SQLite_Close()
_SQLite_Shutdown()
EndFunc ;==>_sqlite