查看: 16849|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 S, k( X: i; ^3 J- ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 N- f& I5 ~# y# E  c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" h( R/ n( x( I8 Cusage: himr <address> <value>. sample: himr 0x80040000 0x0
; _( C% D, U' q# d2 Z- V: J) k2 E7 I, `7 ]3 b$ n/ i

4 v# y) U1 K9 ?2 a3 t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 |4 T' s4 B: ?- [) r
5 m" E0 q$ P- C7 ~- s; q5 {* C
补充内容 (2012-3-8 09:42):
0 c3 w- R7 I+ ^: l- a9 d# Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- i7 w$ Y8 A, E8 e4 o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* ]0 \: x  Y4 m, X4 t& L

1 M! [/ M: y1 c9 q7 Fhimr <address> <value>. sample: himr 0x80040000 0x0! t- K+ l: b$ E, U6 `0 A! P9 z+ u
+ s: K/ Z" p% R7 O- ?  {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  A+ }. S0 w- X. U5 g) Dhimr 0x80040000 0x00
' ^9 D5 {% b& }7 F6 j  T. K+ Ohimr 0x80040001 0x11
7 u4 t* V+ o# x' R- g/ Rhimr 0x80040002 0x22
/ D, @# q+ {! U9 l* o. M" G4 Ohimr 0x80040003 0x33
: ]5 x4 n0 u$ s( ]+ ahimr 0x80040004 0x445 W: G$ J9 [$ Z3 p
himr 0x80040005 0x55
5 o2 J, G$ _, V: P" o! x0 F7 V1 M5 ?! U9 o/ d
SN也是类似。
+ @' l: W6 }# m3 w) H
. g% l1 U4 z2 X现在主要是,谁告诉我们MAC和SN的地址?, j3 z8 W' i( U9 u5 M8 s2 K/ Q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 `% G6 ~! |2 i9 K, J5 I
一直想找到运程修改MAC和SN的办法,苦于无解啊

  j. B" U! N$ a: ^源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  p2 L; h4 b  ~% H4 C3 X1 q0 u2 h# [; K* a& w
修改的代码早有了。到今天不会编译。/ G+ b/ e. `, z: ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; x5 M0 v8 S+ u7 g( `) T$ ^8 X  C5 F# i
  2. #include <malloc.h>3 W2 Z$ E9 z% S6 R' j6 i! P
  3. #include <sys/types.h>
    5 s" @( {% f: b/ V% S; O1 `! L
  4. #include <sys/stat.h>
    9 j. L3 _) k' c, p" ?. K9 z: S
  5. #include <sys/ioctl.h>% X1 [) C3 e: h+ O
  6. #include <stdio.h>
    6 P! m% n2 l  j: J
  7. #include <string.h>
    # T* C' Q& e: `. g" d8 o
  8. 2 T: `. {* D+ E( B) T3 Q
  9. typedef struct {
    ! I6 B  P; v( N8 C( j- z6 h* v
  10.         unsigned int        e2prom_cmd_sub_addr;1 _: ~+ Q8 ]- Y2 e2 C
  11.         unsigned int        sub_addr_count;5 v8 x! h8 P) f: f# e
  12.         unsigned char*        e2prom_cmd_data;
    3 ]8 e- m) @: X6 [# J1 w- n4 K
  13.         unsigned int        data_count;8 o& u3 u# [  r4 ]3 S9 W! \
  14. } e2prom_s_cmd;
    : T! z% b9 N8 ?
  15. ; D0 b: U% Q$ _
  16. #define E2PROM_CMD_READ 1
    * V* B- Q! M! X( W
  17. #define E2PROM_CMD_WRITE 2& i2 K) u8 D* n  {- O. I& {3 x+ Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 N4 Q. L6 I0 t, p2 G. ~  Z
  19. ; O5 \% s% G$ H1 V6 z0 Z( r8 {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 x( X8 w3 n4 v3 s* I: Z9 F
  21. {
    6 J4 n: Q: p& |( X
  22.         int fd, ret;
    " J, `* \  F3 c1 x
  23.         e2prom_s_cmd arg;. _- v: g) P- f, E
  24.         unsigned char buf[0x18];6 q% `7 S6 K# E: K) I1 Z5 c6 K1 {
  25.   ]9 |& [1 J( P1 K7 h# o; q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 C. ?; z" S) H' P" b$ e( U" c
  27.         if (fd  < 0) {
    ! p6 o& t* C. b0 S9 B, }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! @: O4 J( d; b8 L5 R
  29.                 return -1;
    % H: R, T8 d( o' d# Q& r
  30.         }  c  q9 N; k' X) O# H$ U
  31.         arg.sub_addr_count      = 2;
    - R0 O: ?) V9 R) n
  32.         arg.data_count          = 0x18;8 [0 W5 j3 e/ N) H
  33.         arg.e2prom_cmd_sub_addr = 0x290;! ]* c# q" o1 b' V9 F6 u& e
  34.         arg.e2prom_cmd_data     = buf;( i9 P. [( W  i2 t7 U% b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 i2 F0 ^, [8 U) I4 \: [
  36.         if (ret != 0) {
      I+ t5 [  j& P. |& y2 q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) J. v1 u% B, `) u" C, k  I, s2 s6 U6 h* y
  38.                 return -1;
    4 g5 Q& Z1 ^) l) m' j6 k
  39.         }: l! Q8 K9 a/ x) h( ~. @
  40.         memcpy(mac, buf, 6);
    ; @0 G) m' p% t+ r) u6 r
  41.         memcpy(stbid, &buf[6], 18);
    2 ^1 x( f& k* F
  42.         stbid[18] = '\0';
    9 ~0 w$ x; H) k8 A1 D

  43. $ v5 J: e, E5 [. J1 A! @
  44.         return 0;
    0 Q8 V+ j4 f; B* f! ~
  45. }- ]6 p7 S$ e/ ]& M1 @& b" S

  46. 8 [: ^- b) n% C+ k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( Y- w2 h$ d6 `: y) {4 ^/ J' E
  48. {
    4 e! ?' s8 i* q/ O7 x
  49.         int fd, ret;- g: k. S% \" H& @
  50.         e2prom_s_cmd arg;' J  @! ~9 V1 Y: c
  51.         unsigned char buf[0x18];
    5 P6 y0 m$ j2 d, i- E; x

  52. $ m3 h$ ]' e) B# k$ {
  53.         memcpy(buf, mac, 6);5 q- ~* o5 n/ r# m# O
  54.         memcpy(&buf[6], stbid, 18);- n4 L1 o1 A" z* V4 a% ]1 n; R4 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; `3 b% b* H$ c) [  y# j( s, I* x, o- @
  56.         if (fd  < 0) {
    0 `$ {- V2 j- d: e5 j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & u+ ?4 q$ ?- l5 c
  58.                 return -1;
    1 V9 |+ ]0 S2 @
  59.         }
    % p' v/ X( p( _# S9 S" c! E0 c
  60.         arg.sub_addr_count      = 2;
    & `1 {* d2 C+ C6 b
  61.         arg.data_count          = 0x18;
    : n8 {6 {) `2 q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " Y8 ]$ \4 P+ n; [
  63.         arg.e2prom_cmd_data     = buf;+ A5 s6 H- {7 N( g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 E& F. M! y0 C$ |8 c: v
  65.         if (ret != 0) {
    2 }* p3 l8 d; j! C/ J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , I- c* G8 r1 r6 |
  67.                 return -1;6 `) {% o6 i! C; I; ?$ Z% h. l
  68.         }7 n, k8 C( P) z$ F! V: h

  69. # O" Q, m* {5 z8 O/ A% B
  70.         return 0;& U( F: d# S- q. V% ?' }
  71. }0 t5 E* F" g5 ^" |* q
  72. - v1 C' t" c2 L5 z: D) M/ O
  73. int main()8 n) _/ n# D! y% p" t/ |
  74. {
    : ^; h7 _4 ^+ |
  75.         char c;
    6 A3 \- |* k, Y% c, D6 w
  76.         int i, macs[6];0 ^2 J# e; U/ O! Z# I" M1 }9 p5 P, Q
  77.         unsigned char mac[6];$ {' E! ]! e/ R( P0 ^: ^
  78.         unsigned char stbid[256];
    * e" c( Z. I5 V& J3 _' ^3 K

  79. : u8 s. o& @# I
  80.         if (readparam(mac, stbid) < 0)3 s& }5 x6 ]$ {) `
  81.                 return 1;5 I8 X6 @+ a! \" |

  82. 0 l, e. [1 V7 i) u
  83.         printf("Current parameters: \n");0 L: D/ e7 K0 A# t; ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 ^) Z2 t" F) W7 Z* @: M' K
  85.         printf("  STBID: %s\n", stbid);7 _, A) r9 d) F. q; O4 z
  86.         . A" `1 m% D2 i7 s8 |: T  g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ I. o3 M+ g+ C0 l" N0 q, k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 h5 I8 u9 M  b6 g5 k# K1 A  W
  89.                 printf("Input MAC error\n");
    3 A( ?  X: P9 `0 u3 A- v; P
  90.                 return 1;
    8 i6 D, G. o' Z# v! i
  91.         }
    0 ]: x- _( }8 p+ L. q* o' P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * I* k$ M6 i6 [7 s! |4 f' q
  93.         printf("\nPlease input new STBID: ");* v7 v( Q5 t$ y" N0 v9 c( _
  94.         scanf("%s", stbid);
    4 g8 H4 O# \" }$ J
  95.         if (strlen(stbid) != 18) {' H. I- H3 }. @8 z1 M9 B
  96.                 printf("Invalid stbid\n");1 B) x7 P- i9 }) D
  97.                 return 1;
    $ {; F' l, F' d6 B5 s% R1 s$ e
  98.         }
    2 Q. Z7 a0 u3 W1 {
  99.         printf("\nNew parameters: \n");
    $ M8 W. p9 b0 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 G% R) y! F% @* s# ?" J* H0 H
  101.         printf("  STBID: %s\n", stbid);- B0 _* i. S! }% S. e6 O6 U
  102. , x' f3 t' t* X# }# y
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 t: r4 a# n* n% [1 n3 o
  104.         for (;;) {4 |; Y2 o- \" _  D
  105.                 c = getchar();
    3 ~# D+ V% P: `8 B& B
  106.                 if (c == 'y' || c == 'Y')+ j) A( Q8 ~6 m3 s* h6 |( a
  107.                         break;$ g* C. l  Z2 _* K! K+ \
  108.                 if (c == 'n' || c == 'N') {; l$ g# e! M+ W6 a  O( a- M
  109.                         printf("\nAborted.\n");
    $ L5 F& v9 N+ C% z
  110.                         return 1;( I8 w- W5 L' K
  111.                 }
    , c: J: p$ F" s5 i1 z
  112.         }  u7 U+ V2 b4 f# n% b( ?
  113.         if (writeparam(mac, stbid) == 0)
    ' _6 g( E, \, f/ X: x- b; Y
  114.                 printf("Parameters changed.\n");* g/ _, h; T3 F; D0 M8 w

  115. 9 W# P# x/ P4 a, B, h
  116.         return 0;3 G0 j; [7 x! S
  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 + p* `! k- T8 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; V7 x) g. H; G# J7 t& P% d
你用的编译命令行格式是什么?: e. G: c2 O/ R1 _! A
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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