查看: 17750|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & r( e" n! }( c9 k) B9 K! z3 f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 [$ @! m/ f" G' j, m! s  d  ~6 @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& @8 N: A# Y- ]8 n, T
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 I0 e! ?3 C2 F  n: H% Z5 R6 d6 M2 y6 b4 @1 {9 v! `' P
. c& O- n6 u! q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! A2 D) q* u; b1 `" z0 y4 G! ^

7 e" U2 ^9 I% Q8 k3 X. L补充内容 (2012-3-8 09:42):
9 U3 [/ }+ t  `5 Z# |  bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# ~2 B6 R: Q: n3 m% y) T' e% e& _/ D
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! g, S2 p8 ^, c  h& X: z5 G2 D

  U8 G6 E; j+ u9 R" f, M8 Ahimr <address> <value>. sample: himr 0x80040000 0x08 O/ ]1 t1 t' _6 n9 N; R
0 p! `3 \* O) y  w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* k; ?2 g7 f3 _0 b4 N
himr 0x80040000 0x002 M1 m' G8 r! z# j
himr 0x80040001 0x11
3 S& \. T% C6 y8 dhimr 0x80040002 0x22
. q& F, p3 H( c/ P  Chimr 0x80040003 0x33: o8 Q  h8 ~3 P2 e; T
himr 0x80040004 0x44
7 |& y) j4 V1 m6 ?$ ]. ihimr 0x80040005 0x55
3 v  W5 w9 V; C) D: J
1 S5 m' }' [: ]; }+ @SN也是类似。
6 r; p* w. E7 g; v2 d/ n# y5 b
现在主要是,谁告诉我们MAC和SN的地址?* B, \- F9 D' w- ~2 r5 ^- [! p: p
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( M; U9 \' n5 y0 d9 J/ S' `2 l# B
一直想找到运程修改MAC和SN的办法,苦于无解啊

+ C% {6 b6 d* b1 Q& D$ K6 i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , K$ E! }! C9 o- _/ j( q$ P) ]
$ E6 \; \7 Q# n( T
修改的代码早有了。到今天不会编译。" v, S, Q3 N+ X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- y( W" t# `! Z0 e* C
  2. #include <malloc.h>
    : _$ ^8 J4 B; S, a# O6 X
  3. #include <sys/types.h>1 t; X7 [% @7 F+ H# G4 v0 c" H
  4. #include <sys/stat.h>  {, `" O) o4 Z' V9 D
  5. #include <sys/ioctl.h>
    $ a9 U4 ^0 M, Q8 r& `, [3 H5 ^
  6. #include <stdio.h>/ p. f( D2 c  U5 J. P9 b9 `2 b
  7. #include <string.h>2 s7 R7 F6 U+ a; W) E
  8. & e  ^. w: p) g" V( \+ @7 [
  9. typedef struct {
    $ E7 I# N  r# }/ h
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 {2 V2 W! R9 c
  11.         unsigned int        sub_addr_count;
    1 c3 t  ?" V1 P5 q" Z$ S: x% t
  12.         unsigned char*        e2prom_cmd_data;
    ! i. ?: v5 @3 Y1 i
  13.         unsigned int        data_count;
    # z$ H; h$ \9 s2 s
  14. } e2prom_s_cmd;7 h6 S% k! N  n4 ^  r
  15. 3 z% d1 Q' i& I9 T5 B
  16. #define E2PROM_CMD_READ 1
    # ^+ H. ]. q' \3 x' l2 K" `: p, u
  17. #define E2PROM_CMD_WRITE 2
    . p& d, `& }: V3 g% L% F; m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 k- `; v& a) t- t: _

  19. . ]9 ?; ~$ ]1 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid): Z' A5 A" l( i- ]' ]# q
  21. {
    $ M6 l: a* n( F/ j  Y
  22.         int fd, ret;& O* f% T- R3 L( o
  23.         e2prom_s_cmd arg;3 g7 V# x6 w$ M' M4 L# \& D
  24.         unsigned char buf[0x18];: F3 v7 R7 k) o: s/ I5 j9 Y: g1 p1 e

  25. 5 a! X) ]' ]- W: S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 C8 }) Z: [) i: \6 Z4 N1 O
  27.         if (fd  < 0) {
    : p& j& i  s5 C: M  }3 y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' t0 o" k2 ?! z; O$ [
  29.                 return -1;
    + D' O0 q, z: m2 U# U
  30.         }
    $ V2 I: _( {- G6 \( a
  31.         arg.sub_addr_count      = 2;
    8 D9 E5 `! `( k: _8 [9 n- l
  32.         arg.data_count          = 0x18;
    + n. T5 C' `2 h7 ?) ?+ ?: u
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' I; a9 y4 u3 Q; B
  34.         arg.e2prom_cmd_data     = buf;) l) w/ O+ d0 l  r! f% `$ ?" r9 U& ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" E) _" X9 z" w5 E0 l
  36.         if (ret != 0) {
    2 g7 m) X  ^8 T0 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: l" m- ]0 n  o# z
  38.                 return -1;
    6 f0 D# l0 h8 N% U- w
  39.         }2 ~% A( A# v' l4 t
  40.         memcpy(mac, buf, 6);
    + r, K8 K6 E: ]1 Q. |: J; W- |
  41.         memcpy(stbid, &buf[6], 18);
    # t9 h; A6 e! ^- g
  42.         stbid[18] = '\0';
    / Z1 e+ z. H% K
  43. ) L, p  B% X. \! Q8 }
  44.         return 0;
    5 g# I7 J! K2 f$ F7 s- j' H  }
  45. }' I; }+ v& Z% w0 I6 {: m
  46. ( C' Y9 k1 l) R2 J1 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). y- N0 f+ Q9 u  G
  48. {
    2 I" W' j) X' b2 n) w" w
  49.         int fd, ret;& I# M  \  n1 E" R: p7 n
  50.         e2prom_s_cmd arg;, S6 z" j$ Q: U, f7 ]
  51.         unsigned char buf[0x18];9 `# q4 @' W7 F9 n, y+ x# E" Q
  52. 3 w3 b2 m: m" |* j$ ^
  53.         memcpy(buf, mac, 6);, x/ B1 a& [6 r: A4 Q8 n5 e6 y
  54.         memcpy(&buf[6], stbid, 18);
    5 T2 B6 R8 p# L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' i& C3 G& Y0 ?. z: p& V$ c& Q
  56.         if (fd  < 0) {
      v1 G/ L" A! v2 a# L4 ?: U) U2 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) W* l$ |7 M9 n: I, h# w/ I7 N
  58.                 return -1;
    : G8 R# K! P  H  p" {
  59.         }
    9 H% S: {) X4 Z$ e; J8 D
  60.         arg.sub_addr_count      = 2;
    . q9 k$ w. `( g6 O& _8 I" Z
  61.         arg.data_count          = 0x18;
    & Z; i) L( G& ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . e' l6 F; L  C' E0 ^- E6 V" G
  63.         arg.e2prom_cmd_data     = buf;4 {, U! Q; n4 P4 l' [( J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - H; I9 S# P- h7 I6 S. t  K
  65.         if (ret != 0) {
    - E; Z3 w3 q* B! O- _" H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# Q' J6 @2 R) b# [; A) v% k
  67.                 return -1;! [9 ^, r% J7 N- D5 j( y+ c
  68.         }
    - S% _4 b! |/ |, F( _) B6 Q0 O3 l+ Z
  69. ; z9 ^7 b7 `1 `0 s8 }2 X" F
  70.         return 0;
    : ?2 J9 y5 Z% X( {0 @4 J( @; y! }
  71. }( Q# W4 {, D$ `) z7 T$ B% W* ^8 J
  72. & Z2 ?7 D* D/ v' |, v; O2 Y1 Y# T, a# C
  73. int main()
    4 }8 j$ R3 E( D! [3 A3 C5 m2 J
  74. {; J; O  V7 W2 t+ Y1 g& _2 v
  75.         char c;
    7 u7 z* l+ r9 n) ^$ B+ i3 @
  76.         int i, macs[6];
    ) Y. ^! K5 h3 h2 L" p  C
  77.         unsigned char mac[6];
    " T$ h1 \0 Q5 a8 V4 J+ y
  78.         unsigned char stbid[256];) i6 m# u$ R, Q1 g
  79. : ^& I3 F) L& r% y9 T1 B6 b" ^
  80.         if (readparam(mac, stbid) < 0)5 x& I! o7 F2 E( V
  81.                 return 1;0 V) G) u! B0 i$ m- \6 J

  82. ) `7 V- K. C9 J- @2 e* z2 x0 r
  83.         printf("Current parameters: \n");! }1 @) d: @2 y$ S* T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 }( d+ J3 R4 D& j2 |
  85.         printf("  STBID: %s\n", stbid);
    * I- G3 I* W: A2 t
  86.         $ t6 v8 z/ k/ w. h+ ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( ~8 f: w, |! |& `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( j; b* }5 f$ `; b5 Z6 e3 ?
  89.                 printf("Input MAC error\n");
    . R' {5 w  a5 ~; x. b
  90.                 return 1;
    ) e- W0 t6 t2 L, ^/ S
  91.         }9 Z  r) j9 ^& _2 h$ g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      }5 l$ ^9 B+ b3 @+ M( X
  93.         printf("\nPlease input new STBID: ");  j$ q$ j+ y3 Y: ?/ b4 @$ ]5 G8 d
  94.         scanf("%s", stbid);
    3 c; E+ h" L8 Y1 Y; A! }) u
  95.         if (strlen(stbid) != 18) {9 R6 |/ r# q: ^2 s1 F( k" x# P
  96.                 printf("Invalid stbid\n");3 a! g( q  m" ?. J- B
  97.                 return 1;
    9 ?- I9 i% [2 ]& _
  98.         }
    . X4 [3 G1 P2 E. s& \* e! a' M
  99.         printf("\nNew parameters: \n");
    ' ]" Q  @+ Z) Q/ s& P2 q3 h; p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- e9 K1 r9 H# t3 K; Z
  101.         printf("  STBID: %s\n", stbid);
    7 @# l' \/ W$ P8 |! q

  102. 9 J; y8 c* ?9 A2 W* \7 w: S
  103.         printf("\nDo you want to change paramemters? (y/N) ");' a3 E, m4 L( g6 Y1 w% [
  104.         for (;;) {/ a  F5 @/ K) T- }' u
  105.                 c = getchar();7 z% P$ X; G+ C! W9 F' R0 Z
  106.                 if (c == 'y' || c == 'Y')% {5 [8 _7 U3 m( I$ q
  107.                         break;
    ' w) V0 ^) @2 a: K5 j# I* Z+ U" S- k6 Q
  108.                 if (c == 'n' || c == 'N') {
    / C5 g5 h: a; j; H
  109.                         printf("\nAborted.\n");4 M- E( P, t$ A5 S* h) h
  110.                         return 1;
    8 {6 w0 S, P( J5 F
  111.                 }3 l( h* x' ^  g
  112.         }! F8 \, ?6 ~' o4 O' d0 q2 |* w
  113.         if (writeparam(mac, stbid) == 0) ! S/ \1 Y% I9 L2 r, H( e. _
  114.                 printf("Parameters changed.\n");
    : H' K- a) b5 @& L
  115. 9 @" s) l  r7 y
  116.         return 0;% b! Y5 n7 T. _4 Q) y3 H
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24 ! W. c1 y$ a% w  k" V0 T& C. I$ H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; j- a6 d6 ^8 E! D+ _你用的编译命令行格式是什么?
( \% t. X+ A( ]' N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部