Christina Quast | b894691 | 2015-05-12 16:02:48 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
Christina Quast | 152e878 | 2015-05-14 17:14:34 +0200 | [diff] [blame] | 3 | import socket |
| 4 | import array |
Christina Quast | b894691 | 2015-05-12 16:02:48 +0200 | [diff] [blame] | 5 | |
| 6 | ip="127.0.0.1" |
| 7 | port=4729 |
| 8 | sp=58621 |
Christina Quast | 2a9c063 | 2015-05-12 19:31:00 +0200 | [diff] [blame] | 9 | gsmtap_hdr="\x02\x04\x04"+"\x00"*13 |
Christina Quast | b894691 | 2015-05-12 16:02:48 +0200 | [diff] [blame] | 10 | |
Christina Quast | 2a9c063 | 2015-05-12 19:31:00 +0200 | [diff] [blame] | 11 | # FIXME: Is ATR something special? |
Christina Quast | b894691 | 2015-05-12 16:02:48 +0200 | [diff] [blame] | 12 | |
Christina Quast | 2a9c063 | 2015-05-12 19:31:00 +0200 | [diff] [blame] | 13 | def gsmtap_send_apdu(data): |
Christina Quast | 152e878 | 2015-05-14 17:14:34 +0200 | [diff] [blame] | 14 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
| 15 | s.connect((ip, port)) |
| 16 | s.send(gsmtap_hdr+data.tostring()) |
| 17 | s.close() |
Christina Quast | 2a9c063 | 2015-05-12 19:31:00 +0200 | [diff] [blame] | 18 | |
| 19 | if __name__ == '__main__': |
Christina Quast | ebd0fa9 | 2015-05-29 16:42:51 +0200 | [diff] [blame] | 20 | cmds = ("\x3B\x99\x18\x00\x11\x88\x22\x33\x44\x55\x66\x77\x60", # ATR |
| 21 | "\xa0\xa4\x00\x00\x02\x6f\x7e\x9f\x0f", # SELECT FILE |
| 22 | "\xa0\xd6\x00\x00\x0b\xff\xff\xff\xff\x09\xf1\x07\xff\xfe\x00\x03\x90\x00", # UPDATE BINARY |
Christina Quast | 152e878 | 2015-05-14 17:14:34 +0200 | [diff] [blame] | 23 | ) |
Christina Quast | 2a9c063 | 2015-05-12 19:31:00 +0200 | [diff] [blame] | 24 | for cmd in cmds: |
Christina Quast | 152e878 | 2015-05-14 17:14:34 +0200 | [diff] [blame] | 25 | gsmtap_send_apdu(array.array('B', cmd)) |