查看: 17067|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ q- R2 C9 C9 w+ v! S  N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      {4 I6 }; w* D* j6 ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 J5 t6 [$ H+ L8 V/ o, c3 w
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 h6 ]9 o; h! a0 {) p/ Y6 e( M. i# {) H7 h8 z/ _2 a

2 |' T. F9 E# d4 j- F9 _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 q5 R" {, M4 S# Y
4 ^+ J: N" R: V9 Y$ [补充内容 (2012-3-8 09:42):$ o: L1 h4 k0 P4 m/ z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 a  v7 P! \1 V: X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 b* e) b* ~7 {2 d; k1 c. L
4 G" x. H8 p# shimr <address> <value>. sample: himr 0x80040000 0x09 s, _$ z, n% z

/ T) u; E9 T( a1 T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' P" G. H. U4 ~& ~7 R
himr 0x80040000 0x00
: y$ F9 Q, ]$ q$ ~0 @himr 0x80040001 0x11
- A% e7 A4 `) Q& \  Dhimr 0x80040002 0x22% `) f# j# t3 C' o+ K' P
himr 0x80040003 0x33
. l2 w5 b8 b" I3 dhimr 0x80040004 0x44" Y/ {5 }+ S8 h
himr 0x80040005 0x55
- ?, j4 p, N" }7 j' l% u; q( n8 d
SN也是类似。/ p! N: n- `) x9 A1 G" g+ `8 [

6 p6 E4 `5 ]/ Z, K5 z现在主要是,谁告诉我们MAC和SN的地址?
/ d! z1 G, ^& n2 m; y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 \( {' ^% K1 g1 w" A7 |
一直想找到运程修改MAC和SN的办法,苦于无解啊

  y/ A( \( e/ T/ y% z( r6 q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 D; ]! ?$ n) z# ^. o$ R* y2 d1 G+ n. u' s+ E4 ?: |7 Q1 f' N
修改的代码早有了。到今天不会编译。
5 J$ Y5 I* X$ l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) Q# j0 k! B2 }: B7 L
  2. #include <malloc.h>
    $ @& ]- Q* `# ?. f/ E2 C8 P
  3. #include <sys/types.h>: U3 ^* a& x' J# a. X7 B& y
  4. #include <sys/stat.h>( o' ^* @# {4 c$ ^* n3 m
  5. #include <sys/ioctl.h>: `) \( I- R  @' }0 V' X; u
  6. #include <stdio.h>
    4 r0 k' C) t4 z  j: i4 P- j9 z
  7. #include <string.h>( f+ z- R1 M$ Q; E* k

  8. % R; k' J: @+ e+ C
  9. typedef struct {
    " K+ `% b$ C: v7 k2 K
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 c! a# k& C+ a3 _6 v& A' V6 [
  11.         unsigned int        sub_addr_count;
    . K* w6 u/ [& K( M5 k" s2 H; k3 r# g6 C
  12.         unsigned char*        e2prom_cmd_data;
    % Y$ K$ x4 |9 Q
  13.         unsigned int        data_count;
    & w9 [! ^3 D. g& \9 j2 ^' Z0 i& |
  14. } e2prom_s_cmd;: b; B! b- [! D
  15. 1 t6 j0 R! O) k8 Z" t2 B
  16. #define E2PROM_CMD_READ 1
    ; W6 Y+ T. Z# A" g/ K9 {
  17. #define E2PROM_CMD_WRITE 2
    / m* @% `4 D9 z. l; N8 l) l. ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 M  Q* h$ T( g  Q4 {4 |- ^1 k1 F% ~
  19. ! u- s# P+ U& L0 C6 W" V# C4 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 V  v6 V: @: y4 }; X! M# f
  21. {3 @5 i) M' ^3 X1 i% [' W0 y2 U
  22.         int fd, ret;* c* P/ B# c  J- }7 B3 }
  23.         e2prom_s_cmd arg;  {( u8 @  w  E3 ^1 q* W
  24.         unsigned char buf[0x18];# P9 X5 B: i. E5 m0 L

  25. / q9 P' t! y; y- q/ {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* }. n) _9 o4 J8 F3 Q
  27.         if (fd  < 0) {
    3 \: H8 W: N4 X- |7 a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 x8 m6 f1 @4 U# R! L3 K- v& k
  29.                 return -1;
    + ~7 x2 U, @2 d" {' m4 q
  30.         }4 Z3 ^/ r3 _2 `
  31.         arg.sub_addr_count      = 2;
    : E* p' @7 y. G9 W2 H
  32.         arg.data_count          = 0x18;
    ' H0 n# x  L( O% W2 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 L7 H5 ^9 Y5 w- ^7 e2 @3 ^( v. n1 ]* k
  34.         arg.e2prom_cmd_data     = buf;  f8 f; ~0 p; c; a6 y6 z* G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& ~! \1 [. M' S9 p0 p5 r
  36.         if (ret != 0) {8 f0 \+ F5 j9 \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * h" \  k* E- m6 Y( N' ]
  38.                 return -1;1 g1 t. R- v/ J9 q# N" L/ {8 K
  39.         }
    . C& P9 l! `/ N& ]) V
  40.         memcpy(mac, buf, 6);
    ' k7 K( g! ]% ~2 M. @
  41.         memcpy(stbid, &buf[6], 18);5 j. t+ ^1 b8 o9 @# B9 W5 |
  42.         stbid[18] = '\0';
    ( p3 j2 i# ], H% O: Y
  43. ) \* d  K! d& y/ |% e0 A5 R
  44.         return 0;, [8 L% S2 l3 A4 d5 ?
  45. }
    ( n( _% E0 X* ^3 Z/ l- D) S- G
  46. . L) i; q; V: S2 |/ ?  R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 m$ o) F2 ?" }. D9 a
  48. {! K: H) d8 Q. M
  49.         int fd, ret;/ U" g! {+ x) R3 [) x4 N
  50.         e2prom_s_cmd arg;
    9 N0 E0 R  V/ @% M" k% z# R; b
  51.         unsigned char buf[0x18];6 _4 M, B; K/ B* p/ o2 `5 |

  52. 5 t/ E0 ?, J# O% x" O
  53.         memcpy(buf, mac, 6);1 `* K% z! H5 \
  54.         memcpy(&buf[6], stbid, 18);* I' p" z& S/ I, x% z4 K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - d5 H. ]& k7 Y5 ^8 F6 u$ t" r4 k
  56.         if (fd  < 0) {
    # U. j. Q. T2 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # h# B. k( \$ y1 K% q. e4 h% M9 _; @
  58.                 return -1;
    4 g! \# H* ?- y# O9 @+ z4 R) A
  59.         }/ b: q3 c% G9 K* G  [  ~3 t
  60.         arg.sub_addr_count      = 2;
    1 z7 N  q: T0 S
  61.         arg.data_count          = 0x18;
    ( ~- E6 ?% r( c$ Z; }2 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;" J7 \+ d' v9 [" q5 E
  63.         arg.e2prom_cmd_data     = buf;3 ~" r1 g/ _+ n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ _& D+ n$ H+ z1 Y7 u) p9 w- \' L
  65.         if (ret != 0) {
    & c( e3 N& I- S( u7 R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" n- {' l$ Z" e/ Y1 s
  67.                 return -1;
    2 `8 z4 I7 u& o. U: P6 B# w+ g' ^
  68.         }
    + A7 l9 @, ^% U: \

  69. % Q+ q" J9 F) b: k
  70.         return 0;* b! B* t6 a" K; [
  71. }, |; @: X/ e4 E( C) [

  72. : n) p8 |8 T, F0 f5 z2 Z' h
  73. int main()
    ' O, L3 k9 T' S" u0 w* x' j0 N3 r# }
  74. {
    8 t1 I: k$ L. }' Y8 y
  75.         char c;% [! m+ n7 B: q8 }
  76.         int i, macs[6];; v9 \, q( j) ^  T1 `
  77.         unsigned char mac[6];/ c3 o" a( h. N, K5 B: K5 y
  78.         unsigned char stbid[256];* p* Y- i. R9 F! O

  79. 4 G# E: s7 ]% T  o
  80.         if (readparam(mac, stbid) < 0)# [* |9 ~9 r, a. O( L2 G
  81.                 return 1;
    ( P6 H8 ], ~: D% I4 W; Q% Z

  82. 9 ]7 j, b- R/ b2 p# ?5 ^4 R0 s* J( C6 T
  83.         printf("Current parameters: \n");* H4 u( C: R& s4 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( _* a$ U5 |; D
  85.         printf("  STBID: %s\n", stbid);& L" a- q' \" q0 H' O% Q- k1 \
  86.        
    - W4 P$ u/ D& @  K; w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / p0 X3 i# X6 _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . ~3 A5 ?, u$ A
  89.                 printf("Input MAC error\n");# `7 U/ I: e5 D) A  H
  90.                 return 1;
      L+ U5 r7 c$ |( A
  91.         }
    ' h# y' H3 k# {  z) I  {# D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 ^# T- b8 Z4 ~" ~2 n3 N
  93.         printf("\nPlease input new STBID: ");- b3 p! G: R* C6 |! [& }
  94.         scanf("%s", stbid);( c8 Y. G% y1 O- b
  95.         if (strlen(stbid) != 18) {; q; Y( S2 v; p' \: T
  96.                 printf("Invalid stbid\n");
    ( g: ^: H' ?* a2 N
  97.                 return 1;
    4 Z( k8 C4 a4 q* O) y3 K7 b+ b
  98.         }: M; z$ W2 ~% y1 D& V2 Z
  99.         printf("\nNew parameters: \n");
    ) M) J3 ?& e# d! r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , Q, ^; t+ l4 D* O& V; o/ }
  101.         printf("  STBID: %s\n", stbid);
    ) ^8 f9 d$ b8 n

  102. % P2 O5 m5 q% m' z
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 m+ K+ y1 G( B: y; }+ F
  104.         for (;;) {5 O9 t' b! X7 v) S/ F
  105.                 c = getchar();  y$ ~3 Z- G% ]6 @
  106.                 if (c == 'y' || c == 'Y')
    ! `2 u1 _2 p, ~/ x( z6 y* B
  107.                         break;
    ! C& j, ~/ d' N# s. m
  108.                 if (c == 'n' || c == 'N') {
    & Y+ \0 H8 L1 B% M7 Q
  109.                         printf("\nAborted.\n");
    , z7 H) X% a1 @" E6 L% _
  110.                         return 1;
    7 {# g3 k7 u# e1 m! S( P5 K: s( a
  111.                 }
    ! v: y, c- T& E6 c
  112.         }  Z) t# i9 x' Q3 N: L
  113.         if (writeparam(mac, stbid) == 0) # e# r8 W9 N5 M, h5 _. g
  114.                 printf("Parameters changed.\n");
    - k/ O" f; W" u# Q+ I8 Y% D8 T1 Y
  115. : W" b0 i& D, z# k( ]
  116.         return 0;
    / }8 y% K, v6 j% O& 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 , I" s6 Z- M- A% H! w# f/ }
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# r; k; L+ A* u( F8 S6 l( J' i
你用的编译命令行格式是什么?' H- M) _4 N& [% g4 e8 F7 C/ x
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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