Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 31

Thema: kleines PHP script zur Berechnung von CRC16 (CCITT, XMODEM, KERMIT, 1d0f, IBM)

  1. #1
    Junior
    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19

    kleines PHP script zur Berechnung von CRC16 (CCITT, XMODEM, KERMIT, 1d0f, IBM)

    Joah, im Titel ist bereits alles genannt. Es reicht bereits ein Eingabefeld, in die ich die Nachricht eingebe (Bsp.: 06 00 0e 00 00 00 9e 09 78 06 06 26 04 0a 02 06 d3 03) und ein Ausgabefeld, in der dann die Checksum steht (hier: d3 01 für KERMIT bzw CCITT-TRUE).
    Ich möchte bei der Eingabe mittels dropdown wählen können, ob die Eingabe in HEX, BIN oder DEC geschieht.

    Ich weiß, dass die Coder gerne Preise sehen wollen. Ich kann die Arbeit jedoch nicht einschätzen. Deshalb muss ich mich hier mal mit Preisen per PN zutexten lassen

    Anforderungen: es sollte ab php 5.4 sein, nicht älter. Bei Fragen einfach fragen

    - - - - - - - - - - Beitrag nachträglich erweitert - - - - - - - - - -

    Hier noch ein Nachtrag:

    Es gibt bereits Code für crc16. Allerdings für CRC-CCIT FALSE. Hier müsste aber vor dem down-shifting das lowbit geprüft werden. Allerdings bekomme ich das nicht hin, da ich das nicht so recht verstehe.

    PHP-Code:
    <?php
    // CCITT, X24
    define(CRC16POLYN,0x1021);
    define(CRC16POLYI,0x8408);

    // for "STANDARD" use 0x8005 and 0xA001

    function CRC16Normal($buffer) {
        
    $result 0xFFFF;
        if ( (
    $length strlen($buffer)) > 0) {
            for (
    $offset 0$offset $length$offset++) {
                
    $result ^= (ord($buffer[$offset]) << 8);
                for (
    $bitwise 0$bitwise 8$bitwise++) {
                    if ((
    $result <<= 1) & 0x10000$result ^= CRC16POLYN;
                    
    $result &= 0xFFFF/* gut the overflow as php has no 16 bit types */
                
    }
            }
        }
        return 
    $result;
    }

    function 
    CRC16Inverse($buffer) {
        
    $result 0xFFFF;
        if ( (
    $length strlen($buffer)) > 0) {
            for (
    $offset 0$offset $length$offset++) {
                
    $result ^= ord($buffer[$offset]);
                for (
    $bitwise 0$bitwise 8$bitwise++) {
                    
    $lowBit $result 0x0001;
                    
    $result >>= 1;
                    if (
    $lowBit$result ^= CRC16POLYI;
                }
            }
        }
        return 
    $result;
    }

    echo 
    '
        0x'
    ,dechex(CRC16Normal('06000e0000009e0978060626040a0206d303')),' == 0xd301<br />
        <br />
        0x'
    ,dechex(CRC16Inverse('06000e0000009e0978060626040a0206d303')),' == 0xd301<br />
    ?>
    Geändert von noobee (18.10.2016 um 16:08 Uhr)

  2. #2
    #NVD Avatar von HaZe
    Registriert
    Mar 2015
    Beiträge
    179
    Gefällt mir!
    78
    Du gefällst: 162
    Und du willst das unbedingt in PHP? Da is das leider echt durch die untypisierten Variablen "a real pain in the arse".
    Vllt schreibst dir einfach n Execwrapper für n Konsolentool, falls sich niemand meldet..
    "Kaum machstes richtig - schon funktionierts!"
    Kein Support per PN. :)
    ICQ 442-918
    IntelliTool Auto Upload Bot

  3. #3
    Junior
    THEMENSTARTER


    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19
    japp, php wäre schon cool.

    mhh, meinst du in der shell berechnen wäre besser? das könnte man ja auch in php an die shell senden und dann wieder abgreifen. oder was meinst mit execwrapper?

  4. #4
    Junior Avatar von fralix
    Registriert
    Jul 2016
    Beiträge
    62
    Gefällt mir!
    107
    Du gefällst: 8
    Was meinst du mit Dropdown: Willst du das quasi in einem HTML-Frontend um das dann an das Script zu senden?
    Ich muss mich erstmal belesen, was die ganzen Namen da oben bedeuten

  5. #5
    #NVD Avatar von HaZe
    Registriert
    Mar 2015
    Beiträge
    179
    Gefällt mir!
    78
    Du gefällst: 162
    ja genau das meine ich. Mit $crc = exec('crc16calculatortool '.$daten); führst du den Befehl auf der Konsole aus und hast dann die Rückgabe (Achtung, nur die letzte ausgegebene Zeile) in $crc...
    "Kaum machstes richtig - schon funktionierts!"
    Kein Support per PN. :)
    ICQ 442-918
    IntelliTool Auto Upload Bot

  6. #6
    Junior
    THEMENSTARTER


    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19
    Zitat Zitat von fralix Beitrag anzeigen
    Was meinst du mit Dropdown: Willst du das quasi in einem HTML-Frontend um das dann an das Script zu senden?
    Ich muss mich erstmal belesen, was die ganzen Namen da oben bedeuten
    Öhm, jain. Also im Prinzip reichen schon die php-funktionen. dropdown und checkboxen/radiobuttons sind fix selber drumrum gebastelt :-p Vllt sollte ich das oben doch rausnehmen. Ist ja eigentlich wirklich einfaches Gedöns -.-
    Es sollte also mindestens für folgende crc16 je eine php-funktion geben: CCITT TRUE, CCITT FALSE, KERMIT, XMODEM. Die anderen zwei (1d0f, IBM) sind mal außen vor, also eher ein Nebenprodukt, falls wer zu viel Zeit habt

    Zitat Zitat von HaZe Beitrag anzeigen
    ja genau das meine ich. Mit $crc = exec('crc16calculatortool '.$daten); führst du den Befehl auf der Konsole aus und hast dann die Rückgabe (Achtung, nur die letzte ausgegebene Zeile) in $crc...
    naja, dafür müsste ich auch erst das tool basteln... Der Anfang war ja schon mit shell_exec() da, aber irgendwie reichts eben nicht. Also rein mit der shell gehts nicht. Es müsste also ein "eigenes" tool her, welches dann mittels shell_exec genutzt werden kann. Ich glaub, da ist php besser. Auch wenn du natürlich damit
    untypisierten Variablen "a real pain in the arse".
    absolut recht hast. Was ich da schon manchmal an Zeiot verloren habe -.-


    Achja, zum Testen gibts die bekannte Seite https://www.lammertbies.nl/comm/info...lculation.html

    Und hier mehr über CRC16 Catalogue of parametrised CRC algorithms
    Geändert von noobee (18.10.2016 um 21:51 Uhr)

  7. #7
    Anfänger Avatar von Darkbasic
    Registriert
    Oct 2016
    Alter
    45
    Beiträge
    21
    Gefällt mir!
    4
    Du gefällst: 4
    Damit das läuft, Jungs, muss auch shell_exec in der php.ini aktiviert sein.

  8. #8
    #NVD Avatar von HaZe
    Registriert
    Mar 2015
    Beiträge
    179
    Gefällt mir!
    78
    Du gefällst: 162
    In c z.b. gäb es das als fertige Funktion.. ich würde annehmen die anderen Implementierungen kann man auch finden.
    c - Function to Calculate a CRC16 Checksum - Stack Overflow
    "Kaum machstes richtig - schon funktionierts!"
    Kein Support per PN. :)
    ICQ 442-918
    IntelliTool Auto Upload Bot

  9. #9
    Junior
    THEMENSTARTER


    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19
    Naja, deshalb hab ich es ja hier "in Auftrag" gegeben, weil ich doch n bissi zu bleede dafür bin. Selbst wenn der c-code gehen würde. Ich könnte ihn nicht auf php ummünzen.

    Shell_exec funzt, es muss also jemand in meiner php.ini schon eingestellt haben :-D

  10. #10
    Junior
    Registriert
    Mar 2015
    Beiträge
    90
    Gefällt mir!
    11
    Du gefällst: 45
    Ich muss sagen, gut, dass du noch nichts unternommen hast. Vor allem das Shell-Exec solltest du tunlichst vermeiden. Die Algorithmen sind nun wirklich denkbar simpel. Solltest du noch weiteren Bedarf an der Lösung haben kannst du dich bei mir per PN melden - am besten direkt mit weiteren Kontaktmöglichkeiten (jabber/icq/....).

  11. Diesen Mitgliedern gefällt dieser Beitrag:


  12. #11
    Junior
    THEMENSTARTER


    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19
    ich suche vergebens deine icq nummer

  13. #12
    #NVD Avatar von HaZe
    Registriert
    Mar 2015
    Beiträge
    179
    Gefällt mir!
    78
    Du gefällst: 162
    Nu bin ich gespannt: Wieso sollte man Shell_Exec vermeiden?
    "Kaum machstes richtig - schon funktionierts!"
    Kein Support per PN. :)
    ICQ 442-918
    IntelliTool Auto Upload Bot

  14. #13
    VIP Team Avatar von Unlimiter
    Registriert
    Mar 2015
    Beiträge
    728
    Gefällt mir!
    125
    Du gefällst: 632
    Weil shell_exec ein Sicherheitsrisiko darstellen kann (nicht zwingend muss). Deswegen sollte man es auch nur dann anwenden, wenn es gar nicht anders möglich ist und man weiß was man macht.

    Ein Fall wo es z.b. wäre: man hat in einer Variable, die bei Shell_exec verwendet wird, einen Userinput dabei, der nicht ausreichend geprüft wird.

    Im Prinzip dasselbe wie bei ner plain-sql query mit Userinput. In beiden Fällen hängts davon ab, was der Coder davor für Überprüfungen gemacht hat (für zulässige Inputs) oder überhaupt nur fixe Inputs zulässt (im Code festgelegt).

    // Ist sehr wahrscheinlich etwas, dass du direkt schon voraussetzt, aber der ein oder andere gar nicht beachtet.

  15. #14
    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,234
    Du gefällst: 2,814
    In shell_exec sehe ich keinerlei Risiko. Ob nun der Server minderwertig gesichert ist, oder das Script ... der Webservice läuft unter restricted User. Wenn also wer den Server anhand einer Injection hackt, dann kommt das dem Ausnutzen von shell_exec gleich.
    SzeneBox.org bei Telegram https://t.me/szenebox

  16. Diesen Mitgliedern gefällt dieser Beitrag:


  17. #15
    VIP Team Avatar von Unlimiter
    Registriert
    Mar 2015
    Beiträge
    728
    Gefällt mir!
    125
    Du gefällst: 632
    Ne, ist absolut kein Risiko in einem PHP Script

    Schon mal diese 2 Zeilen ausprobiert?

    Code:
    $var = ""; // beliebige variable
    var_dump(exec($var));
    oder
    Code:
    $var = ""; // beliebige variable mit parameter
    var_dump(exec(ls . $var));
    Sowas nennt man dann "Risiko", weil eventuell möchte man nicht, dass der User sich den gesamten File-Tree ansieht (einfachstes Beispiel). Darum rät man auch gerne davon ab es zu verwenden, oder es nur dann einzusetzen, wenn man weiß was man macht (Inputvalidierung).

    // Wir stellen uns einfach vor das $var wäre mit einem $_GET oder $_POST Parameter befüllt.

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. (Suche) - Grafiker für kleines Logo
    Von Alexej im Forum Designer (Grafik/Video/...)
    Antworten: 3
    Letzter Beitrag: 06.04.2018, 20:44
  2. (Suche) - Webentwickler für kleines CMS
    Von VTK im Forum Entwickler / IT-Techniker
    Antworten: 1
    Letzter Beitrag: 21.09.2017, 17:12
  3. Ein kleines Twitter Script für private Zwecke?
    Von Darren im Forum Mainstream Talk & OffTopic
    Antworten: 0
    Letzter Beitrag: 24.05.2016, 14:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org