找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15098|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; e2 ^9 G2 m% s; n( O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ H; W6 r2 J, l; a5 R. t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' g/ q/ U9 U9 Y+ {& t# {# m2 Eusage: himr <address> <value>. sample: himr 0x80040000 0x0
% y% W' r& r# u) V7 g+ r3 v- t8 j6 H7 w

+ K% `4 r6 R/ w+ L不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& B: |: E6 d! N# j- y3 F/ O. k
0 L7 P) y4 L9 X3 `
补充内容 (2012-3-8 09:42):1 f5 t9 }  L4 H* `/ x! s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* Q3 n1 i' e2 U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ i  d& s4 s: _$ o( Y( T! v( v

5 G/ A: }' {! M1 a$ Rhimr <address> <value>. sample: himr 0x80040000 0x0
7 ]( J& N. o3 A" `
5 L/ M# x: _' ]5 j. n( ~$ n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, Q' L" ?; E. f/ ]- l3 i  qhimr 0x80040000 0x00
. h" T! u- A, ~1 y3 V0 Ghimr 0x80040001 0x117 ^7 S! i+ ^# K: a: @6 x
himr 0x80040002 0x22
& r2 l) V* E, Z  u: [: J+ bhimr 0x80040003 0x33
/ n) }; k% k4 Z0 k4 Khimr 0x80040004 0x44# c3 D! K- ]4 _' K( Y5 V
himr 0x80040005 0x55
6 |4 o$ ?, v2 R9 @) _& V# W9 e$ u% Z+ r! B- q1 i
SN也是类似。2 c9 H1 t9 e- N# C6 K
. Y, c. i) q7 S  L; X
现在主要是,谁告诉我们MAC和SN的地址?# a5 q5 z9 \; j- W$ ?& y0 p3 b4 E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! Z2 \. a2 y/ h+ E# w
一直想找到运程修改MAC和SN的办法,苦于无解啊
( {# ^! p1 z, F3 N8 J
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; @, o, N6 O3 r$ U, i; ^% A6 P: S

0 M8 s$ i# {* @2 W6 P. A- X修改的代码早有了。到今天不会编译。
  n4 Z) V/ B& E+ P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* b2 i& H' X# F  C2 N
  2. #include <malloc.h>& T" o% b$ D8 A
  3. #include <sys/types.h>
    " ^- g5 l7 _( |3 p4 n7 E
  4. #include <sys/stat.h>
    ( `& S; S. P, t' M3 \
  5. #include <sys/ioctl.h>0 }$ i1 H0 T2 c" f& G- \$ ^# K: G
  6. #include <stdio.h>- v0 J; [$ a& V. p7 Q+ l
  7. #include <string.h>
    , \1 x- T) \6 x# g: s/ p% v# }

  8. # n2 N8 F& d* T5 p5 i2 U
  9. typedef struct {/ X- x- N. v5 T; R7 c& X
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 x. f1 `, N3 c) U& z
  11.         unsigned int        sub_addr_count;
    $ P( ~. d7 O6 q6 L
  12.         unsigned char*        e2prom_cmd_data;; q/ Z) [' c! l5 ?
  13.         unsigned int        data_count;. |+ I) q( e) a/ K
  14. } e2prom_s_cmd;
    5 \/ b8 D5 t6 E/ \; L9 y3 ^: e
  15.   j' W8 S( ~1 j; i+ F3 O# g
  16. #define E2PROM_CMD_READ 1
    9 `" K2 `+ q' r* \; g' h6 W
  17. #define E2PROM_CMD_WRITE 2
    2 R8 d$ T2 G, [: N  L0 ~8 r- }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ ]6 M: M( M+ E# ]5 Y* c0 X

  19. 9 Q; V* j" N! P0 x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 ^$ i/ I; T: I4 w6 `4 f+ P
  21. {& f6 X6 q) q8 Q- L
  22.         int fd, ret;1 C6 t2 J  y* C" {( G4 ~: _
  23.         e2prom_s_cmd arg;
    ! s! g  `* @0 d. h( N- _
  24.         unsigned char buf[0x18];$ }; W7 r9 g4 O0 k+ G- E) U% K

  25. # ?1 ]7 ^" g$ g# v5 x& D1 s- B0 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! {/ n2 G5 Z1 W3 ~
  27.         if (fd  < 0) {+ m! \: D$ X3 A5 ^8 \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ W, W  ~) O& f2 ]1 Y/ _7 l
  29.                 return -1;
    6 t% f4 |  `, w; O6 }8 Z
  30.         }
    " s' K( D  o- k* \$ J
  31.         arg.sub_addr_count      = 2;
    2 Z6 O" M; S+ O8 T& _, r+ _6 v) M
  32.         arg.data_count          = 0x18;5 q  h% U% h5 L( l" x& B+ u
  33.         arg.e2prom_cmd_sub_addr = 0x290;- U5 [! ]2 V6 {" K( K
  34.         arg.e2prom_cmd_data     = buf;
    7 f3 F. m4 y% L3 c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 ~6 }3 A8 B( j. ?: N
  36.         if (ret != 0) {! X# i2 E% o/ |: w% p- k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 h( E* W" U: ^( N( m
  38.                 return -1;
      C- `3 k3 F( e4 M, w* j$ t
  39.         }
    / G7 Z6 K8 q) F* V6 |
  40.         memcpy(mac, buf, 6);
    . E0 ^6 R$ r1 p# n7 V
  41.         memcpy(stbid, &buf[6], 18);1 ]% j3 t7 B. a- S* f* i. b
  42.         stbid[18] = '\0';
    & K% S' U4 O4 w* l2 Q
  43. 0 {% R  Z" W, W4 X' m% g
  44.         return 0;
    5 s* u6 {7 C, x. z0 _" u+ B8 y
  45. }1 Z4 x3 ~7 ?, R8 b
  46. + `1 G4 p( v* D: ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 n3 p* o( n* y; x6 G
  48. {- W, B% x3 s+ `
  49.         int fd, ret;1 M" D2 \1 b6 [0 Y
  50.         e2prom_s_cmd arg;
    0 |2 E9 y  V& h& O2 m$ ?2 O
  51.         unsigned char buf[0x18];
    : r( r( y4 r- R

  52. 4 w1 g; Q' n% v
  53.         memcpy(buf, mac, 6);& N$ j3 F2 U  y2 v8 n! [
  54.         memcpy(&buf[6], stbid, 18);" [5 h* \4 K' T9 l9 U' f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + M  s) O0 i# m5 t6 A9 m% k5 k
  56.         if (fd  < 0) {7 G8 E* _' j. J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 N4 b8 n: T5 k7 ?& p
  58.                 return -1;
      j% P. ?) _( |
  59.         }
    , U" a) G; e9 p% s; X$ L  ~
  60.         arg.sub_addr_count      = 2;
    5 P: n% b& Y  J
  61.         arg.data_count          = 0x18;
    " y3 {8 Z7 S: T" ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) o. O$ `* r% ]$ A& O" o
  63.         arg.e2prom_cmd_data     = buf;$ W8 w% L: T  n1 W9 X0 j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ `- t; R, e. O# S3 |$ f
  65.         if (ret != 0) {) \! t5 w9 K! Z0 ?, o. S2 q, r$ [3 K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 z5 K; q& d3 t; _+ W
  67.                 return -1;6 p& T) B4 k: L* n; }) h+ F2 H
  68.         }' E) I/ U7 s- @1 L/ I
  69. % w; X% Y# T0 M3 {4 k- l, u
  70.         return 0;# Q4 q, v2 x) X4 A6 k9 M
  71. }
    - b- u$ P: b4 V* Z% d: S# |: y% j

  72. 4 O) Q' V) m" ]" E
  73. int main()
    ; a: \7 b. H, z
  74. {
    7 @) Q3 K. w+ m8 o% {. B$ v
  75.         char c;
    ! s. p8 h% }" l% l
  76.         int i, macs[6];
    " m7 e8 o8 m/ ?& @
  77.         unsigned char mac[6];
    - o% d7 T$ z2 H2 Z/ E% |
  78.         unsigned char stbid[256];' e3 e5 f7 S8 l+ n# [: ?$ B! w

  79. , d( R7 w8 [% K6 L1 _( S
  80.         if (readparam(mac, stbid) < 0)& J3 ^( Q; ]2 R
  81.                 return 1;+ P" a+ O0 P) j; g  n: B3 s
  82. ) Z8 d! G0 Y2 o# a
  83.         printf("Current parameters: \n");5 e0 v; @. F  T' Y4 J& Y5 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % p2 r  u2 G& L
  85.         printf("  STBID: %s\n", stbid);
    " b) @2 x0 l4 a* j
  86.        
    * S- q& Z) H2 H8 w' p$ X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 y" M& t6 D; Y, p2 Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* ^5 Q0 k# I7 h- g2 }& Y8 O& c
  89.                 printf("Input MAC error\n");% |  p4 ~: S4 h8 V3 D. M$ v. ]
  90.                 return 1;3 V7 Q1 r3 H1 [( `9 u
  91.         }6 Q1 @0 k( }5 F% H$ M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  d7 F& [0 u& g- C, w
  93.         printf("\nPlease input new STBID: ");
    , c: A  U0 U7 c7 z% S4 M
  94.         scanf("%s", stbid);( q) p/ b1 _6 b" s
  95.         if (strlen(stbid) != 18) {
    1 ?4 D( D6 P. d
  96.                 printf("Invalid stbid\n");
    2 g8 T! F* t5 _2 V! t& d' |9 C
  97.                 return 1;/ }, m+ T6 @% a. X: ]
  98.         }
    5 H. {. V7 C& R
  99.         printf("\nNew parameters: \n");
    6 G) v1 g: s! L; L. @4 H1 n, v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( o  j5 N5 J! M2 e. v- n
  101.         printf("  STBID: %s\n", stbid);1 R. o7 q7 m4 B% k$ A

  102. # b) s# D4 {( _8 U4 P! |' Z4 p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 D8 T9 G+ R; c' T# E: a; m. f3 [' f
  104.         for (;;) {8 }- _& n2 b, h
  105.                 c = getchar();5 a4 Q& l; F( \  I# t
  106.                 if (c == 'y' || c == 'Y')% H5 H5 j) t- [/ `% j
  107.                         break;+ O! y  U9 o7 m" @3 _0 p9 B. X/ O
  108.                 if (c == 'n' || c == 'N') {
    ' ]4 @* Z* @9 P- e6 h/ ~  X/ t) M
  109.                         printf("\nAborted.\n");
    9 R% W6 g' |1 r, N  C8 l2 u) [
  110.                         return 1;
    8 Y  ?0 j8 A& u* K7 U- {4 ?8 D
  111.                 }
    - V+ n; x* Z( g" @) R/ M+ S
  112.         }$ o4 I4 M4 r9 q  ]7 \
  113.         if (writeparam(mac, stbid) == 0)
    8 j% X& F: t5 @  y" S
  114.                 printf("Parameters changed.\n");) r% G, O, a" U) f' s# {
  115. ) q; D0 [4 n! w: Y
  116.         return 0;
    7 T8 g& \+ J8 o. {: y
  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 ) z+ L( n4 O% M/ _' g; O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# O+ {" s# J/ p2 W你用的编译命令行格式是什么?- |+ b6 p( P3 G4 ~& Q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-20 22:56 , Processed in 0.022822 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表