CRC25 - kuidas ? - Printerisõbralik versioon +- Elektroonikafoorum.com (https://elektroonikafoorum.com) +-- Foorum: Arutelud (https://elektroonikafoorum.com/forum-3.html) +--- Foorum: Programmeerimine (https://elektroonikafoorum.com/forum-5.html) +--- Teema: CRC25 - kuidas ? (/thread-592.html) |
RE: CRC25 - kuidas ? - felch - 29-01-2015 (29-01-2015, 09:49 AM)A.R. Kirjutas: Olen nüüd sealmaal et võtsin ette selle Kassi C teksti. Kas ELFA on ikka veel olemas ... ? Jada eelviimane on 0x03: 09 4E 01 01 00 00 00 00 00 02 03 51 04 03 32 - > CRC=7F1C On võimalik, et liitmist alusatakse lõpust. Ja veel on võimalik, et viimane bait 0x32 liidetakse viimasena ehk alustad 03 04 51 03 02 jne ja lõpuks võtad 0x32. Häkkerite dokumentatsioon on mannetu... Näidisjada algallikas koos lühikese seletusega: http://eastbay-rc.blogspot.com/2013/04/mavlink-protocol-notes-packet-decoding.html RE: CRC25 - kuidas ? - A.R. - 29-01-2015 Tsitaat:On on olemas Tsitaat:Panin selle kassi ja Java kokku. Nii nagu javast aru sain. Selle korduva vaatamise tegin nagu arvasin õigeks. Nüüd näitab tulemusiiga bait järel aga Täpselt sama "loll" Vaatan seda näidist veel natuke ja katsun ka teistpidi arvutada. Ega siis ometigi nii .... ei ole? RE: CRC25 - kuidas ? - A.R. - 29-01-2015 Proovisin selles jadas ükshaaval vahetada kõik koodid 0 kuni ff kontrollisi kas on 1c7f või 7f1c oli mõned 7f ja mõned 1c aga koos ei ühtegi Midagi on mäda. oli mingi kivi selleks CRCks? Vast on midagi teisti? RE: CRC25 - kuidas ? - felch - 30-01-2015 (29-01-2015, 07:00 PM)A.R. Kirjutas: Proovisin selles jadas ükshaaval vahetada kõik koodid 0 kuni ff Eraldi kivi ei ole, prose teeb ise kõik ära. Ma ka ei suuda kuidagi õiget vastust leida, katsetan edasi. Kas saaksid seletada, kuidas toimivad baidi akumuleerimise koodi read: Kood: static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum) RE: CRC25 - kuidas ? - madis - 30-01-2015 (30-01-2015, 09:40 PM)felch Kirjutas:(29-01-2015, 07:00 PM)A.R. Kirjutas: Proovisin selles jadas ükshaaval vahetada kõik koodid 0 kuni ff Krt see on nagu c-obfuscation võistlus. miks mitte kirjutada inimese moodi kood lahti ? RE: CRC25 - kuidas ? - admin - 04-02-2015 (30-01-2015, 09:40 PM)felch Kirjutas: static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum) data on järgmine bait buffrist, *crcAccum on hetke crc väärtus ja uus väärtus kirjutatakse sinna ka tagasi. Sinu postitatud buffri crc tuleb 0x7F1C. crc = 0xFFFF; crc_accumulate(buffer[0], crc); // 0x09, crc=0x9246 crc_accumulate(buffer[1], crc); // 0x4E, crc=0x8CDA ... crc_accumulate(buffer[14], crc); // 0x32, crc = 0x7F1C, edit: index 15 oli vale, 14 on õige RE: CRC25 - kuidas ? - A.R. - 04-02-2015 (04-02-2015, 02:48 PM)admin Kirjutas: data on järgmine bait buffrist, *crcAccum on hetke crc väärtus ja uus väärtus kirjutatakse sinna ka tagasi.Näidisjada http://eastbay-rc.blogspot.com/2013/04/mavlink-protocol-notes-packet-decoding.html oli selline _0__1__2__3__4__5__6__7__8__9__a__b__c__d__e__f_10 FE_09_4E_01_01_00_00_00_00_00_02_03_51_04_03_1C_7F 1. näidis ____0__1__2__3__4__5__6__7__8__9_10_11_12_13 jada elemendid 0 kuni ... FE_09_9E_01_01_00_00_00_00_00_02_03_51_04_03_7A_6C 2.näidis ___09_4E_01_01_00_00_00_00_00_02_03_51_04_03_32 3. Mina, ei tea kust võetud 32. Küsimused: 1. Kust tulid 14. ja 15. element? 2. Mis programmiga see asi lahendatud on? LabView anndvat ok tulemused. Aga C-s transleeritud programm ei lange kokku isegi peale esimest ringi. MIDAGI ON KUSKIL MÄDA. _______________________________ Mudisin natuke neid nelja rida ja sain esimese rea tulemuse samaks. Muutujate kirjeldused, & käsud. Aga juba teine rida ikka ei klapi. RE: CRC25 - kuidas ? - admin - 04-02-2015 (04-02-2015, 05:28 PM)A.R. Kirjutas: Näidisjadamy bad... index 15 oli vale, õige on 14. 14 ehk viimane bait on siit: https://github.com/marhar/eastbay-mavlink/blob/master/demos/parse-stream.py#L46 Kogu programmi käik Kood: buffer [09 4e 01 01 00 00 00 00 00 02 03 51 04 03 32], length=15 Kui sa teed bittide nihutamist, siis pead kandma hoolt, et väärtusel oleks kasutuses õige arv bitte (tmp puhul 8 ja crc puhul 16) Kuna php's ei ole Xbitiseid muutujaid, siis kahes kohas toimub ületäitumine ja ülemised bitid peab nullima. Kood: $tmp = $data ^ ($crc & 0xff); RE: CRC25 - kuidas ? - A.R. - 04-02-2015 Nojahh, jälle ei saa peeglist mööda minna kui ei taha lolli näha. EI OLE typedef unsigned int uint8_t; typedef unsigned short uint16_t; VAID on typedef unsigned char uint8_t; typedef unsigned short uint16_t; Oehhh. Aga kust tuli see 0x32 see on veel (eel)viimane probleem. RE: CRC25 - kuidas ? - admin - 04-02-2015 (04-02-2015, 08:50 PM)A.R. Kirjutas: Aga kust tuli see 0x32 see on veel (eel)viimane probleem. sõnumi ID järgi valid MAVLINK_MESSAGE_CRCS massiivist. Käesoleva sõnumi ID on 0, seega massiivist võtad index 0 pealt väärtuse 50 (0x32 hexis). MAVLINK_MESSAGE_CRCS väärtust kasutad ainult crc kalkuleerimisel ja saadetavas (vastuvõetavas) sõnumisse seda ei panda. Kood: MAVLINK_MESSAGE_CRCS=[ |