查看: 17218|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 ~1 f  M5 ^% t- O; b: Q7 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 H2 ^, {8 g' x5 f) e/ ]! E" S+ ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# I" U" z3 \1 r( j7 p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: S* B4 [! `2 m. \0 [7 n7 n/ R2 i4 F
0 `- k6 M; o' o+ z5 O4 a4 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, f$ p0 L' U0 f* F) I
+ q% L# _; P4 o8 E补充内容 (2012-3-8 09:42):- c$ W" Y; s" b
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- P  O, L! a4 W3 v# |* ~4 _这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) I/ y0 I) E: o2 P: y, e4 ?% O
9 l- ]4 J/ U: c3 x" `& Q
himr <address> <value>. sample: himr 0x80040000 0x0
6 W! c0 J. h# i' ^) P
# \3 w- r3 e* y! T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! u6 H# G4 V! z3 m, z% |- S
himr 0x80040000 0x00
0 ]) k( O" q2 S+ zhimr 0x80040001 0x11
& g+ o9 ^" l, v$ c# [0 bhimr 0x80040002 0x228 e& N  ~) g) |
himr 0x80040003 0x33
: L' l) L1 f! ^4 w' yhimr 0x80040004 0x44
& _- {6 w2 Q9 }himr 0x80040005 0x55
' W) \  p' p$ X1 l2 i/ c$ y4 [- A( |0 W# d( d" y" u
SN也是类似。
6 C+ L+ [! W0 f+ g
  |. f9 w5 B; B( T  {1 V* {/ R现在主要是,谁告诉我们MAC和SN的地址?
* W/ z& `4 O& t! i2 A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / f9 t5 l# }7 l! V# z* H; R+ n
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 z4 @% s1 [+ \: B. {7 b
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; J: y$ H7 a/ r; D5 ]3 u' w. U0 y7 N$ A+ m, I% n
修改的代码早有了。到今天不会编译。, g( k4 C1 O: x4 u; ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 ^) |# _/ z* `7 [) T' h% L
  2. #include <malloc.h>
    & s! {" [2 I. Q
  3. #include <sys/types.h>
    1 s- L: \7 v. b( j8 j# [' o5 s
  4. #include <sys/stat.h>
    / q$ r% W6 ]3 f2 E
  5. #include <sys/ioctl.h>( G, h3 P8 T7 L
  6. #include <stdio.h>
    9 u+ O9 v8 S$ I' b+ i
  7. #include <string.h>
    7 a5 K2 {5 M( o+ K0 F3 n

  8. . g5 E( \# L1 z% `$ ^& A# |0 ]. }
  9. typedef struct {
      Z8 m# j6 Z9 j1 h  I' m
  10.         unsigned int        e2prom_cmd_sub_addr;# J: p* H* A' R9 E4 A
  11.         unsigned int        sub_addr_count;
    # T4 G2 E* Y. @1 ^+ @& e; ?
  12.         unsigned char*        e2prom_cmd_data;
    ; d6 R5 K8 \, f# D) Q; x# Q* e
  13.         unsigned int        data_count;) J% \; [" c, Z  z% U1 O
  14. } e2prom_s_cmd;# K; J+ h  X  o
  15. 0 A+ W# }$ h, a" J: M
  16. #define E2PROM_CMD_READ 16 t* W5 g9 l9 }5 e- C" K
  17. #define E2PROM_CMD_WRITE 2
    9 D  u( I* i& _+ K% y7 U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ n8 [2 B! H4 }( j* W2 D
  19. $ F3 P" Z1 S% d) w  r& |) M$ r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 c/ k* l, O  W( d* j3 \
  21. {, N/ R) W* O  ]
  22.         int fd, ret;) i0 d9 h( e) ~8 @  W
  23.         e2prom_s_cmd arg;
    # R) \- P: D% C$ x2 w! o
  24.         unsigned char buf[0x18];& u9 I# t6 }4 z, I+ V0 ^# s

  25. ) ^8 f* L* V  j& N, C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " S, j2 B' u/ f' l/ t
  27.         if (fd  < 0) {' u5 I3 v- r) D$ U/ M% Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: l2 f5 u$ V5 @# ~+ S. D' M
  29.                 return -1;
    0 e* M* B# J2 \5 k2 x
  30.         }
    % P6 U# v5 f& R% ~/ f
  31.         arg.sub_addr_count      = 2;: L# A1 L6 M& @- R7 l0 l7 d
  32.         arg.data_count          = 0x18;  H0 e3 r* r2 d; S, D- H
  33.         arg.e2prom_cmd_sub_addr = 0x290;( R5 P2 G" R  A4 G0 o7 x2 w% M
  34.         arg.e2prom_cmd_data     = buf;
    # ^5 C( j: \! H0 y3 L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! e1 }, }* F* F8 T- d
  36.         if (ret != 0) {
    : ?8 F# Q, o$ n1 \1 W# T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / j  ~) E$ k! D; |
  38.                 return -1;
    , o8 f' ~; h1 b: q' f" {" N
  39.         }4 O% u! m  J, w; w7 A- e
  40.         memcpy(mac, buf, 6);
    / `- B8 j( ?& Z' e0 R
  41.         memcpy(stbid, &buf[6], 18);
    * y$ `  X$ p- L5 R
  42.         stbid[18] = '\0';
    $ _1 Q( A3 R  t) R: Z

  43. 3 z/ x, U8 _3 f9 a4 G0 {- R: b
  44.         return 0;
    ) c; H* ]* z# F0 s9 l7 R$ q- G* T8 S
  45. }9 P# q, d9 u# R

  46. 1 L/ r' r- K( @+ }, N, C9 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % \/ W: d; X" `1 E! \. q# j, M
  48. {
    " L) b+ Q" b$ H1 t5 J0 C* ~* h
  49.         int fd, ret;
    3 W! F3 R% ^2 E; G/ x' u
  50.         e2prom_s_cmd arg;
    % k1 U$ l. _) D
  51.         unsigned char buf[0x18];
    & q! `' _! u4 [( y: d7 r
  52. 2 O: b3 _; m) V" e! O7 J
  53.         memcpy(buf, mac, 6);( C6 C: `8 T- j- t2 x. x
  54.         memcpy(&buf[6], stbid, 18);& d; Z" H3 |; Z! }; P6 L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ G, I& |$ E+ N9 V
  56.         if (fd  < 0) {
    * C* U2 K& P1 r4 h% S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 S5 y. d: M8 ]' L: j9 V4 |. M
  58.                 return -1;: m2 q& w7 r4 p
  59.         }  i3 P2 E/ E: t+ h6 i
  60.         arg.sub_addr_count      = 2;
    2 i1 `+ y. G) Q6 i
  61.         arg.data_count          = 0x18;! S8 g2 Y6 ?* W6 n% h* u1 X7 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 E' d- j( n; O( \2 }
  63.         arg.e2prom_cmd_data     = buf;6 \7 J. }7 E) `" H  F8 ~" Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# u+ a% f1 w+ o
  65.         if (ret != 0) {
    / h! [. q" J7 D3 h& k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 b7 \3 `) d1 z! H3 |; f. o/ _) ]
  67.                 return -1;6 r3 n1 l& u) Q8 p) H# ?: K9 F7 k: t
  68.         }
      \6 {1 N  Q  b% v

  69. ; {" y/ E3 H5 S& Q: {1 p3 M3 D1 G
  70.         return 0;
    0 v( H3 O9 K- q! w" P. Q# C" w
  71. }% s! y) I4 |1 L$ c8 ~
  72. 1 V' E5 w# E0 N) S$ S* b+ G
  73. int main()
    1 R, f$ J5 P; E
  74. {
    3 Z8 R6 L( c4 n8 v6 P7 \
  75.         char c;
    2 m4 ?* Z% k2 |- r, y# N+ u& t
  76.         int i, macs[6];
    & C; ^6 T6 k& U/ F7 k+ `- W
  77.         unsigned char mac[6];( S1 S& y) _/ a$ Y* ^. v
  78.         unsigned char stbid[256];
    " N( @. g# f8 d0 i9 O/ c- b& g
  79. 0 i9 c) O* D. u4 s9 K& D8 l
  80.         if (readparam(mac, stbid) < 0)8 x( E/ y: z5 a, `" H( ?
  81.                 return 1;' \. o! K1 q* c! h9 Q3 g" Z

  82. : P4 `. i3 l+ m" }/ u8 Q- |
  83.         printf("Current parameters: \n");
    4 w6 @! N' b6 p0 t7 t: _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! X3 y% @* L' O" e( d9 P
  85.         printf("  STBID: %s\n", stbid);
    8 P) t. @' f! _  n+ |  F0 U9 m
  86.        
    1 ~3 u3 x$ k/ p6 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. E, i' B$ g" C; C) n6 w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 k% a; _5 x+ Y* ]+ ^. m* a! r( R
  89.                 printf("Input MAC error\n");% E+ _, {4 k/ d7 Z% H$ {
  90.                 return 1;
    ) P+ W. u. F  b! @  {$ V" j
  91.         }4 m9 m2 w! ]2 U  c, U: x. x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 z5 D1 V; s' ~
  93.         printf("\nPlease input new STBID: ");% b( Q) O$ c; b: f; f# T
  94.         scanf("%s", stbid);
    / G; w2 R+ x0 c, a3 }
  95.         if (strlen(stbid) != 18) {
    ' t$ ?: ^: z+ I  m, C# ^
  96.                 printf("Invalid stbid\n");  z( v% C/ `5 G% L+ s1 [. Y3 j
  97.                 return 1;, y. n) O/ q; U9 B, V1 q
  98.         }' W2 j7 n- A* T$ A% R
  99.         printf("\nNew parameters: \n");  M0 G- z; R1 ~) n/ L3 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 i% G. j* O& R& X9 K2 h
  101.         printf("  STBID: %s\n", stbid);
    7 K% {' z' E$ K# ?" Z# n

  102. # u3 F# l# Q7 z( g' G
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ v: }9 o- z# L' A9 B! q+ R( z
  104.         for (;;) {/ l2 N$ }9 F& w
  105.                 c = getchar();
    ; ^9 p: Z) z# {- ]* e' j2 v
  106.                 if (c == 'y' || c == 'Y')
    , I: N7 o0 H. ]/ e
  107.                         break;: o" ^# ?& @  c3 U( x( I% u9 t- L4 M
  108.                 if (c == 'n' || c == 'N') {
    + k; d! \! i5 S- i+ m% z- _
  109.                         printf("\nAborted.\n");
    9 x* V$ Z' g# ~, s; |
  110.                         return 1;
    0 C+ y1 X" Z+ H1 N
  111.                 }* b9 C5 E# j$ }
  112.         }
    # H) R# w1 x" }  L& t
  113.         if (writeparam(mac, stbid) == 0)
    9 K* Z# O9 h: _6 \3 D" }$ w) \
  114.                 printf("Parameters changed.\n");
    , j( J1 L) Q" W
  115. 3 N$ l/ D3 b3 H& v7 X& R
  116.         return 0;5 A: ?3 f5 ]; {# Q; J
  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
, v& B* M' h0 R2 e1 @+ A8 l, l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ S! T  ]  c1 {: _9 R
你用的编译命令行格式是什么?
# T! L( `1 C: E+ B# j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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