Znalazłem to post, w jaki sposób kodować dane ASCII do 7-bitowego zestawu znaków GSM, jak odszyfrować ponownie 7-bitową postać GSM (cofnąć ją do ascii)?dekodowanie 7-bitowe GSM
Odpowiedz
Na python2:
import binascii
gsm = ("@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞ\x1bÆæßÉ !\"#¤%&'()*+,-./:;<=>?"
"¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑÜ`¿abcdefghijklmnopqrstuvwxyzäöñüà")
ext = ("````````````````````^```````````````````{}`````\\````````````[~]`"
"|````````````````````````````````````€``````````````````````````")
def gsm_encode(plaintext):
result = []
for c in plaintext:
idx = gsm.find(c)
if idx != -1:
result.append(chr(idx))
continue
idx = ext.find(c)
if idx != -1:
result.append(chr(27) + chr(idx))
return ''.join(result).encode('hex')
def gsm_decode(hexstr):
res = hexstr.decode('hex')
res = iter(res)
result = []
for c in res:
if c == chr(27):
c = next(res)
result.append(ext[ord(c)])
else:
result.append(gsm[ord(c)])
return ''.join(result)
code = gsm_encode("Hello World {}")
print(code)
# 64868d8d903a7390938d853a1b281b29
print(gsm_decode(code))
# Hello World {}
Jest to bardzo proste rozwiązanie:
Konwersja hex oktetów binarnych umieścić każdy bajt w tablicy, ale w odwrotnej kolejności (cały bajt, nie bity) ponieważ w ten sposób są wysyłani. Czytaj ciąg znaków od prawej do lewej w 7 bitów grupami liczba jest kodem znaku w bitowej tabeli
Na przykład GSM 7:
C7F7FBCC2E03 oznacza „Google”
ciąg w odwrotnej kolejności jest
03-2E-CC-FB-F7-C7
sześć oktetów są
00000011-00101110-11001100-11111011-11110111-1 1000111
W septets są
000000-1100101-1101100-1100111-1101111-1101111-1000111
Czytaj następnie od prawej do lewej strony to:
septet dziesiętnego Valor-Char w 7bit GSM tabela
1000111-71-G
1101111-111-O
1101111-111-O
1100111-103-g
1101100-108-l
1100101-101-e
Anuluj ostatni 0000000 wartość
na przykład:
C7F7FBCC2E03 oznacza "Google"
Python 3.4
def gsm7bitdecode(f):
f = ''.join(["{0:08b}".format(int(f[i:i+2], 16)) for i in range(0, len(f), 2)][::-1])
return ''.join([chr(int(f[::-1][i:i+7][::-1], 2)) for i in range(0, len(f), 7)])
print (gsm7bitdecode ('C7F7FBCC2E03'))
Działa również w języku Python 2.7.11 –
Pisałem such decoder wc dla urządzenia OpenWrt:
uint8_t get_data (char input, uint8_t * output)
{
if (input - '0' >= 0 && '9' - input >= 0) {
* output = input - '0';
} else if (input - 'a' >= 0 && 'f' - input >= 0) {
* output = input - 'a' + 10;
} else if (input - 'A' >= 0 && 'F' - input >= 0) {
* output = input - 'A' + 10;
} else {
return 1;
}
return 0;
}
uint8_t get_data_pair (const char * input, uint8_t * output)
{
uint8_t data;
if (get_data (* input, &data) != 0) {
return 1;
}
* output = data << 4;
if (get_data (* (input + 1), &data) != 0) {
return 2;
}
* output = * output | data;
return 0;
}
int main (int argc, char * argv [])
{
if (argc != 2) {
fputs ("required argument: hex\n", stderr);
return 1;
}
char * hex = argv[1];
uint16_t data = 0;
uint8_t data_length = 0;
while (*hex != '\0') {
uint8_t new_data;
if (get_data_pair (hex, &new_data) != 0) {
fprintf (stderr, "invalid hex: bad pair %.2s\n", hex);
putchar ('\n');
return 2;
}
hex += 2;
data = new_data << data_length | data;
data_length += 8;
while (data_length >= 7) {
putchar (data & 0x7f);
data = data >> 7;
data_length -= 7;
}
}
putchar ('\n');
return 0;
}
- 1. Identyfikacja algorytmu szyfrowania GSM
- 2. Modem GSM wyślij SMS
- 3. Zapisywanie sterownika modemu GSM?
- 4. żądania: wyłącz automatyczne dekodowanie
- 5. Dekodowanie nagłówków RFC 2231
- 6. Podstawowe dekodowanie Mime C#
- 7. Python base64 dekodowanie ciągów
- 8. Dekodowanie JSON w C#
- 9. FiddlerCore dekodowanie odpowiedzi sdch
- 10. Zig Zag Dekodowanie
- 11. Dekodowanie wszystkich obiektów HTML
- 12. Dekodowanie strumienia wejściowego
- 13. Dekodowanie obszaru roboczego todataURL
- 14. Dekodowanie dużego łańcucha base64
- 15. Dekodowanie ramki sieciowej
- 16. Dekodowanie protokołu replikacji AirPlay
- 17. javax.mail - Problem dekodowanie przedmiotem
- 18. dekodowanie h264 w ios
- 19. Dekodowanie URL w PHP
- 20. Wdrażanie modemu GSM do wiadomości SMS
- 21. Połączenie głosowe za pośrednictwem modemu GSM
- 22. Czy można przekazać połączenie VoIP do GSM
- 23. Znajdź port modemu gsm w języku C#
- 24. Dekodowanie danych base64 do obrazu
- 25. PHP UTF-8 Dekodowanie Issue
- 26. Dekodowanie kodowania HTML C# MVC4
- 27. Chunked dekodowanie http w java?
- 28. dekodowanie aac-a w Linuksie
- 29. Dekodowanie z QGraphicsScene i QGraphicsView
- 30. Dekodowanie tego dziwnego kodu Javascript
zrób odwrotnie ... –
gdzie utknąłeś? – monkut