Jag håller på med ett program som skall läsa SMS från en mobil. Problemet är att SMS'et skickas som hex och jag vet ej hur jag får ut det i klartext i min VP app. Det ser inte ut att vara ascii, så frågan är hur det är kodat. Du får nog försöka leta upp standarden. det är jävligt svårt.... verkar som att de första 18 siffrorna inte ingår... > Hur får jag ut det i VB da? > KLOTTER HEJ HOPP Hur fan ska man kunna lösa detta.... detta står i Ericsson Developers Guide: Hmm... nollorna där i mitten ser knepiga ut. Förmodligen börjar meddelandet efter det, och så finns det nog nån checksumma i slutet... In case of SMS: GSM 04.11 SC address followed by GSM 03.40 TPDU in När jag läser i olika manualer så finns det tydligen 2 sätt att ta emot SMS, antingen via ren ASCii text (som inte används av operatörerna längre) eller "PDU mode" som är denna HEX kombination.... Det ska tydligen ligga med en timestamp också i detta format: Har du möjlighet att skriva ett meddelande och sen se vad det blir för koder av? > Det ska tydligen ligga med en timestamp också i detta format: A = 07916407970900F1110000800000FF0141 Nej, huvudsaken här är att jag kan jämföra meddelanden och se vad som skiljer dem åt (för det borde rimligtvis vara själva texten som skiljer sig). BB = 07916407970900F1110000800000FF024261 såhär blev C när jag la till mitt mobil nummer "0739836694" det verkar som han vänder på allt.... Hej Hej alla glada hackes.. Jag håller också på med SMS problemet. Så här långt har jag kommit. Vi kanske kan hjälpas åt. Frågan är ju bara hur själva meddelandet är kodat? Här kommer ett exempel fy helvete....HEX problem
hur gör jag?
HEX:
07916407970900F1040B916407940261F4000020304221933248104BE6934A2D4A41C8A212847C4Sv: HEX problem
(Alltså; problemet är inte att det är hex, problemet är att hex-siffrorna inte motsvarar bokstäver.)Sv: HEX problem
har en liten mall....
07916407970900F104 - 0B916407940261F4000020304221933248104BE6934A2D4A41C8A212847C4
07 = byte i SMSC adress
91 = TON
6407970900 = SMSC
F104 = Header data
Resten är nog meddelandet....
Hur får jag ut det i VB da?Sv: HEX problem
Du måste veta hur texten är kodad. Vanligast är ju ascii, men eftersom det inte används här vet jag inte vad det är. Det kan ju vara vad som helst. Något eget påhitt till och med.
Om du vet vad meddelandet innehåller för text så är det ju lättare att ta reda på.Sv: HEX problem
Hmm... 16 bytes... men meddelandet består av 30,5. För övrigt så blir "KLOTTER HEJ HOPP" så här i hex (ascii):
4B4C4F545445522048454A20484F5050.Sv: HEX problem
In case of SMS: GSM 04.11 SC address followed by GSM 03.40 TPDU in
hexadecimal format. ME/TA converts each octet of TP data unit into two
IRA-character long hexadecimal numbers.
In case of CBS: GSM TPDU in hexadecimal format.
är det till någon hjälp?Sv: HEX problem
Sv: HEX problem
hexadecimal format. ME/TA converts each octet of TP data unit into two
IRA-character long hexadecimal numbers.
In case of CBS: GSM TPDU in hexadecimal format.
> är det till någon hjälp?
Hmm... octet är ju byte, och long är fyra byte. Men jag behöver mer att gå på, för jag känner inte till de gsm-specifika termerna. Finns dokumentet att ladda ner någonstans eller kan du skicka det till mig?Sv: HEX problem
Du får gärna kolla i Ericssons Developers Guide:
http://www.samport.se/T39_DG_AT_R1A.pdf
kolla även på:
http://www.btinternet.com/~mrbush/appdev.htmSv: HEX problem
2002-03-24 16:53:20
blir:
20304261350200
de sista 00 står för GMT+00
helsjukt...Sv: HEX problem
I så fall, testa gärna följande fyra meddelanden:
A
AA
AAAA
BSv: HEX problem
Jo, här har vi det: 2030422193324810
2002-03-24 12:39:23 GMT +01Sv: HEX problem
AA = 07916407970900F1110000800000FF02C120
AAA = 07916407970900F1110000800000FF03C16010
AAAA = 07916407970900F1110000800000FF04C1603008
B = 07916407970900F1110000800000FF01C2
Observera att dessa textmeddelande är EJ SKICKADE VIA NÄTET så SMCS har inte lgt till någon information... timestamp osv... men det spelar kanske ingen roll....Sv: HEX problem
Det som skiljer dem åt är följande:
A: 141
AA: 2C120
AAA: 3C16010
AAAA: 4C1603008
B: 1C2
Vad vi kan notera är att första siffran ökar med antalet bokstäver i meddelandet, så vi kan nog dra slutsatsen att de två siffrorna (efter FF) anger längden på meddelandet. Siffrorna därefter är nog själva meddelandet...
I första fallet är det logiskt med 41 eftersom det är hexkoden för A. Men sen stämmer det inte längre. Två stycken A blev ju inte 4141 utan det blev C120. Tre A:n blev sedan C16010 (notera att C1 är samma som vid två A:n), och fyra A:n är C1603008 (här är C1 samma som vid två A:n och C160 som vid tre A:n)...
Fast att B blev C2 hänger jag inte med på...
Vad blir följande:
BB
BBBB
C
CC
?Sv: HEX problem
BBBB = 07916407970900F1110000800000FF0442A15008
C = 07916407970900F1110000800000FF0143
CC = 07916407970900F1110000800000FF02C3A1Sv: HEX problem
07916407970900F131190A8170933866490000FF01C3Sv: HEX problem
Så var det med det intressan.
Gör StrReverse på hela klabbet och vaska fram godiset.
bra jobbat
SvenSv: HEX problem
Om det vi ska skicka ser ut så här :
0011000B916407553946F60000AA0AE8329BFD4697D9EC37
00= första octeten är ett optional
11 = ??
00 = referensnummer (telefonen sätter det själv
0B = Längden på telnummret (11 tecken)
91 = internationellt format av numret
6407553946F6 = telnumret. (46705593646F) om numret är ojämt lägg till ett F sist. vänd numret 2 & 2 vilket ger 46 bli 64, 70 blir 07 osv.
00 = protokoll id nr.
00 = Datakodnings shema. 7 bitar. om det hade varit 02 hade vi använd smart SMS
AA=giltighets tid AA = 4 dagar (default)
0A = längden av meddelandet.
AE8329BFD4697D9EC37 = meddelandet. hellohello
Meddelandet består av 23 okteter (46 tecken)
för att sända det här gör ni följande
Koppla in mobilen mot com porten och använd ex hyperterminal.
slå
AT+CMGF=0 Sätter telefonen til PDM mode
AT+CSMS=0 Kollar ifall modemet (telefonen) klarar av SMS
AT+CMGS=23 Väljer att sända 23 okteter exluderat de två första nollorna
Hyperterminal visar förhoppningsvis
>
ange då strängen
0011000B916407281553F80000AA0AE8329BFD4697D9EC37
tryck ctrl-z
Klurit ???
/MickeSv: HEX problem
Läste om det i en SMS dev guide och där stod det att det iaf inte skulle vara krypterat....Sv: HEX problem
Meddelandet “hellohello” som ser ut så här
E8329BFD4697D9EC37
består av 10 tecken, som kallas septeter när det representerar 7 bitar var. Dom här septeterna måste transformeras till octeter innan vi sänder vårt SMS.
h har ett binärt värde som är 1101000
för att h ska hexadecimalt E8 tar vi nästa bokstav som är e
e har ett binärt värde som är 1100101.
Nu komme det kluriga. Vi tar sistea talet i e som är en etta.
placerar den längst fram i h´s binära tal som då blir 1 1101000 vilket ger E8.
Nu har vi förbrukat e´s sista siffra. Då återstår 110010.
För att få fram Hex 32 tar vi nästa bokstavs binära tal efter e som är l.
l har ett binärt värde som är 1101100.
Nu tar vi de två sista siffrorna i l som är 00 och placerar dessa längst fram i de resterande 00 110010. vilket ger 32.
På så sätt fortsätter vi runt tills alla tal är förbrukade. och då börjar vi om.
/MickeSv: HEX problem
varför inte skicka det e ren ASCII HEX från början?
du har inte gjort något script som ränknar ut detta?